CPU Ayrıcalık Halkaları: Neden 1 ve 2 halkaları kullanılmıyor?


102

X86 CPU ayrıcalık halkaları ile ilgili birkaç soru:

  • Neden çoğu işletim sistemi tarafından 1. ve 2. halkalar kullanılmıyor? Sadece diğer mimarilerle kod uyumluluğunu korumak için mi yoksa daha iyi bir neden var mı?

  • Bu halkaları gerçekten kullanan herhangi bir işletim sistemi var mı? Yoksa tamamen kullanılmamışlar mı?


Yanıtlar:


111

Meraklı bir işletim sistemi yazarı olarak, sayfalamanın (modern koruma modelinin önemli bir parçası) yalnızca ayrıcalıklı (halka 0,1,2) ve ayrıcalıksız bir kavramına sahip olduğu için halkalar 1 ve 2'nin faydasının büyük ölçüde azaldığını buldum.

Intel'in 1 ve 2 numaralı halkalara sahip olmasının amacı, işletim sisteminin aygıt sürücülerini bu seviyeye koymasıdır, bu nedenle bunlar ayrıcalıklıdır, ancak çekirdek kodunun geri kalanından bir şekilde ayrılır.

Halkalar 1 ve 2 bir bakıma "çoğunlukla" ayrıcalıklıdır. Gözetmen sayfalarına erişebilirler, ancak ayrıcalıklı bir talimat kullanmaya çalışırlarsa, yine de 3. halka gibi GPF yaparlar. Dolayısıyla Intel'in planladığı gibi sürücüler için kötü bir yer değil ...

Bununla birlikte, bazı tasarımlarda kesinlikle kullanımları var dedi. Aslında, her zaman doğrudan işletim sistemi tarafından değil. Örneğin , bir Sanal Makine olan VirtualBox , konuk çekirdek kodunu 1. halkaya koyar. Bazı işletim sistemlerinin de onlardan yararlandığından eminim, şu anda bunun popüler bir tasarım olduğunu düşünmüyorum.


28
wHOA VirtualBox 1. halkayı kullanıyor mu ?! Bu saf bir harika !! Bilgi için çok teşekkürler, bu harika bir cevap! +1
user541686

10
OS / 2, G / Ç kodu için yoğun olarak Ring 2'yi kullandı. Bu yüzden sanallaştırmak çok zor.
kinokijuf

Gönderen superuser.com/questions/1402537/... : halka 1 halka 0 bol içeren en hangi konuk herhangi ayrıcalıklı talimatları, yürütmek için izin verilmez olarak "Running halka halka 1 0 kod, ek talimat birçok hata oluştu neden her bulunmaktadır. Bu hatalardan dolayı, VMM devreye girmeli ve istenen davranışı elde etmek için kodu taklit etmelidir. Bu işe yarasa da, bu hatalardan binlercesini taklit etmek çok pahalıdır ve sanallaştırılmış konuğun performansına ciddi şekilde zarar verir. "
Dustin Oprea

24

İşletim sistemi tasarımı açısından, birden fazla ayrıcalıklı halkaya sahip olmak, x86'nın bir tuhaflığıdır - diğer çoğu CPU'nun yalnızca iki modu vardır (yönetici ve kullanıcı). Bu nedenle, bir işletim sisteminin birden fazla ayrıcalıklı mod gerektirecek şekilde tasarlanması, başka herhangi bir CPU'ya taşınmasını anında önleyecektir. Ek olarak, birçok modern sanallaştırma paketi, 0 ve 3 dışındaki ayrıcalık düzeylerini doğru şekilde taklit etmez, bu da bu düzeyleri kullanan işletim sistemlerinin test edilmesini çok daha zor hale getirir.


7

Wikipedia'nın Halka Güvenliği sayfasına göre , 1 ve 2 numaralı halkalar sürücüler (1 numaralı halka), konuk işletim sistemleri (1 numaralı halka) ve i / o ayrıcalıklı kod (halka 2) için kullanılır, hipervizörler -1 / 0'da bulunur (bağlı olarak hiper vizör) daha önce belirttiğim gibi 1 değil.

Bununla birlikte, fazladan iki halka hiçbir zaman gerçekten yardımcı olmadı ve bu nedenle nadiren kullanıldı. TBH, halkalar 1 ve 2'yi kullanan çoğu kod, bunları orijinal kullanımlarından (örneğin hipervizörler) yarı amaca uygun hale getirmiştir. Bugünlerde çoğu Windows kodu, sistemi yalnızca iki seviyeye (çekirdek ve kullanıcı) sahipmiş gibi ele alıyor, muhtemelen çekirdek alanına girme ve çıkma ile ilgili ek yükten dolayı.


1
Sanırım bir yeri kaçırdın -. Hipervizörlerin 1. halkayı kullandığından emin misiniz?
user541686

Heh, düşünmüyordu,
-1'de

4
Windows yalnızca iki halka kullanır, çünkü yalnızca iki tane olan diğer işlemcilerde (artık geçersizdir) çalışmak üzere tasarlanmıştır.
David

Aklımda, mod değiştirmenin çok az ek yükü var. Anladığım kadarıyla, yalnızca donanım cpu'ya daha fazla ayrıcalıklı ayrıcalıklar atayabilir (IO bitmiş bir kesinti meydana gelmesi gibi). Bu ayrıcalık değiştirme donanımda gerçekleşirse, halkaları değiştirmenin önemsiz olmadığından şüpheliyim. Sanırım Windows, Linux veya MacOS, halkaların yalnızca en uçtaki ikisini kullanıyor çünkü mimarlar orta halkaları os-hosted sanallaştırma gibi şeyler için ayırıyor.
Nate Symer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.