Kilka pytań dotyczących pierścieni uprawnień procesora x86:
Dlaczego większość systemów operacyjnych nie używa pierścieni 1 i 2? Czy chodzi tylko o zachowanie zgodności kodu z innymi architekturami, czy jest lepszy powód?
Czy są jakieś systemy operacyjne, które faktycznie używają tych pierścieni? A może są całkowicie nieużywane?
x86
cpu
privileges
user541686
źródło
źródło
Odpowiedzi:
Jako hobbysta piszący systemy operacyjne odkryłem, że ponieważ stronicowanie (główna część nowoczesnego modelu ochrony) ma tylko koncepcję uprzywilejowanego (pierścień 0, 1, 2) i nieuprzywilejowanego, korzyści z pierścieni 1 i 2 zostały znacznie zmniejszone.
Intencją Intela w posiadaniu pierścieni 1 i 2 jest, aby system operacyjny umieścił sterowniki urządzeń na tym poziomie, więc są one uprzywilejowane, ale nieco oddzielone od reszty kodu jądra.
Pierścienie 1 i 2 są w pewnym sensie „głównie” uprzywilejowane. Mogą uzyskać dostęp do stron nadzorcy, ale jeśli spróbują skorzystać z uprzywilejowanej instrukcji, nadal GPF tak jak robi to pierścień 3. Nie jest to więc złe miejsce dla kierowców, tak jak planował Intel ...
To powiedziawszy, zdecydowanie mają zastosowanie w niektórych projektach. W rzeczywistości nie zawsze bezpośrednio przez system operacyjny. Na przykład VirtualBox , maszyna wirtualna , umieszcza kod jądra gościa w pierścieniu 1. Jestem również pewien, że niektóre systemy operacyjne je wykorzystują, po prostu nie sądzę, że jest to obecnie popularny projekt.
źródło
Z punktu widzenia projektowania systemu operacyjnego, posiadanie wielu uprzywilejowanych pierścieni jest dziwactwem w architekturze x86 - większość innych procesorów ma tylko dwa tryby (nadzorcy i użytkownika). W związku z tym zaprojektowanie systemu operacyjnego tak, aby wymagał wielu uprzywilejowanych trybów, natychmiast zapobiegnie przeniesieniu go na jakikolwiek inny procesor. Ponadto wiele nowoczesnych pakietów do wirtualizacji nie emuluje poprawnie poziomów uprawnień innych niż 0 i 3, co znacznie utrudnia testowanie systemów operacyjnych korzystających z tych poziomów.
źródło
Według strony Wikipedii na temat Ring Security pierścienie 1 i 2 są używane przez sterowniki (pierścień 1), systemy operacyjne gościa (pierścień 1) i kod uprzywilejowany we / wy (pierścień 2), hiperwizory zajmują pozycję -1/0 (w zależności od hyper-visor) nie 1, jak wcześniej powiedziałem.
Jednak dodatkowe dwa pierścienie nigdy tak naprawdę nie pomogły i dlatego były rzadko używane. TBH, większość kodu używa pierścieni 1 i 2, które częściowo przerobiły ich pierwotne przeznaczenie (takie jak hiperwizory). Większość kodów Windows wydaje się obecnie traktować system jako mający tylko dwa poziomy (jądro i użytkownika), prawdopodobnie ze względu na narzut związany z wchodzeniem i opuszczaniem obszaru jądra.
źródło
-
gdzieś przegapiłeś . Czy na pewno hiperwizory używają pierścienia 1?