phhsnews.com


phhsnews.com / Pourquoi les processeurs x86 n'utilisent que deux des quatre «anneaux»?

Pourquoi les processeurs x86 n'utilisent que deux des quatre «anneaux»?


En apprenant plus sur le fonctionnement des systèmes d'exploitation et du matériel qu'ils utilisent et interagissent entre eux, vous pourriez être surpris pour voir ce qui semble être des bizarreries ou une sous-utilisation des «ressources» survenant. Pourquoi donc?

La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web de questions et réponses.

Photo publiée avec l'aimable autorisation de SuperUser. Lemsipmatt (Flickr).

Le lecteur SuperUser Question

AdHominem veut savoir pourquoi les processeurs x86 n'utilisent que deux anneaux sur quatre:

Les systèmes x86 Linux et Windows utilisent uniquement Ring 0 pour mode noyau et Ring 3 pour le mode utilisateur. Pourquoi les processeurs distinguent-ils même quatre anneaux différents s'ils finissent tous par utiliser deux d'entre eux de toute façon? Cela a-t-il changé avec l'architecture AMD64?

Pourquoi les processeurs x86 n'utilisent que deux anneaux sur quatre?

Le contributeur SuperUser de Answer

Jamie Hanrahan a la réponse:

Il y a deux raisons principales.

La première est que, bien que les processeurs x86 offrent quatre anneaux de protection de la mémoire, la granularité de la protection offerte est seulement au niveau par segment. En d'autres termes, chaque segment peut être défini sur un anneau spécifique (niveau de privilège) avec d'autres protections telles que l'écriture désactivée. Mais il n'y a pas beaucoup de descripteurs de segment disponibles. La plupart des systèmes d'exploitation aimeraient avoir une granularité plus fine de la protection de la mémoire, comme ... pour des pages individuelles.

Entrez donc la protection basée sur la table de pages. La plupart, sinon la totalité, des systèmes d'exploitation x86 modernes ignorent plus ou moins le mécanisme de segmentation (autant qu'ils le peuvent de toute façon) et s'appuient sur la protection disponible des bits de poids faible dans les entrées de la table de pages. L'un d'eux est appelé le bit "privilégié". Ce bit contrôle si le processeur doit être dans l'un des niveaux "privilégiés" pour accéder à la page. Les niveaux "privilégiés" sont PL 0, 1 et 2 . Mais ce n'est qu'un bit, donc au niveau de la protection page par page, le nombre de "modes" disponibles en matière de protection mémoire est de deux: Une page peut être accessible depuis le mode non privilégié, ou non. Par conséquent, seulement deux anneaux. Pour avoir quatre anneaux possibles pour chaque page, ils devraient avoir deux bits de protection dans chaque entrée de table de page pour encoder l'un des quatre nombres d'anneaux possibles (tout comme les descripteurs de segment).

L'autre raison est une volonté de portabilité du système d'exploitation. Ce n'est pas seulement sur x86; Unix nous a appris qu'un système d'exploitation pouvait être relativement portable pour de multiples architectures de processeurs, et que c'était une bonne chose. Et certains processeurs ne supportent que deux anneaux. En ne dépendant pas de plusieurs anneaux dans l'architecture, les implémenteurs du système d'exploitation ont rendu les systèmes d'exploitation plus portables.

Il existe une troisième raison spécifique au développement de Windows NT. Les concepteurs de NT (David Cutler et son équipe, que Microsoft a loué auprès de DEC Western Region Labs) avaient une vaste expérience sur VMS; En fait, Cutler et quelques autres figuraient parmi les concepteurs originaux de VMS. Et le processeur VAX pour lequel VMS a été conçu a quatre anneaux (VMS utilise quatre anneaux).

Mais les composants qui ont fonctionné dans les Rings 1 et 2 (Record Management Services et le CLI, respectivement) Ring 2 dans VMS ne concernait pas vraiment la sécurité du système d'exploitation, mais plutôt la préservation de l'environnement CLI de l'utilisateur d'un programme à l'autre, et Windows n'avait pas ce concept; l'interface de ligne de commande fonctionne comme un processus ordinaire. Comme pour VMS Ring 1 , le code RMS dans Ring 1 a dû appeler Ring 0 assez souvent, et les transitions en anneau coûtent cher. Il s'est avéré être beaucoup plus efficace d'aller simplement à Ring 0 et d'en finir avec cela plutôt que d'avoir beaucoup de transitions Ring 0 dans la Ring 1 code (encore une fois, pas que NT a quelque chose comme RMS de toute façon).

Quant à savoir pourquoi x86 a implémenté quatre anneaux alors que les systèmes d'exploitation ne les utilisaient pas, vous parlez de systèmes d'exploitation de conception beaucoup plus récente que x86. Beaucoup de fonctions de programmation système de x86 ont été conçues bien avant que NT ou les vrais noyaux Unix-ish ne soient implémentés, et ils ne savaient pas vraiment ce que le système d'exploitation allait utiliser. Ce n'est que lorsque nous avons mis en page x86 que nous avons pu implémenter de vrais noyaux Unix-ish ou VMS.

Non seulement les systèmes d'exploitation x86 modernes ignorent largement la segmentation (ils configurent simplement les segments C, D et S avec une adresse de base de 0 et une taille de 4 Go; les segments F et G sont parfois utilisés pour pointer vers des structures de données clés du système d'exploitation), ils ignorent aussi des choses comme des «segments d'état de tâche». Le mécanisme TSS a été clairement conçu pour la commutation de contexte de thread, mais il s'avère avoir trop d'effets secondaires, de sorte que les systèmes d'exploitation x86 modernes le font "à la main". La seule fois où NT x86 change des tâches matérielles est pour des conditions vraiment exceptionnelles, comme une exception de double faute.

En ce qui concerne l'architecture x64, beaucoup de ces fonctionnalités désaffectées ont été omises. À leur crédit, AMD a parlé aux équipes du noyau du système d'exploitation et a demandé ce dont ils avaient besoin de x86, ce dont ils n'avaient pas besoin ou ne voulaient pas, et ce qu'ils aimeraient ajouter. Les segments sur x64 n'existent que dans ce que l'on pourrait appeler une forme vestigiale, la commutation d'état de tâche n'existe pas, etc., et les systèmes d'exploitation continuent d'utiliser seulement deux anneaux.


Avez-vous quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.


Comment sauvegarder vos messages texte dans Dropbox ou Google Drive sur Android

Comment sauvegarder vos messages texte dans Dropbox ou Google Drive sur Android

Vous ne savez jamais quand vous allez devoir référencer un ancien message texte avec un élément d'information important, et Le moyen le plus simple de vous assurer de ne jamais perdre quoi que ce soit est de faire marche arrière. Heureusement, il est très facile de transférer tous les messages texte de votre téléphone Android vers le nuage.

(how-to)

Le guide complet pour améliorer les performances de jeu de votre PC

Le guide complet pour améliorer les performances de jeu de votre PC

Si vous êtes nouveau dans le monde du jeu sur PC, tout peut sembler un peu compliqué. Les consoles ne disposent pas d'un matériel évolutif, d'un logiciel de bureau fonctionnant en arrière-plan ou de paramètres graphiques qui doivent être optimisés pour des performances optimales. Nous vous présenterons ce que vous devez savoir pour tirer parti de la plate-forme de jeu la plus puissante Optimisation de vos logiciels Le logiciel d'une console se déconnecte à chaque fois que vous lancez un jeu, en réservant toutes les ressources système possibles pour le jeu seul.

(how-to)