Chapitre 11
Interruptions et appels systèmes
Jean Privat
Université du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleur Automne 2013
Plan
1 Interruptions
2 Appel système
3 Système Pep/8
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 2 / 21
Fonctionnement d’un ordinateur
Complexe
Plusieurs tâches asynchrones indépendantes Exemple : les périphériques
Plan
1 Interruptions
2 Appel système
3 Système Pep/8
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 4 / 21
Interruptions
Idée
L’UCT travaille (4 étapes)
Une autre composante peut demander à
l’interrompre pour faire temporairement autre chose IRQ : Interrupt Request
Pourquoi interrompre
Périphérique : un paquet réseau arrive, la souris a bougé
Gestion erreur : erreur arithmétique, instruction invalide
Détection d’interruption
Registre d’interruption
Chaque catégorie d’interruption est connu
On associe un bit à chacune : cela forme le registre d’interruption
On permet à chacun de modifier seulement son bit
Fonctionnement
Après l’exécution d’une instruction l’UCT vérifie le registre d’interruption
Si pas d’interruption, alors l’UCT charge l’instruction suivant (comme déjà vu)
Si il y a interruption, alors l’UCT va exécuter l’interruption
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 6 / 21
Exemple de catégories d’interruption
IBM PC/XT (historique, 1983) IRQ 0 : Horloge système IRQ 1 : Clavier
IRQ 2 : Second contrôleur d’interruption (PC/AT) IRQ 3 : Port série (COM2/COM4)
IRQ 4 : Port série (COM1/COM3) IRQ 5 : Disque dur
IRQ 6 : Lecteur de disquettes IRQ 7 : Port parallèle (LPT1)
Masque et choix d’interruption
Masque d’interruption
L’UCT peut ignorer certaines interruptions
Un registre supplémentaire précise les interruptions désactivés (masque de bits)
Les programmes initialisent ce registre pour armer et désarmer les interruptions
Choix d’interruption
Plusieurs interruptions peuvent être signalées en même temps
Les interruptions sont prioritisées
Exécution des interruptions dans l’ordre de priorité
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 8 / 21
Exécution d’une interruption
Vecteur d’interruption
Un vecteur en mémoire contient autant de case que de catégorie d’interruption
On place dans les cases les adresses de
sous-programmes devant traiter l’interruption
Exécution d’une interruption
Lorsqu’une interruption est détectée, l’UCT change son compteur ordinal avec une valeur dans le vecteur d’interruption
Vu qu’on doit revenir, l’UCT sauvegarde le compteur ordinal quelque part avant (comme pour un CALL)
Étapes d’exécution d’un interruption
Le travail de l’UCT
Termine l’exécution d’une instruction Détermine que l’interruption n est levée
Sauvegarde le CO (et parfois d’autres registres) en mémoire
Charge la case n du vecteur d’interruption dans CO Exécute le sous-programme du (cycles normaux d’exécution de l’UCT)
Termine l’exécution de sous-programme (instruction spéciale)
Restaure le CO (et autre registres) Exécute l’instruction suivante
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 10 / 21
Détails techniques
Où trouver le vecteur d’interruption ?
Adresse fixe en mémoire dictée par le fabriquant de l’UCT
Un registre contient l’adresse du vecteur
Où sauvegarder le CO ? Adresse fixe mémoire Dans la pile
Dans une autre pile (pile système)
présence éventuelle d’un deuxième pointeur de pile
Variations
Masquage automatique
Lors du traitement d’une interruption, les interruptions moins prioritaires sont
automatiquement temporairement désactivées
Cela permet à un évènement urgent d’interrompre le traitement d’un évènement moins urgent
Contrôleur d’interruption
Un dispositif matériel peut être dédié à la gestion des files de priorités de requêtes d’interruptions
Le PC/AT (1984) avait deux contrôleurs en cascade APIC (Advanced Programmable Interrupt
Controllers) dans les PC modernes
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 12 / 21
Plan
1 Interruptions
2 Appel système
3 Système Pep/8
Système d’exploitation (SE)
Couche logicielle
À qui les programmes demandent des services Qui s’occupe de la gestion des programmes Qui s’occupe de la gestion du matériel
Appel système
La demande d’un service SE par le programme Par extension, l’implantation du service dans le SE
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 14 / 21
Appel système
Idée
Exécuter un sous-programme du SE
Problème
On ne connaît pas (ne veut pas connaître) l’adresse du sous-programme dans le SE
On veut donner plus du pouvoir au SE
Solution
Le SE numérote ses services
L’UCT a une instruction : « exécute le service numéro x »
Analogie : c’est une interruption manuelle
Interruption manuelle
Mise en place
Un vecteur contenant autant de cases que de services Le système remplit la case i avec le sous-programme implémentant le service numéro i
Mise en œuvre
Instruction spéciale « TRAP n » rencontrée CO (et autres registres) sauvegardé
Case n du vecteur d’appel système changée dans CO On exécute l’appel système (cycles normaux)
Instruction spéciale de restauration du CO
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 16 / 21
Plan
1 Interruptions
2 Appel système
3 Système Pep/8
Le système de Pep/8
Système simplifié
Pas d’interruption matérielle
Quelques appels systèmes de base : DECI, DECO et STRO
Appels systèmes (et tout le SE) redéfinissables
Deux modes de démarrage : chargement et exécution Deux piles : utilisateur et système
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 18 / 21
Vecteur spécial Pep/8
4 adresses
FFF8 : adresse de la pile utilisateur FFFA : adresse du la pile système FFFC : adresse du chargeur
FFFE : adresse de la gérante d’appel système (pour TRAP)
Initialisation
En même temps que le système d’exploitation
Démarrages de Pep/8
Chargement
PP initialisé à mem[FFFA]
CO initialisé à mem[FFFC]
Lancement de l’UCT (jusqu’au STOP)
Exécution
PP initialisé à mem[FFF8]
CO initialisé à 0
Lancement de l’UCT (jusqu’au STOP)
Jean Privat (UQAM) 11 — Interruptions INF2170 — Automne 2013 20 / 21
Appel système en Pep/8
Instructions spéciales TRAPs
De 00100100 (NOP0) à 01000111 (STRO,sxf)
Fonctionnement
Empile (sur la pile système) :
Le registre d’instruction (1o) ; PP (2o) ; CO (2o) ; X (2o) ; A (2o) ; NZVC (1 octet)
PP réinitialisé à sommet la pile système CO réinitialisé à mem[FFFE]
Instruction RETTR : Retour de TRAP
Restaure les registres à partir de la pile système