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?
x86
cpu
privileges
pengguna541686
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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.
sumber
-
tempat. Apakah Anda yakin hypervisor menggunakan ring 1?