Se 2020-2021VF PDF
Se 2020-2021VF PDF
Se 2020-2021VF PDF
Systèmes d'exploitation II
2020-2021
Plan du cours
Introduction et Rappels
Gestion des processus: Synchronisation
– Définitions et rappels
– Algorithmes avec attente active
Gestion des processus: Synchronisation sans attente active
– Les sémaphores
– Les moniteurs
– L'interblocage
Gestion de la mémoire
– Définitions et rappels
– La mémoire virtuelle
Les entrées/Sorties
EMI / Département Génie Informatique/ Système d’exploitation II 2
Qu’est-ce qu’un SE ?
Une couche logicielle, dont le rôle est de:
– Gérer les ressources de la machine.
Ressource : tout ce qui est nécessaire à l’avancement d’un
processus (processeur, mémoire, disques, périphériques,
message d’un autre processus, réseau, etc …)
Exemples:
• Savoir quelles sont les ressources disponibles
• Savoir qui utilise quoi, quand, combien, etc.
• Allouer/Libérer les ressources efficacement.
– Fournir aux programmes d’application une interface
simplifiée avec les ressources
(base pour le développement et l’exécution des
programmes d’application.)
Temps de réponse
Fiabilité
Sécurité
A
A B C A
B B
C
C
Temps
Monoprogrammation Multiprogrammation
Écrire lire
Terminaison
Nouveau
Elu
élu Attente ressource ou évenement
Interruption
Prêt Bloqué
Ressource disponible
Exclusion mutuelle:
Si un processus exécute sa section critique, aucun autre
processus ne peut exécuter la sienne.
Interblocage:
Un processus qui n’est pas dans sa section critique ne peut
pas bloquer les autres pour y accéder
Famine:
Aucun processus ne doit attendre trop longtemps
(indéfiniment) pour entrer en section critique.
Aucune hypothèse n’est faite sur les vitesses relatives des
processus, ni sur le nombre de processus.
Solutions:
1. Logicielles
2. Matérielles
{ {
… …
{entrée_section;} {entrée_section;}
SC; SC;
{sortie_section;} {sortie_section;}
… …
} }
Amélioration:
(1) While (verrou != 0); // Attente
Section critique
verrou=0;
L'instruction TAS:
Function TAS(b boolean): Boolean
Begin
TAS := b;
b := TRUE;
End
Alternance
Tour= 1; // C’est le rédacteur qui commencera en premier
Processus 1 /*Lecteur*/
While (True)
{ While (Tour==1) ; // Attente
SC_Lecteur(); // SC exécutée si Tour=0. Exemple: Lire(B) où B est un objet à lire
Processus 2 /*Rédacteur*/
While (True)
{ While (Tour==0) ; // Attente
SC_Redacteur(); // SC exécutée si Tour=1. Exemple: Ecrire(B)
Tour=0; // sortie de la SC, c’est le tour du lecteur
Section_Non_Critique();}
END {if}
END {while}
End;
EMI / Département Génie Informatique/ Système d’exploitation II 26
Solutions Logicielles (Suite)
P1 exécute: Entrer_SC(P1,P2);
SC
Sortir_SC(P1,P2);
P2 exécute: Entrer_SC(P2,P1);
SC
Sortir_SC(P2,P1);
Processus i: // i= 0 ou 1
(3) while (Tour!=i AND Intéressé[(i+1) mod 2]=TRUE );//Attendre son tour
(4) Section_Critique();
(5) Intéressé[i]:=FALSE;
Exercices
EMI / Département Génie Informatique/ Système d’exploitation II 28
Les primitives Sleep & Wakeup
Au lieu de l'attente active (= consommation de la CPU)
le processus s'endort : primitive sleep
Un processus peut réveiller un autre processus :
primitive wakeup.
S = 1;
V(S):
Réveiller un processus en attente dans la file de S
Exemple
Initialisation: S=Q
P(S):
S S-1
Si(S<0) Alors Bloquer le processus appelant dans la file
d’attente de S
V(S):
S S+1
Si(S<=0) Alors Réveiller un processus en attente dans la file
de S
P(S):
Si Etat[i]=1 pour 1 ≤ i ≤ N
Etat[i] 0 pour 1 ≤ i ≤ N
Sinon
Bloquer le processus appelant dans la file d’attente de S
V(S):
Etat[i] 1 pour 1 ≤ i ≤ N
Réveiller un processus en attente dans la file de S
Exercices
EMI / Département Génie Informatique/ Système d’exploitation II 37
Les Moniteurs (Monitor)
Hoare (1974) / Hansen (1975)
Un moniteur est un module de programme constitué:
– d'un ensemble de variables partagées (variables d'état),
– d'un ensemble de procédures (méthodes) permettant
d’accéder à ces variables.
– D’un corps comportant l’initialisation des variables.
dans C.
allocateur: Moniteur;
Libre: Condition;
PROCEDURE Acquisition()
Begin
Occupé := True;
End;
PROCEDURE Libération()
Begin
Occupé=Faux;
Libre.signal;
End;
Begin // corps d’initialisation des variables
Occupé :=Faux;
End;
Exemple 2: Producteur-Consommateur
Prod_Cons: Moniteur
Var Buffer: Array[0..N-1] of message;
read, write: Condition;
compteur , indiceP, indiceC : Integer ;
PROCEDURE Ecrire(A: message)
Begin
If compteur = N Then write.wait;
Begin
End;
Begin
compteur:=0; indiceP := 0; indiceC := 0;
Fin; // fin du moniteur
}
EMI / Département Génie Informatique/ Système d’exploitation II 45
Les Moniteurs (suite)
Proc 1 Proc 2
Alloué
Demande
R1 R2
down(mutex1)
accès à ressource 1 ------->
down(mutex2)
<---------- accès à ressource 2
down(mutex2)
down(mutex1)
up(mutex2) up(mutex1)
up(mutex1) up(mutex2)
1- Évitement de l’interblocage
2- Prévention de l’interblocage
4- La politique de l’autruche
•Raisonnable si:
Le processus A demande R
A B C
Le processus B demande S
Le processus C demande T
Le processus A demande S R S T
Le processus B demande T
Le processus C demande R
EMI / Département Génie Informatique/ Système d’exploitation II 59
Interblocage: Détection et résolution (suite)
Résolution:
Tuer des processus
•Raisonnable si:
EMI / Département Génie Informatique/ Système d’exploitation II 63
Exercices:Synchronisation des processus
1
Chaque philosophe répète:
1 2
- Penser
- Prendre les fourchettes 5
2
- Manger
5 3
- Poser les fourchettes
4 4 3
Solution 2:
- Quel est le problème de la solution 1?
- Utiliser un sémaphore entier initialisé avec une valeur
pouvant éviter l'attente circulaire.
Solution 3:
1) Système mono-programmé
Partition
Utilisateur Utilisation d’un registre limite pour protéger
la partition système
Partition système
200 K
50 K
Système
Tassement (compactage):
Exemple:
1 1 1 1 1 1 1 1 1 1 4 4
2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 5 5 5 5 5 5
6 fautes de pages
EMI / Département Génie Informatique/ Système d’exploitation II 85
Algorithme Aléatoire: Random Algorithm
Problèmes:
1 1 1 4 4 4 5 5 5 5 5 5
2 2 2 1 1 1 1 1 3 3 3
3 3 3 2 2 2 2 2 4 4
9 fautes de page.
Demandes de pages: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 1 1 1 1 1 5 5 5 5 4 4
2 2 2 2 2 2 1 1 1 1 5
3 3 3 3 3 3 2 2 2 2
4 4 4 4 4 4 3 3 3
10 fautes de page.
– Quand une page doit être changée, prendre celle avec le plus
vieux compteur.
Exemple: 4 frames
Demandes de pages: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 1 1 1 1 1 1 1 1 1 1 5
2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 5 5 5 5 4 4
4 4 4 4 4 4 3 3 3
8 fautes de pages
Exemple: 4 frames
Demandes de pages: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 5 5 5 3 3 5
4 4 4 4 4 4 4 4 4
7 fautes de page
Principe
chaque fois que la page est lue ou écrite (référencée): R 1
chaque fois que la page est modifiée: M 1
A chaque interruption d'horloge: R 0
(afin de distinguer les pages récemment référencées)
Disque Imprimante
Bus
non le périphérique
EMI / Département Génie Informatique/ Système d’exploitation II 99
Les contrôleurs de périphériques
- Le contrôleur: transformer les signaux électriques "compris"
par le périphérique en signaux compris par l’unité centrale
ou la mémoire (et vice versa).
- Un contrôleur possède des registres spécifiques:
registre(s) d'état
registre(s) de commande
registre(s) de données
UC Mémoire
Bus
Registres
Périphériques
DMA
Avantages: