web-dev-qa-db-fra.com

Anneaux de privilège CPU: Pourquoi les anneaux 1 et 2 ne sont-ils pas utilisés?

Quelques questions concernant les anneaux de privilèges du processeur x86:

  • Pourquoi les anneaux 1 et 2 ne sont-ils pas utilisés par la plupart des systèmes d'exploitation? Est-ce juste pour maintenir la compatibilité du code avec d'autres architectures, ou y a-t-il une meilleure raison?

  • Existe-t-il des systèmes d'exploitation qui utilisent réellement ces anneaux? Ou sont-ils complètement inutilisés?

84
Mehrdad

En tant qu'écrivain amateur de systèmes d'exploitation, j'ai constaté que, car la pagination (une partie majeure du modèle de protection moderne) n'a qu'un concept de privilégié (anneau 0,1,2) et non privilégié, l'avantage pour les anneaux 1 et 2 a été considérablement diminué.

L'intention d'Intel en ce qui concerne les anneaux 1 et 2 est que le système d'exploitation place les pilotes de périphérique à ce niveau, ils sont donc privilégiés, mais quelque peu séparés du reste du code du noyau.

Les anneaux 1 et 2 sont en quelque sorte, "majoritairement" privilégiés. Ils peuvent accéder aux pages du superviseur, mais s'ils tentent d'utiliser une instruction privilégiée, ils ont toujours le GPF comme l'anneau 3 le ferait. Ce n'est donc pas un mauvais endroit pour les pilotes comme Intel le prévoyait ...

Cela dit, ils ont certainement une utilité dans certains modèles. En fait, pas toujours directement par l'OS. Par exemple, VirtualBox , a Virtual Machine , place le code du noyau invité dans l'anneau 1. Je suis également sûr que certains systèmes d'exploitation les utilisent, je ne le fais tout simplement pas pense que c'est un design populaire en ce moment.

87
Evan Teran

Du point de vue de la conception du système d'exploitation, le fait d'avoir plusieurs anneaux privilégiés est une bizarrerie de x86 - la plupart des autres processeurs n'ont que deux modes (superviseur et utilisateur). En tant que tel, la conception d'un système d'exploitation pour nécessiter plusieurs modes privilégiés l'empêchera immédiatement d'être porté sur n'importe quel autre processeur. De plus, de nombreux packages de virtualisation modernes n'émulent pas correctement les niveaux de privilèges autres que 0 et 3, ce qui rend les systèmes d'exploitation qui utilisent ces niveaux beaucoup plus difficiles à tester.

18
duskwuff

Selon wikipedia ( http://en.m.wikipedia.org/wiki/Ring_ (computer_security) ), les anneaux 1 et 2 sont utilisés pour les pilotes (anneau 1), les systèmes d'exploitation invités (anneau 1 ), et le code privilégié d'E/S (anneau 2), les hyper-visières sont situées à -1/0 (selon l'hyper-visière) et non à 1 comme je l'ai dit précédemment.

Cependant, les deux anneaux supplémentaires n'ont jamais vraiment aidé et sont donc devenus rarement utilisés. TBH, la plupart des codes utilisant les anneaux 1 et 2, ils les ont semi-réutilisés par rapport à leur utilisation d'origine (comme les hyperviseurs). De nos jours, la plupart des codes Windows semblent traiter le système comme ayant seulement deux niveaux (noyau et utilisateur), probablement en raison des frais généraux associés à l'entrée et à la sortie du noyau.

5
Necrolis