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).
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?
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 utiliser VLOOKUP dans Excel
Voici un tutoriel rapide pour ceux qui ont besoin d'aide en utilisant la fonction VLOOKUP dans Excel. VLOOKUP est une fonction très utile pour rechercher facilement à travers une ou plusieurs colonnes dans de grandes feuilles de calcul pour trouver des données connexes. Vous pouvez utiliser HLOOKUP pour faire la même chose pour une ou plusieurs lignes de données. Fon
Comment installer une imprimante réseau sur votre réseau domestique ou professionnel
Si vous envisagez d'acheter une imprimante bientôt, vous devriez envisager d'acheter une imprimante Ethernet ou sans fil. Les prix ont baissé ces dernières années et maintenant que la plupart des gens ont des réseaux sans fil, vous pouvez configurer votre réseau de sorte que vous puissiez imprimer n'importe où dans la maison ou même le monde en utilisant un service comme Google Cloud Print! Il est