Algumas perguntas sobre os anéis de privilégio de CPU x86:
Por que os anéis 1 e 2 não são usados pela maioria dos sistemas operacionais? É apenas para manter a compatibilidade do código com outras arquiteturas ou há um motivo melhor?
Há algum sistema operacional que realmente use esses anéis? Ou eles estão completamente sem uso?
x86
cpu
privileges
user541686
fonte
fonte
Respostas:
Como um escritor de sistema operacional amador, descobri que, como o paging (uma parte importante do modelo de proteção moderno) tem apenas um conceito de privilegiado (anel 0,1,2) e não privilegiado, o benefício para os anéis 1 e 2 diminuiu muito.
A intenção da Intel em ter os anéis 1 e 2 é que o sistema operacional coloque os drivers de dispositivo nesse nível, de modo que sejam privilegiados, mas um tanto separados do resto do código do kernel.
Os anéis 1 e 2 são, de certa forma, "principalmente" privilegiados. Eles podem acessar as páginas do supervisor, mas se tentarem usar uma instrução privilegiada, ainda terão o GPF como o anel 3 faria. Portanto, não é um lugar ruim para drivers como a Intel planejou ...
Dito isso, eles definitivamente têm uso em alguns designs. Na verdade, nem sempre diretamente pelo SO. Por exemplo, o VirtualBox , uma máquina virtual , coloca o código do kernel convidado no anel 1. Também tenho certeza de que alguns sistemas operacionais os utilizam, só não acho que seja um design popular no momento.
fonte
Do ponto de vista do design do SO, ter vários anéis privilegiados é uma raridade do x86 - a maioria das outras CPUs têm apenas dois modos (supervisor e usuário). Assim, projetar um sistema operacional para exigir vários modos privilegiados impedirá imediatamente que ele seja transferido para qualquer outra CPU. Além disso, muitos pacotes de virtualização modernos não emulam corretamente os níveis de privilégio diferentes de 0 e 3, tornando os sistemas operacionais que usam esses níveis muito mais difíceis de testar.
fonte
De acordo com a página da Wikipedia sobre Ring Security , os anéis 1 e 2 são usados para drivers (anel 1), sistemas operacionais convidados (anel 1) e código I / o privilegiado (anel 2), hipervisores ficam em -1/0 (dependendo de o hyper-visor) não 1 como afirmei anteriormente.
No entanto, os dois anéis extras nunca ajudaram muito e, portanto, raramente foram usados. TBH, a maioria dos códigos usando os anéis 1 e 2, eles os semi-reaproveitaram de seu uso original (como os hipervisores). A maioria dos códigos do Windows hoje em dia parece tratar o sistema como tendo apenas dois níveis (kernel e usuário), provavelmente devido à sobrecarga associada à entrada e saída do kernel.
fonte
-
lugar. Tem certeza de que os hipervisores usam o anel 1?