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

quelques questions concernant les anneaux de privilège x86 CPU:

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

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

70
demandé sur hippietrail 2011-07-15 20:13:59

3 réponses

en tant qu'auteur de système d'exploitation hobbyiste, j'ai constaté que parce que paging (une partie majeure du modèle de protection moderne) a seulement un concept de privilégié (anneau 0,1,2) et non privilégié, les avantages pour les anneaux 1 et 2 ont été grandement diminués.

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

Anneaux 1 et 2 sont dans un façon, "la plupart" des privilégiés. Ils peuvent accéder aux pages des superviseurs, mais s'ils tentent d'utiliser une instruction privilégiée, ils le feront tout de même, comme le ferait le ring 3. Donc c'est pas un mauvais endroit pour les pilotes Intel prévu...

cela dit, ils ont certainement une utilisation dans certains modèles. En fait, pas toujours directement par L'OS. Par exemple, VirtualBox , une machine virtuelle , met le code du noyau invité dans le ring 1. Je suis sûr que certains systèmes d'exploitation ne faire usage d'entre eux, je ne pense pas que c'est une conception populaire en ce moment.

67
répondu Evan Teran 2011-07-15 16:35:22

du point de vue de la conception de L'OS, avoir plusieurs anneaux privilégiés est une bizarrerie de x86 -- la plupart des autres CPU n'ont que deux modes (superviseur et utilisateur). Ainsi, concevoir un système D'exploitation pour exiger plusieurs modes privilégiés l'empêchera immédiatement d'être porté vers un autre CPU. De plus, de nombreux paquets de virtualisation modernes n'émulent pas correctement les niveaux de privilèges autres que 0 et 3, rendant les os qui utilisent ces niveaux beaucoup plus difficiles à tester.

16
répondu duskwuff 2011-07-15 16:31:11

selon wikipedia ( http://en.m.wikipedia.org/wiki/Ring_(computer_security) ), les anneaux 1 et 2 sont utilisés pour les pilotes(ring 1), les systèmes d'exploitation invités(ring 1), et le code I/O privilégié (ring 2), Hyper-viseurs sit in -1/0 (selon l'hyper-viseur) pas 1 comme je l'ai déjà dit.

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 ceux - ci ont semi-réutilisé à partir de leur utilisation originale (comme les hyperviseurs). La plupart des codes windows de nos jours semble traiter le système comme n'ayant que deux niveaux (noyau et utilisateur), probablement en raison des frais généraux associés à l'entrée et à la sortie du noyau

4
répondu Necrolis 2011-07-15 18:37:59