Chapitre 3: Mécanismes de base
Objectifs
Comprendre le principe des interruptions
matérielles et des interruptions logicielles.
Comprendre la différence entre :
Interruptions, déroutements et appels
système
Savoir comment le système d’exploitation
utilise ces mécanismes de base pour la gestion
des entrés-sortie, des processus,…
1. Rappels et définitions
a. Processeur
Dispositif physique capable d’exécuter des
instructions
Peut prendre un certain nombre d’états distincts.
Le processeur communique avec un
environnement : Mémoire centrale,
Périphériques, …
Le processeur est capable de modifier son état et
celui de son environnement en exécutant des
instructions.
b. Exécution d’un programme
Un programme doit être chargé en mémoire
centrale pour pouvoir être exécuté.
Le processeur charge l’instruction à exécuter
à partir de la mémoire dans un registre
interne appelé Registre Instruction (RI).
L’adresse de la prochaine instruction à
exécuter se trouve dans un registre spécial
appelé Compteur Ordinal (CO).
b. Exécution d’un programme (2)
Processeur Mémoire Centrale
Système
RI
UAL Instr k 4500 Instruction 1
4501 Instruction 2
CO
….. ……
UC 5001 5000 Instruction K
….. …….
5600 Instruction n
c. Point interruptible
Par convention, l’état d’un processeur et de
son environnement n’est pas défini pendant
l’exécution d’une instruction (sauf instruction
interruptible)
Le processeur et son environnement ne sont
observables qu’aux points interruptible ou
points observable.
Point interruptible: instant entre l’exécution
de deux instructions.
c. Point interruptible (2)
Instr 1 Instr 2 Instr 3 ….. Instr n
Points interruptibles
Remarque: Certaines instructions sont
interruptibles.
Exemple: interruptible-restartable instructions: LDM,
STM, PUSH, POP.
d. Etat d’un processeur
Défini par les valeurs d’un ensemble de ses
registres.
Deux types de registres :
1.Les registres programmables ou externes:
désignés explicitement comme opérandes dans
une instruction. Exemple: AX, BX, CX, DX, …
2.Les registres internes : Opérandes implicites de
certaines instructions.
e. Contexte d’un processus
Toutes les informations qui permettront à un CPU de
reprendre l’exécution du processus interrompu sont
sauvegardés lorsqu’une une interruption est détectée.
Ces informations en un point observable sont :
Un mot d’état programme (Program Status Word ou PSW)
L’adresse de la prochaine instruction à exécuter, contenue dans le
compteur ordinal (CO)
• Les indications sur l’état du CPU au moment de l’interruption (le
mode d'exécution « maître/esclave », masque d'interruption, etc..)
données par le registre d’état (ou flags),
Les opérandes et les résultats intermédiaires contenus
dans les registres externes,
Liste des fichiers ouverts,….
e. Contexte d’un processus
Ces informations représente l’état ou le
contexte du programme interrompu.
Lorsque le traitement de l’interruption est
terminé, le contexte du programme est
restauré.
Les informations sauvegardées sont chargés dans
leurs registres respectifs
f. Mode d’exécution et mode
d’adressage
Dans un système multiprogrammé on doit
protéger :
Le système des accès non autorisés des applications
utilisateurs;
Les applications utilisateurs entre eux.
Solutions
Contrôler l’utilisation des instructions;
Contrôler l’accès à la mémoire.
Comment contrôler l’utilisation des instructions?
Mode d’exécution
Sur de nombreuses machines, on utilise deux
modes d’exécutions :
Mode système (ou mode maître): on peut
exécuter toutes les instructions de la machine.
Mode utilisateur (ou mode esclave): On ne peut
exécuter qu’un sous ensemble du répertoire
d’instructions:
Dans ce mode on ne peut pas exécuter les instructions
privilégiées : instructions d’E/S; instructions de
modification de la protection mémoire; …
Mode d’exécution
Pour spécifier(définir) le mode d’exécution, on
ajoute dans le PWS un bit appelé mode
d’exécution:
Bit=1 : Mode Système;
Bit=0 : Mode Utilisateur.
Comment l’application utilisateur peut-il
effectuer des opérations d’E/S ?
L’application utilisateur doit passer par un appel
système (ou appel au superviseur).
Exemple: instruction int du 80x86.
Mode d’adressage
Comment contrôler l’accès à la mémoire?
Sur les machines supportant la mémoire
virtuelle, un bit du mot d’état indique le type
d’adressage utilisé :
Adressage virtuel: pour les application
utilisateurs,
Adressage réel: pour le système d’exploitation.
2. Les interruptions
a. Notion d’interruption
Sous le contrôle d’un SE multitâche, le CPU est
en permanence susceptible d’exécuter un
programme.
Le problème est de savoir à quel moment le CPU
va pouvoir prendre en compte les événements
extérieurs à la séquence d'instructions qu‘il
exécute :
Frappe d'une touche sur le clavier,
Déplacement de la souris,
Fin d'impression,
Un paquet arrive sur la carte réseau,
Passage d’un objet devant un capteur,….
a. Notion d’interruption (2)
Il faut donc introduire un mécanisme matériel
qui indique au processeur d’arrêter le traitement
courant. Ce mécanisme s’appelle une
interruption.
A chacun de ces interruptions correspond une
procédure spécifique à exécuter par le CPU.
Traitement de la
requête
Exécution du Continuation du
programme en cours programme
Requête
b. Définition d’interruption
Une interruption est un mécanisme qui
permet d'interrompre l'exécution d'un
processus suite à un événement extérieur ou
intérieur et de passer le contrôle à une routine
dite "routine d'interruption" ou "traitement
d’interruption".
c. Classes d’interruptions
Il existe 3 classes d’interruptions
Les interruptions matérielles
Les interruptions logicielles
Les déroutement
c.1. Interruption matérielles
Sollicitée par le matériel pour effectuer un traitement
(lire une touche du clavier par exemple).
Dans ce cas le matériel déclenche une IRQ (Interrupt
ReQuest) possédant un numéro propre au port auquel
le matériel est connecté. Chaque IRQ correspond à une
interruption particulière.
Ce signal modifie l'état d'un indicateur qui est
régulièrement testé par le CPU (les points
interruptibles).
Pour déterminer la cause de l'interruption on utilise un
indicateur, pour les différentes causes, On parle alors
du vecteur d'interruptions.
Interruption matérielles (2)
Vecteur d’interruption
On associe a chaque cause d'interruption un
numéro k qui l'identifie.
On dispose également dans les adresses basses
de la mémoire d'une table appelée le vecteur
d'interruptions (vi).
Les cases vi[k] de cette table contiennent
l'adresse de la routine a exécuter lors d'une
interruption de cause k.
Cette routine est appelée le traitant
d'interruption de cause k.
Vecteur d’interruption
c.2 Les appels au superviseur
Le programme courant lui-même peut
déclencher une interruption à l’aide d’une
instruction spéciale: un appel système.
Cela permet, d’utiliser certains services du
système qui nécessitent des privilèges
réservés au système.
Exemple(sous linux): open(), read(), kill(),
fork(), exec(),
c.3. Les déroutements
Des interruptions internes produites par le
processeur, sur des erreurs par exemple :
Division par zéro,
Dépassement de capacité,
Erreur d'adressage,
Accès à une zone de mémoire protégée, etc..
Ces interruptions sont généralement
appelées exceptions.
d. Niveaux d’interruptions et
propriétés
Dans système d'interruptions, on associe à
chaque interruption, une priorité qui permet de
regrouper les interruptions en classes ou niveaux.
Chaque niveau est caractérisée par un degré
d'urgence d'exécution de son programme
d'interruption.
Règle : Une interruption de niveau i est plus
prioritaire qu'une interruption de niveau j si i < j.
d. Niveaux d’interruptions et
propriétés
Pour quoi ces niveaux d’interruption?
L'intérêt d’un tel système est la solution de
problèmes tels que :
Arrivée de plusieurs d'interruption pendant
l'exécution d'une instruction,
Arrivée d'une d'interruption pendant l'exécution
du traitement d'une interruption précédente
Niveaux d’interruptions et propriétés
Priorité 8 5 6 3
10 Processus en Continuation
exécution du processus
Temps
e. Masquer une interruption
Certaines séquences d’instructions ou
programmes doivent être exécutées de
manière atomique (ou sans interruption).
Comment protéger ces programmes ?
Masquer les interruptions :Retarder le
mécanisme de changement d’état provoqué
par l’arrivée d’une l’interruption.
Masquer une interruption
Certaines interruptions présentent tellement
d'importance qu'il ne doit pas être possible
d'interrompre leur traitement.
On masquera alors les autres interruptions pour
empêcher leur prise en compte.
Une interruption masquée n'est pas ignorée :
elle est prise en compte dès qu'elle est
démasquée.
f. Armer et désarmer une interruption
Au contraire (de masquage d’interruption),
on peut supprimer complètement l'effet d'un
niveau d'interruption :
On dit alors que le niveau est désarmé ou
inhibée.
Une interruption désarmée sera ignorée et donc
perdue.
Par défaut, les interruptions sont
évidemment armées.
j. Interruptions et gestion des
processus
Les interruptions induites par l'horloge permettent la
gestion du temps par le système d'exploitation.
Le système peut programmer l'horloge pour que celle-
ci génère une interruption toutes les 10 ms (par
exemple).
A chacune de ces interruptions le système peut
reprendre la main et exécuter un algorithme de choix
de tâches (ordonnanceur) de manière à éviter qu'un
programme monopolise le CPU.
Ces interruptions peuvent également servir à la
gestion du temps dans les programmes.
h. Schéma général d’un programme de
traitement d’interruption
Le système d'interruption est un dispositif,
incorporé au niveau du séquenceur, qui
enregistre et traite les signaux d'interruption:
1. Arrêter le processus en cours ;
2. Identification de la source d'interruption;
3. Sauvegarder le contexte du processus interrompu;
4. Exécuter le programme de routine d'interruption ;
5. Restaurer le contexte du processus interrompu;
6. Reprendre l'exécution du processus interrompu.
Schéma général d’un programme de
traitement d’interruption