Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TD 2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

USTHB Année 2020/2021

Faculté d’Electronique et Informatique Master SSI


Département Informatique Système d’exploitation

TD Systèmes d’interruption
Exercice 1:
Soit une machine composée de 2 périphériques d’entrée/sortie, 1 CPU et de
la mémoire. Elle dotée d’un timer qui se déclenche à chaque 1 milliseconde.
La machine comporte un niveau d’interruption pour chaque périphérique et un
niveau d’interruption pour le timer et un autre pour l’appel au
superviseur.
On désire programmer un moniteur d’enchaînement où le processus actif garde
le processeur central jusqu’à sa terminaison ou jusqu’à la demande d’une
ressource. Par ailleurs, tout processus ne doit pas avoir une durée de vie
(de sa création à sa terminaison) supérieure à 7 minutes.
a- quelles sont les causes d’appel au superviseur ?
b- écrire le code de l’appel au superviseur.
c- à quel moment un processus peut être débloqué ? écrire le code
associé.
d- comment peut-on implanter le délai de garde (durée de vie)? écrire le
code associé.
e- Ecrire le moniteur d’enchaînement.
On utilisera les primitives suivantes :
Activer(n) : activer le processus dont le pid (process identifier) est n
Getpid(p) : retourne un entier qui représente le pid du processus décrit
par le PCB p
Create(p) : crée un nouveau processus et retourne son PCB dans p
Bloquer(n) : bloque le processus dont le pid est n
Réveiller(n) : débloque le processus dont le pis est n
Prêt(i) : rend un booléen (vrai : périphérique prêt, faux sinon) selon
l’état du périphérique i
Lancer(i) : lance une opération d’entrée/sortie sur le périphérique i
Sauve(n) : sauvegarde le contexte du processus dont le pid est n
Restaure(n) : restaure le contexte du processus dont le pid est n
Terminate(n) : met fin au processus dont le pid est n

Exercice 2:
Une machine X reconnaît 6 causes d'interruption, qui sont:
EX: action faite par un organe directement connecté
A : fin d'opération sur le canal d'E/S
B : fin d'opération sur le canal d'E/S
C : fin d'opération sur le canal d'E/S
D : fin d'opération sur le canal d'E/S
H : déclenchement de l'horloge
Pour que l'un de ces événements conduise à une interruption, deux
conditions sont nécessaires:
-le système d'interruption doit être actif
-la condition doit être armée, ce qui est réalisé en plaçant
un "1" dans la position correspondante d'un registre masque appelé RM.
Celui-ci comporte 6 bits qui correspondent de gauche à droite à EX, A, B,
C, D et H.

L'interruption a alors lieu de la façon suivante:


- le compteur ordinal est stocké en mémoire à l'adresse 0
- le système d'interruption est désactivé
- la valeur I ( 1(EX), 2(A), 3(B), 4(C), 5(D), 6(H) ) est placée dans le
compteur ordinal. On désire programmer la gestion des interruptions de
telle sorte que les priorités soient décroissantes de EX à H.
Cette machine dispose entre autres des instructions suivantes:
STM x : stocke RM dans les 6 bits de droite de x
MSK x : garnit RM avec les 6 bits de droite de x
ACT : active le système d'interruption
DOR : désactive le système d'interruption
CLA x : charge le contenu de x dans l'accumulateur
STO x : range le contenu de l'accumulateur dans x
TRA x : branchement vers l'instruction d'adresse x
TRA @x:branchement indirect vers l'adresse contenu dans x

a) Ecrire le début et la fin de la routine d'interruption i, en indiquant


notamment les valeurs des constantes pour chaque cause.

b) Comment le système se branche vers la routine d'interruption?

c) En examinant les trois dernières instructions de la routine


d'interruption indiquer pourquoi ce mécanisme comporte une faille.

d) Quelle doit être la valeur de RM à l'initialisation?

Exercice 3:
On s'intéresse à l'étude des interruptions et déroutements sur une machine
X. La machine comporte un seul niveau d'interruption (déclenché par le
passage à 0 de l'horloge), un seul déroutement et un seul appel au
superviseur. L'horloge proprement dite est un compteur dont le contenu est
décrémenté de 1 toutes les 5µs. Un appel au superviseur comporte plusieurs
paramètres dont le premier indique la cause de l'appel.
Le format du mot d'état du processeur est donné ci-après.

0 3 4 5 7 8 9 31
4 : mode (maître 1/ esclave 0)
8 : masque d'it (masqué 1/ démasqué 0)
9-31 : compteur ordinal

LPSW(m): cette instruction permet de charger le mot d'état du processeur


par la valeur du mot d'état rangé à l'adresse contenue dans m.

a) relevé périodique de mesures:


