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.
Mise à jour du micrologiciel de votre contrôleur Xbox One sans Xbox One
Microsoft publie régulièrement de nouvelles mises à jour de micrologiciel pour ses contrôleurs Xbox One, et ces mises à jour corrigent divers bogues. Mais, si vous utilisez un contrôleur Xbox One avec un PC, vous ne serez pas automatiquement invité à mettre à jour le firmware de votre contrôleur Comment mettre à jour le firmware d'un contrôleur Xbox One sous Windows 10 ASSOCIÉ: Les meilleures fonctionnalités de Xbox dans Windows 10 (même si vous ne possédez pas de Xbox) Si vous utilisez Windows 10, ce processus est assez simple, même si vous devrez faire des efforts pour mettre à jour le firmware du contrôleur.
Guide OTT de dépannage des problèmes d'imprimante
Les problèmes d'imprimante peuvent être extrêmement ennuyeux et frustrant. Un de mes amis vient de poster un statut qui résume assez bien, "Nous pouvons envoyer quelqu'un dans l'espace, des robots vers Mars, mais je ne peux toujours pas imprimer un document Word!". Je suis assez étonné moi-même combien de problèmes que j'ai avec les imprimantes, en particulier sans fil.Au fil