CPU Privilege Rings: Mengapa dering 1 dan 2 tidak digunakan?

102

Beberapa pertanyaan tentang cincin hak istimewa CPU x86:

  • Mengapa ring 1 dan 2 tidak digunakan oleh sebagian besar sistem operasi? Apakah hanya untuk menjaga kompatibilitas kode dengan arsitektur lain, atau adakah alasan yang lebih baik?

  • Apakah ada sistem operasi yang benar-benar menggunakan cincin itu? Atau apakah mereka sama sekali tidak digunakan?

pengguna541686
sumber

Jawaban:

111

Sebagai penulis hobiis sistem operasi, saya menemukan bahwa karena paging (bagian utama dari model perlindungan modern) hanya memiliki konsep istimewa (ring 0,1,2) dan tidak memiliki hak, manfaat untuk cincin 1 dan 2 sangat berkurang.

Maksud Intel memiliki ring 1 dan 2 adalah agar OS menempatkan driver perangkat pada level itu, jadi mereka diistimewakan, tetapi agak terpisah dari kode kernel lainnya.

Cincin 1 dan 2 mungkin "sebagian besar" diistimewakan. Mereka dapat mengakses halaman supervisor, tetapi jika mereka mencoba menggunakan instruksi yang memiliki hak istimewa, mereka masih GPF seperti ring 3. Jadi ini bukan tempat yang buruk bagi pengemudi seperti yang direncanakan Intel ...

Yang mengatakan, mereka pasti digunakan dalam beberapa desain. Nyatanya, tidak selalu langsung oleh OS. Sebagai contoh, VirtualBox , sebuah Mesin Virtual , meletakkan kode kernel tamu di ring 1. Saya juga yakin beberapa sistem operasi memanfaatkannya, saya rasa itu bukan desain yang populer saat ini.

Evan Teran
sumber
28
SIAPA VirtualBox menggunakan ring 1 ?! Itu benar-benar luar biasa !! Terima kasih banyak atas infonya, itu jawaban yang bagus! +1
pengguna541686
10
OS / 2 menggunakan Ring 2 secara ekstensif untuk kode I / O. Inilah sebabnya mengapa sangat sulit untuk melakukan virtualisasi.
kinokijuf
Dari superuser.com/questions/1402537/… : "Menjalankan kode ring 0 di ring 1 menyebabkan banyak kesalahan instruksi tambahan, karena ring 1 tidak diizinkan untuk mengeksekusi instruksi istimewa, yang mana ring-0 tamu berisi banyak. Dengan masing-masing dari kesalahan ini, VMM harus turun tangan dan meniru kode untuk mencapai perilaku yang diinginkan. Meskipun ini berfungsi, meniru ribuan kesalahan ini sangat mahal dan sangat mengganggu kinerja tamu virtual. "
Dustin Oprea
24

Dari perspektif desain OS, memiliki beberapa cincin istimewa adalah keanehan x86 - kebanyakan CPU lain hanya memiliki dua mode (supervisor dan pengguna). Dengan demikian, mendesain OS agar memerlukan beberapa mode istimewa akan segera mencegahnya agar tidak di-porting ke CPU lain. Selain itu, banyak paket virtualisasi modern tidak meniru dengan benar tingkat hak istimewa selain 0 dan 3, membuat OS yang menggunakan tingkat ini jauh lebih sulit untuk diuji.

senja -tidak aktif-
sumber
7

Menurut halaman Wikipedia di Ring Security , ring 1 dan 2 digunakan untuk driver (ring 1), sistem operasi tamu (ring 1), dan kode hak istimewa i / o (ring 2), hypervisor berada di -1/0 (tergantung pada hyper-visor) bukan 1 seperti yang saya nyatakan sebelumnya.

Namun, dua cincin tambahan tidak pernah benar-benar membantu dan dengan demikian menjadi jarang digunakan. TBH, sebagian besar kode yang menggunakan cincin 1 dan 2 ini memiliki tujuan semi-repurposed dari penggunaan aslinya (seperti hypervisor). Sebagian besar kode jendela saat ini tampaknya memperlakukan sistem hanya memiliki dua tingkat (kernel dan pengguna), mungkin karena overhead yang terkait dengan masuk dan keluar dari lahan kernel.

Necrolis
sumber
1
Saya pikir Anda melewatkan suatu -tempat. Apakah Anda yakin hypervisor menggunakan ring 1?
pengguna541686
Heh, tidak berpikir, harus menjadi hyper-visor di -1 dan guest OS di 1, akan memperbaruinya secepat itu
Necrolis
4
Windows hanya menggunakan dua cincin karena dirancang untuk berjalan pada prosesor lain (sekarang mati) yang hanya memiliki dua.
David
Dalam pikiran saya, ada sedikit biaya tambahan untuk beralih mode. Dari apa yang saya pahami, hanya perangkat keras yang dapat menetapkan lebih banyak hak istimewa ke cpu (seperti jika terjadi interupsi yang selesai IO). Jika peralihan hak istimewa ini terjadi di perangkat keras, saya ragu bahwa beralih cincin bukan hal yang sepele. Saya pikir Windows, Linux, atau MacOS hanya menggunakan dua cincin paling ekstrim karena arsitek memesan cincin tengah untuk hal-hal seperti virtualisasi yang dihosting os.
Nate Symer