L'ordinateur est chargé de relever, périodiquement, des mesures sur une
installation industrielle. La prise de mesures doit être déclenchée toutes
les 100 ms. Comme la durée de la prise de mesures est très inférieure à la
durée de cet intervalle, l'ordinateur est occupé, pendant le reste du
temps, à l'exécution d'un travail de fond qui est donc, périodiquement
interrompu.

-Donner les différents programmes nécessaires à la réalisation de ce


système.

b) réalisation d'un moniteur d'enchaînement:


Un moniteur d'enchaînement lit en séquence et fait exécuter des travaux qui
lui sont soumis. A chaque travail sont associés un délai de garde (temps
maximal alloué pour l'exécution de ce travail) et une adresse de début
d'exécution. Si le délai de garde est écoulé avant la fin du travail, le
moniteur l'arrête et lance l'exécution du travail suivant. Les programmes
sont chargés à une adresse fixe qui n'a pas donc à être spécifiée comme
paramètre.

Chaque travail doit obligatoirement se terminer par un appel au superviseur


SVC(fin), qui marque la fin du travail (cet appel est automatiquement
inséré par le compilateur dans le texte du programme de l'utilisateur).
L'appel au moniteur d'enchaînement est déclenché soit par la fin normale du
travail (SVC(fin)), soit par l'écoulement du délai de garde.

-Ecrire les procédures nécessaires à la réalisation de ce moniteur.


Exercice 4:
Soit la structure matérielle d'un système d'interruption

RE est un registre d'état associé à chaque composant C i, il est sous la


forme suivante:
1 0

 
demande d'it de Ci autorisation/inhibition des its de Ci

La structure de la mémoire en ce qui concerne les routines d'interruptions


est la suivante:

Un signal d'interruption ne peut interrompre l'unité centrale que si:


- le système d'interruption est actif
- au moins un périphérique a son registre RE égal à 11

Le protocole de réalisation d'une interruption est le suivant:


-un ou plusieurs Ci positionnent le bit 1 du RE associé à 1.
-l'UC reçoit le signal d'IT au prochain point observable.
-l'UC désactive le système d'IT.
-l'UC charge dans les 2 premiers mots de la mémoire le PC et le PS
du programme courant.
- l'UC exécute une procédure fixe S.

a) Proposer une technique qui permet au système de se brancher à S dans ce


cas.

b) Le rôle de S consiste à déterminer l'identité du composant qui a


interrompu. Expliquer comment pourra-t-elle réaliser cette tâche
(considérer le cas où plusieurs Ci interrompent en même temps).
c) Expliquer pourquoi l'UC désactive le système d'IT avant l'exécution de
S. A quel moment sera-t-il réactivé?

d) Quel est le rôle du bit 0 de RE?

e) expliquer comment la routine d'un Ci quelconque est-elle exécutée après


S.

f) Ecrire le corps de S et d'une routine d'IT quelconque.

Exercice 5:
Le contexte d'un programme s'exécutant sur le MC68000 est constitué de 16
registres généraux (R0 à R15), du compteur ordinal (PC) et du mot d'état du
processeur (PS) dont la structure est la suivante:
15 13 10 9 8 4 3 2 1 0
T S I1 I2 I3 X N Z V C
         
trap mode masque d’it code condition

Le MC68000 reconnaît 256 causes d'interruption dont les vecteurs sont


stockés dans la table suivante:
1020 255
... n° des vecteurs
adreses d’interruption
physiques
8 2
4 1
0 0

Le vecteur d'interruption contient le compteur ordinal de la routine


d'interruption correspondante. Parmi ces 256 causes d'interruption huit
causes sont dues à des organes externes. Chacune de ces huit causes possède
un numéro d'interruption et qui correspond à sa priorité (de 0 à 7). Une
interruption de ce type arrive de la manière suivante:
1- L'unité centrale ne reçoit un signal d'interruption que si le numéro de
celle-ci est supérieur à la valeur du masque d'it qui se trouve dans le PS.
2- L'unité centrale envoie un signal d'acquittement au composant qui a
interrompu.
3- le composant envoie alors le numéro de son vecteur d'it après avoir
retiré son signal d'it.
4- l'unité centrale récupère ce numéro et empile dans la pile système le PC
et le PS du programme courant.
5- l'unité centrale positionne le bit S du PS à 1 et le masque d'it à la
valeur correspondante au numéro d'it récupéré en 1.
6- l'unité centrale se branche sur la routine d'it correspondante.

Le MC68000 dispose de l'instruction RTI qui charge le PS et le PC à partir


des deux mots de tête de la pile système.

a) Expliquer comment le système se branche vers la routine d'it.

b) Donner le corps d'une routine d'it quelconque.

c) Donner les valeurs du masque d'it du PS pour les 8 causes d'it.

d) Discuter de l'absence dans le MC68000 d'un mécanisme de désactivation


globale des interruptions.

Vous aimerez peut-être aussi