8. Exécution, pile, atomicité et protection
8.1 Décomposition des instructions de haut niveau
Le processeur exécute des instructions machine. Le registre d'instruction, présenté sous le nom EIP, indique la prochaine instruction; un registre de travail comme EAX contient des valeurs intermédiaires.
L'expression :
Code (c) · sélectionner pour copier
A = A + 4;
peut devenir conceptuellement :
- charger
Adepuis la mémoire dansEAX; - ajouter
4àEAX; - recopier
EAXdans l'emplacement mémoire deA.
L'expression source n'est donc pas nécessairement atomique. Une interruption peut survenir entre ses étapes. L'OS doit sauvegarder et restaurer le contexte correctement; les programmes concurrents doivent protéger les données partagées.
8.2 Pile d'exécution
La pile contient des cadres d'appel. Un cadre peut comprendre :
- les paramètres;
- l'adresse de retour;
- les variables locales;
- des registres sauvegardés.
Le registre SP, ou pointeur de pile, repère le sommet courant. Un appel de fonction ajoute un cadre; le retour le retire et reprend l'exécution à l'adresse conservée.
Une écriture hors limites peut corrompre une variable voisine, une adresse de retour ou l'organisation de la pile. La protection mémoire réduit la portée d'une erreur entre processus, sans rendre automatiquement le code interne sûr.
8.3 Mode noyau et mode utilisateur
Les processeurs offrent des niveaux de privilège. Le cours utilise surtout un modèle à deux niveaux :
- mode noyau : accès aux instructions et ressources privilégiées;
- mode utilisateur : exécution des applications ordinaires avec droits limités.
Une application ne peut pas accéder directement au matériel ou à la mémoire du noyau. Elle utilise un appel système. Le processeur change temporairement de mode, le noyau valide les paramètres et exécute l'opération, puis le contrôle revient en mode utilisateur.
La protection a un coût : validation, transition de privilège et parfois changement de contexte. Cette surcharge est le prix de l'isolation.
8.4 Anneaux Intel et autres architectures
Le modèle Intel classique expose quatre anneaux, de 0 à 3. L'anneau 0 est le plus privilégié et accueille typiquement le noyau; l'anneau 3 accueille les applications. Les anneaux intermédiaires sont peu utilisés par les SE courants.
D'autres architectures, notamment ARM, organisent leurs modes différemment, mais conservent la distinction entre exécution privilégiée et utilisateur.
Le privilège CPU ne doit pas être confondu avec un compte administrateur. Le premier est un mécanisme matériel attaché au code en cours d'exécution. Le second est une politique logicielle d'autorisation. Même lancé par un administrateur, un programme ordinaire s'exécute normalement en mode utilisateur.