Mode protégé

Un article de Wikipédia, l'encyclopédie libre.

Le mode protégé est un mode de fonctionnement des processeurs basés sur l'architecture x86 d'Intel à partir du 80286. Il est aussi présent dans les séries x86-64 sous deux formes possibles : 32 bits et 64 bits.

Sommaire

[modifier] Caractéristiques

L'introduction du mode protégé a pour but d'ajouter, à coté du mode dit réel compatible avec l'existant, de nouvelles fonctionnalités pour favoriser le multitâche et la stabilité du système en proposant une assistance matérielle pour les points suivants :

La plupart des systèmes d'exploitation modernes x86, de Linux à FreeBSD en passant par Windows depuis la version 3.0, fonctionnent dans ce mode. Pour des raisons de compatibilité, un ordinateur se lance en mode réel et le basculement en mode protégé s'effectue manuellement. Il s'agit d'une des premières tâches faites par le système d'exploitation après l'amorçage.

[modifier] La segmentation

La segmentation ne peut pas être complétement désactivée en mode protégé. Mais à la différence du mode réel, les segments sont entièrement programmables.

C’est avec la segmentation que sont instaurés les niveaux de privilèges. Chaque segment possède un niveau de 0 à 3. Le niveau 0 étant le privilège le plus élevé (mode noyau) et le niveau 3 le plus faible (mode utilisateur). Le matériel n’autorise pas à un programme qui s’exécute dans un segment, d’accéder aux segments de privilège supérieur (donc numériquement inférieur).

La segmentation sert aussi de support à la mémoire virtuelle. En effet un segment est constitué d’une base (adresse physique –ou linéaire si la pagination est activée- de départ dans la mémoire) et d’une limite qui définit sa longueur. A l’intérieur d’un segment, l’adresse logique 0x0000 correspond à la base de ce segment. Un segment peut donc être déplacé avec ses données de façon transparente.

De plus le descripteur de chaque segment contient un bit P pour « présent » qui indique si les données sont en RAM ou pas. Si ce bit est éteint, lors d'un accès à ce segment, une exception se déclenche qui permet au système d’exploitation d’aller chercher les données où elles se trouvent et de les copier en RAM.

[modifier] Niveaux de privilège

Il existe, en mode protégé de x86, quatre niveaux de privilège appelés anneaux de protection, numérotés de 0 à 3. La plupart des systèmes d'exploitation modernes n'utilisent que deux de ces niveaux en pratique.

Le code de l'espace noyau (notamment le noyau de système d'exploitation) s'exécute dans l'anneau Ring 0, tandis que les applications utilisateur sont normalement exécutées dans l'anneau Ring 3, plus sécurisé et plus restrictif. On parle couramment de ces anneaux avec les termes « mode noyau » et « mode utilisateur ».

L'utilisation efficace de cette architecture exige une coopération étroite entre le processeur et le système d'exploitation.

[modifier] Rétro-compatibilité avec le mode réel

Il existe une série de règles pour qu'un programme exploité en mode réel soit binairement compatible, c'est-à-dire qu'il puisse être exécuté en mode protégé.

En fait la plupart des programmes DOS enfreignaient ces règles. Le 386 introduit le mode virtuel 8086 pour remédier à cela.

[modifier] Les modes protégés de x86-64

Le mode 32 bits de x86 est conservé, appelé Legacy Mode (mode hérité). x86-64 introduit un autre mode protégé en 64 bits natif appelé Long mode, avec des différences notables :

  • Sous-mode de compatibilité pour exécuter des programmes compilés en 32 ou 16 bits utilisant le mode protégé
  • Taille de page de 4 Ko ou 2 Mo
  • Disparition quasi-totale de la segmentation (mémoire virtuelle adressée par 64 bits à plat). CS, DS, FS et SS sont traités comme s'ils valaient zéro. FS et GS ont un traitement particulier.
  • Désactivation du mode virtuel 8086
  • Disparition du basculement de tâches automatique. La commutation de contexte incombe désormais au logiciel.
  • Nouvelle manière de changer le niveau de privilège

[modifier] Liens externes

[modifier] Articles connexes