Plan Du Cours: A.Geniet, S.Malo - SE 1
Plan Du Cours: A.Geniet, S.Malo - SE 1
CH.2- Processus
Imprimante
Disque Ecran
dur
Scanner
Disquette
Unité Centrale Vidéo
(UC)
CD-ROM
DVD
Son
Souris Fax
Clavier Modem
[Link],[Link] - SE RNIS 2
CH.1- Concepts Généraux
❑ Système informatique
Unité centrale de
traitement Mémoire cache
UAL
(Unité Arithmétique Données
et Logique)
Contrôleur de
périphériques
Carte réseau
périphériques
[Link],[Link] - SE 3
CH.1- Concepts Généraux
❑ Système informatique
Utilisateurs
Programmes Programmes
utilitaires d’applications
Programmes systèmes
Système d’exploitation
Système
informatique
Matériel
[Link],[Link] - SE 4
CH.1- Concepts Généraux
❑ Fonctions principales d’un S.E.
τ2
τ3
R
Gestion de τ1 τ4
processus τ5
τ1
Protection
Mémoire cache
Gestion de Mémoire
la mémoire centrale
(RAM)
principale
SE
Gestion des E/S
Gestion de la
mémoire auxiliaire
Gestion
[Link],[Link] - SE de fichiers 55
CH.1- Concepts Généraux
❑ Fonctions principales d’un S.E.
• Entrées-sorties
Système d’exploitation
Gestion par le Système d'Exploitation
• Exclusion mutuelle
• Contrôle de l'accès au matériel
• Droits d'accès
• Non-dépassement des limites processeur
disque mémoire
dur
CH. 1- Concepts Généraux
❑ Evolution du mode d’exploitation
➢Les nouvelles tendances
[Link],[Link] - SE 7
CH.2- Processus
❑ Qu’est ce qu’un processus
Un est un programme en cours d’exécution. Il est caractérisé par:
pointeur État du
processus Autres informations indiquant, notamment
• son processus père;
Numéro du processus
• ses processus fils;
Compteur d’instructions
Mot d’état • son groupe;
Registres • ses variables d’environnement;
Limites de la mémoire • les statistiques et les limites d’utilisation des
Liste des fichiers ouverts ressources;
Priorité •les signaux à capturer, à masquer, à ignorer, en
Pointeur sur Files d’attente
attente ainsi que les actions associées.
[Link],[Link] - SE 8
CH.2- Processus
❑ Qu’est ce qu’un processus
➢ Le système d’exploitation maintient dans une table appelée « table des processus » les
informations sur tous les processus crées (PCB ou BCP).
➢Cette table permet au S.E. de localiser et gérer tous les processus.
[Link],[Link] - SE 9
CH.2- Processus
❑ Etat d’un processus
➢ L’état d’un processus décrit sa dynamique actuelle. Un processus
peut se trouver dans 6 (7) états:
Terminé
Nouveau admis
élu exit
Suspendu
En attente Bloqué
[Link],[Link] - SE 10
CH.2- Processus
❑ Hiérarchie des processus
[Link],[Link] - SE 11
CH.2- Processus
➢ Hiérarchie des processus sous UNIX
racine
Père
pagedaemon swappeur init
Descendance de
utilisateur 3
[Link],[Link] - SE 12
CH.2- Processus
❑ Processus d’Unix
[Link],[Link] - SE 13
CH.2- Processus
❑ Processus d’Unix
➢ Un processus fils peut partager certaines ressources (mémoire, fichiers)
avec son processus père ou avoir ses propres ressources. Le processus
père peut contrôler l’usage des ressources partagées.
➢ Le processus père peut avoir une certaine autorité sur ses processus fils.
Il peut les suspendre, les détruire (appel système kill), attendre leur
terminaison (appel système wait) mais ne peut pas les renier.
➢Un processus peut remplacer son code exécutable par un autre (appel
système exec).
[Link],[Link] - SE 14
Processus Père
Pid 12
Fork
Le
Programme toto mêm
e pr
Variables x, n, i…. ogr
….. amm
x := 0.2; n := 1; e
i := fork(); C.O.
C.O.
Processus Fils
Prochaine instruction Pid 74
Fork
0.2 74 0.2 0
x 1 i x 1 i
n n
Espace mémoire Père Espace mémoire Fils
Copie de Espace mémoire Père
[Link],[Link] - SE 15
Processus Père Processus Fils Exec
Pid 12 Pid 74
Fichier titi
Programme toto
Variables…..
x, n, i…. Programme un_autre
Variables z, p…
x := 0.2; n := 1; C.O.
i := fork(); C.O. Première instruction
If i = 0 then
C.O.
exec(titi);
End if;
0.2 74 0.2 0
x 1 i x 1 i
n n
Espace mémoire Père
Espace mémoire Fils
[Link],[Link] - SE z p 16
CH.2- Processus
❑ Terminaison d’un processus
➢Un processus se termine par une demande d’arrêt volontaire (appel système exit) ou
par un arrêt forcé provoqué par un autre processus (appel système kill) ou une erreur.
void exit(int vstatus);
➢ Son PCB et son PID sont conservés jusqu’à ce que son processus père ait
récupéré cet état de terminaison.
[Link],[Link] - SE 17
CH.2- Processus
❑ Etats d’un processus
destruction
Terminé
création terminaison
(kill, exit, fin)
élection
Prêt Actif
préemption
[Link],[Link] - SE 18
18
CH.3- Communication interprocessus
Il existe plusieurs mécanismes de communication
interprocessus:
❑ Les données communes;
❑ Les signaux;
❑ Les messages.
[Link],[Link] - SE 19
CH.3- Communication interprocessus
Il existe plusieurs mécanismes de communication
interprocessus:
❑ Les données communes;
❑ Les signaux;
❑ Les messages.
➢ Un signal est une interruption logicielle asynchrone qui a pour but d’informer
de l’arrivée d’un événement (outil de base de notification d’événement).
➢ Ce mécanisme de communication permet à un processus de réagir à un
événement sans être obligé de tester en permanence l’arrivée
➢ Le système d’exploitation gère un ensemble de signaux. Chaque signal a un
nom, un numéro, un gestionnaire (handler) et est associé à un type
d’événement.
➢ Le SE associe à chaque signal un traitement par défaut (abort, exit, ignore, stop,
continue).
➢ Le SE permet à un processus de redéfinir pour certains signaux leurs
gestionnaires. Un processus peut donc indiquer au système ce qui doit se
passer à la réception d’un signal.
[Link],[Link] - SE 20
CH.3- Communication interprocessus
Il existe plusieurs mécanismes de communication
interprocessus:
❑ Les données communes;
❑ Les signaux;
❑ Les messages.
Un autre mécanisme de communication entre processus est l’échange de messages.
Chaque message véhicule des données. Il existe plusieurs mécanismes de
communication par envoi de messages:
➢ Les tubes de communication;
➢ Les files de messages;
➢ Les sockets.
Les tubes de communication permettent à deux ou plusieurs processus
d’échanger des informations. On distingue deux types de tubes:
✓ Les tubes anonymes;
✓Les tubes nommés.
o Les tubes anonymes peuvent être considérés comme des fichiers temporaires;
o Ils permettent d’établir des liaisons unidirectionnels de communication entre
processus dépendants;
o Un tube de communication permet de mémoriser des informations et se comporte
comme une file FIFO.
[Link],[Link] - SE 21
CH.3- Communication interprocessus
Il existe plusieurs mécanismes de communication
interprocessus:
❑ Les données communes;
❑ Les signaux;
❑ Les messages.
Un autre mécanisme de communication entre processus est l’échange
de messages. Chaque message véhicule des données. Il existe plusieurs
mécanismes de communication par envoi de messages:
➢ Les tubes de communication;
➢ Les files de messages;
➢Les sockets.
Les tubes de communication permettent à deux ou plusieurs processus
d’échanger des informations. On distingue deux types de tubes:
✓ Les tubes anonymes;
✓ Les tubes nommés (qui ont une existence dans le système de fichier).
Ils sont plus intéressants que les tubes anonymes car ils offrent, en plus, les
avantages suivants:
o Ils ont chacun un nom qui existe dans le système de fichier;
o Ils peuvent être utilisés par des processus indépendants;
o Ils existent jusqu’à ce qu’ils soient supprimés explicitement.
[Link],[Link] - SE 22
CH.3- Communication interprocessus
Il existe plusieurs mécanismes de communication
interprocessus:
[Link],[Link] - SE 23
CH.4 - Synchronisation de processus: Introduction
[Link],[Link] - SE 24
CH.4 - Synchronisation de processus: Section critique
❑ Section critique: suite d’instructions qui opèrent sur un ou plusieurs objets partagés
et qui nécessitent une utilisation exclusive des objets partagés.
❑ Les sections critiques des différents processus qui opèrent sur des objets communs
doivent s’exécuter en exclusion mutuelle.
Problèmes:
Problèmes
➢ Elle n’assure pas l’exclusion mutuelle :
✓Supposons qu’un processus est suspendu juste après avoir lu la valeur du
verrou qui est égal à 0.
✓Ensuite, un autre processus est élu. Ce dernier teste le verrou qui est toujours
égal à 0, met le verrou à 1 et entre dans sa section critique.
✓Ce processus est suspendu avant de quitter la section critique. Le premier
processus est alors réactivé, il entre dans sa section critique et met le verrou à 1.
✓Les deux processus sont en même temps en section critique.
➢L’attente active surcharge le CPU
[Link],[Link] - SE 27
CH.4 - Synchronisation de processus: Section critique
❑ Attente active avec alternance
➢ Utiliser une variable tour qui mémorise le tour du processus qui doit entrer en section
critique.
➢ tour est initialisée à 0.
Processus P0 Processus P1
while (1) while (1)
{ /*attente active*/ { /*attente active*/
while (tour !=0) ; while (tour !=1) ;
section_critique_P0() ; section_critique_P1() ;
tour = 1 ; tour = 0 ;
…. ….
} }
Problèmes
➢ Un processus peut être bloqué par un processus qui n’est pas en section critique.
✓ P0 lit la valeur de tour qui vaut 0 et entre dans sa section critique. Il est suspendu et P1
est exécuté.
✓ P1 teste la valeur de tour qui est toujours égale à 0. Il entre donc dans une boucle en attendant
que tour prenne la valeur 1. Il est suspendu et P0 est élu de nouveau.
✓ P0 quitte sa section critique, met tour à 1 et entame sa section non critique. Il est suspendu et
P1 est exécuté.
✓ P1 exécute rapidement sa section critique, tour = 0 et sa section non critique. Il teste tour qui
vaut 0. Il attend que tour prenne la valeur 1.
➢ Attente active consomme du temps CPU.
[Link],[Link] - SE 28
CH.4 - Synchronisation de processus: Section critique
❑ Solution de Peterson
➢ Cette solution se base sur deux fonctions entrer_region et quitter_region.
➢ Chaque processus doit, avant d’entrer dans sa section critique appeler la fonction
entrer_region en lui fournissant en paramètre son numéro de processus.
➢ Cet appel le fera attendre si nécessaire jusqu’à ce qu’il n’y ait plus de risque.
➢ A la fin de la section critique, il doit appeler quitter_region pour indiquer qu’il quitte
sa section critique et pour autoriser l’accès aux autres processus.
void entrer_region(int process)
{
int autre ;
autre = 1 – process ; //l’autre processus
interesse[process] = TRUE ; //indiquer qu’on est intéressé
tour = process ;
while (tour == process && interesse[autre] ==TRUE) ;
}
void quitter_region (int process )
{
interesse[process] = false ;
}
Problème :
attente active = consommation du temps CPU
[Link],[Link] - SE 29
CH.4 - Synchronisation de processus: Section critique
❑ L’instruction Test and Set Lock (TSL)
➢ L’instruction Test and Set Lock « int TSL (int b) » exécute de manière indivisible les opérations
suivantes :
✓ récupère la valeur de b,
✓affecte la valeur 1 à b et
✓ retourne l’ancienne valeur de b.
➢ Lorsqu’un processeur exécute l’instruction TSL, il verrouille le bus de données pour
empêcher les autres processus d’accéder à la mémoire pendant la durée de l’exécution.
➢ Cette instruction peut être utilisée pour établir et supprimer des verrous
(assurer l’exclusion mutuelle).
Problèmes:
➢ attente active = consommation du temps CPU
➢ Inversion de priorité
[Link],[Link] - SE 30
CH.4 - Synchronisation de processus: Section critique
❑ Les primitives SLEEP et WAKEUP
➢ SLEEP est un appel système qui suspend l’appelant en attendant qu’un autre le réveille.
➢ WAKEUP(process) : est un appel système qui réveille le processus process.
➢ Un processus H qui veut entrer dans sa section critique est suspendu si un autre processus
B est déjà dans sa section critique.
➢ Le processus H sera réveillé par le processus B, lorsqu’il quitte la section critique.
Problèmes
➢ Les tests et les mises à jour des conditions d’entrée en section critique ne sont pas
exécutés en exclusion mutuelle.
➢ Si le signal émis par WAKEUP(P1) arrive avant que P1 ne soit endormi, P1 pourra
dormir pour toujours.
verrou = 0;
Processus P0 Processus P1
{ {
if(verrou ==1) SLEEP(); if (verrou ==0) SLEEP();
verrou = 0; verrou= 1;
section_critique_P0( ); section_critique_P1( );
verrou = 1; verrou= 0;
WAKEUP(P1) ; WAKEUP(P0) ;
…. ….
} }
[Link],[Link] - SE 31
CH.4 - Synchronisation de processus: Section critique
[Link],[Link] - SE 32
CH.4 - Synchronisation de processus: Section critique
❑ Sémaphores
➢ Pour contrôler les accès à un objet partagé, E. W. Dijkstra (1965) suggéra
l’emploi d’un nouveau type de variables appelées sémaphores.
[Link],[Link] - SE 33
CH.4 - Synchronisation de processus: Section critique
❑ Sémaphores
Init
[Link] := nombre d’instances de
ressources existantes
Problème de la SC
Prendre Semaphore S = 1 ;
[Link] := [Link] + 1;
Si [Link] <= 0 then
Sélectionner un processus de S. liste;
Le supprimer de S. liste;
Le commuter à l’état prêt;
➢ Chacune de ces deux opérations doit être implémentée comme une opération indivisible.
[Link],[Link] - SE 34
CH.4 - Synchronisation de processus: Section critique
❑ Modélisation de la précédence et du rendez-vous
P1 P2
Corps P(S)
V(S) Corps
P1 P2
V(S1) V(S2)
P(S2) P(S1)
[Link],[Link] - SE 35
CH.4 - Synchronisation de processus: Section critique
❑ Problème du producteur/consommateur
Deux processus partagent une mémoire tampon de taille fixe N. L’un d’entre eux,
le producteur, dépose des informations dans le tampon, et l’autre, le consommateur,
les retire.
Producteur : Consommateur :
{ {
ip =0; ic =0;
Répeter Répéter
{ S’il y a, au moins, une entrée libre dans le tampon { S’il y a, au moins, une entrée occupée dans le tampon
alors produire(tampon, ip); ip = Mod(ip +1,N); alors consommer(tampon,ic); ic= Mod(ic+1, N);
sinon attendre jusqu’à ce qu’une entrée se libère sinon attendre jusqu’à ce qu’une entrée devienne occupée
} tantque vrai } tantque vrai
} }
[Link],[Link] - SE 36
CH.4 - Synchronisation de processus: Section critique
❑Problème du producteur/consommateur
[Link],[Link] - SE 37
CH.4 - Synchronisation de processus: Section critique
❑ Problème du producteur/consommateur
tampon [N];
Producteur : Consommateur :
{ {
int ip =0; int ic =0;
Répeter Répéter
{ {
P(libre) ; P(occupe);
produire(tampon, ip); consommer(tampon,ic);
ip = Mod(ip +1,N); ic= Mod(ic+1, N);
V(occupe); V(libre);
} tantque vrai } tantque vrai
} }
[Link],[Link] - SE 38
CH.4 - Synchronisation de processus: Section critique
❑ Problème des philosophes
➢ Cinq philosophes sont assis autour d’une table. Sur la table, il y a alternativement 5
plats de spaghettis et 5 fourchettes.
➢ Pour manger son plat de spaghettis, un philosophe a besoin de deux fourchettes qui
sont de part et d’autre de son plat.
➢ Si tous les philosophes prennent en même temps, chacun une fourchette, aucun
d’entre eux ne pourra prendre l’autre fourchette (situation d’interblocage).
➢ Pour éviter cette situation, un philosophe ne prend jamais une seule fourchette.
➢ Les fourchettes sont les objets partagés. L’accès et l’utilisation d’une fourchette doit
se faire en exclusion mutuelle. On utilisera le sémaphore mutex pour réaliser
l’exclusion mutuelle
[Link],[Link] - SE 39
CH.4 - Synchronisation de processus: Section critique
❑Problème des philosophes
[Link],[Link] - SE 40
CH.4 - Synchronisation de processus: Section critique
❑ Problème des philosophes
philosophe( i in [0,4])
{
Répéter
{
penser(); // procedure qui vérifie si le philosophe i peut manger
// tenter de manger void Test(int i)
P(mutex) ; {
Etat[i]=faim ; if( (Etat[i] == faim) && ( Etat[G(i)] != manger)
Test(i); && (Etat[D(i)] !=manger) )
V(mutex) ; {
P(S[i]) ; Etat[i] = manger ;
manger(); V(S[i]) ;
// libérer les fourchettes }
P(mutex) ; }
Etat[i] = penser ;
// vérifier si ses voisins peuvent manger
Test(G(i)) ;
Test(D(i)) ;
V(mutex) ;
}
}
[Link],[Link] - SE 41
CH.4 - Synchronisation de processus: Section critique
❑ Problème des Lecteurs / Rédacteurs
➢ Le compteur NbL est un objet partagé par tous les lecteurs. L’accès à ce
compteur doit être exclusif (sémaphore mutex).
➢ Un rédacteur peut accéder à la base, si elle n’est pas utilisée par les autres
(un accès exclusif à la base). Pour assurer cet accès exclusif, on utilise un
autre sémaphore (Redact).
[Link],[Link] - SE 43
CH.4 - Synchronisation de processus: Section critique
➢ Cette solution est plus simple que les sémaphores et les compteurs
d’événements, puisque le programmeur n’a pas à se préoccuper de contrôler
les accès aux sections critiques.
[Link],[Link] - SE 44
CH.4 - Synchronisation de processus: Section critique
❑ Moniteur : Risque d’interblocage
Exemple : Producteur/consommateur
[Link],[Link] - SE 45
CH.4 - Synchronisation de processus: Section critique
❑ Moniteur : Risque d’interblocage
Moniteur ProducteurConsommateur
{
int compteur =0, ic=0, ip=0 ;
➢ wait(x) :
✓ suspendre l’exécution du processus (thread) appelant (le mettre en attente de x);
✓ autoriser un autre processus en attente du moniteur à y entrer;
➢ signal(x) :
✓ débloquer un processus en attente de la condition x.
[Link],[Link] - SE 47
CH.4 - Synchronisation de processus: Section critique
❑Moniteur : Exemple : Problème Producteur/consommateur
➢ Un retrait est possible uniquement si le tampon n’est pas vide. Pour bloquer
le consommateur tant que le buffer est vide, il suffit d’utiliser une variable
de condition nvide et de précéder chaque opération de retrait par l’action
wait(nvide), si le tampon est vide.
Moniteur ProducteurConsommateur
{ boolc nplein, nvide ; //variable conditionnelle pour non plein et non vide
int compteur =0, ic=0, ip=0 ;
➢ Si cette dernière file est gérée, elle est plus prioritaire que la file
d’attente du moniteur.
[Link],[Link] - SE 50
Données Type Mon_moniteur ;
partagées Var
n, p : integer;
Tab : array (1..10) of boolean;
Dispo : boolean;
n, p : integer;
Tab : array(1..10) of boolean;
Procedure P1;
Dispo : boolean;
end P1;
P1 F1(…) Ps(…) Function F1(q: integer);
Liens avec
End F1; l’extérieur
…
Procedure Ps (paramètre);
End Ps;
Opérations
Begin
Code d’initialisation --Initialisation :
Dispo := true;
N := 0; p := q;
Tab := (others =< false);
End Mon_moniteur;
Sans variables conditionnelles
[Link],[Link] - SE 51
Type Mon_moniteur ;
Données Var
partagées x, y : condition;
x Procedure P1;
y Begin
If mauvaise condition then
[Link];
End if;
Accès aux objets partagés;
end P1;
Hypothèse
…
Signal terminal
Procedure Ps (paramètre);
Begin
Libération d’objets partagés;
Opérations [Link]; Sortie du moniteur
Code End Ps;
d’initialisation Begin
--Initialisation :
Dispo := true;
Avec variables conditionnelles N := 0; p := q;
Tab := (others =< false);
[Link],[Link] - SE 52
End Mon_moniteur;
CH.4 - Synchronisation de processus: Section critique
❑ Moniteur : Implémentation des moniteurs au moyen de sémaphores
[Link],[Link] - SE 53
CH.5 - Interblocage
❑ Introduction
➢ L’exécution d’un processus nécessite un ensemble de ressources (espace
mémoire centrale, espace disque, fichier, périphériques, …) qui lui sont
attribuées par le système d’exploitation.
Exemple:
➢ un processus Proc1 détient une ressource R1 et attend une autre ressource
R2 qui est utilisée par un autre processus Proc2 ;
[Link],[Link] - SE 54
CH.5 - Interblocage
❑ Introduction
P1 P2
Alloué
Demande
R1 R2
[Link],[Link] - SE 55
CH.5 - Interblocage
❑ Conditions nécessaires pour interblocage (Coffman, Elphick et Shoshani)
[Link],[Link] - SE 56
CH.5 - Interblocage
❑ Solutions au problème d’interblocage
Remarque :
➢ En général, ce problème est ignoré par les systèmes d’exploitation car le
prix à payer pour les éviter ou les traiter est trop élevé pour des situations
qui se produisent rarement.
[Link],[Link] - SE 57
CH.5 - Interblocage
❑ Solutions au problème d’interblocage: La détection et la reprise
[Link],[Link] - SE 58
CH.5 - Interblocage
❑ Solutions au problème d’interblocage: La détection et la reprise
✓ Ce graphe indique pour chaque processus les ressources qu’il détient ainsi
que celles qu’il demande.
[Link],[Link] - SE 59
R1 R2 R4 R1 R2 R4
P1 P2 P3 P1 P2 P3
R3 R3
R1 R2 R4
P1 P2 P3
R3
[Link],[Link] - SE 60
CH.5 - Interblocage
La reprise des interblocages
[Link],[Link] - SE 61
CH.5 - Interblocage
❑ L’évitement des interblocages
➢ Un état est sûr si tous les processus peuvent terminer leur exécution (il
existe un ordre d’allocation de ressources qui permet à tous les processus
de se terminer).
[Link],[Link] - SE 62
CH.5 - Interblocage
❑ Déterminer si un état est sûr ou non : L’algorithme du banquier
➢ L‘état est caractérisé par quatre tableaux.
R1 R2 R3 R4
E= ( 4 2 3 1 )
[Link] un processus Pi non marqué dont la
A=( 2 1 0 0 )
rangée Pi de Req est inférieure ou égale à A ;
R1 R2 R3 R4
[Link] un tel processus n’existe pas alors l’état est
P1 0 0 1 0 non sûr. L’algorithme se termine.
Alloc= P2 2 0 0 1
P3 0 1 2 0 [Link], ajouter la rangée Pi de Alloc à A,
marquer le processus ;
R1 R2 R3 R4
P1 2 0 0 1
[Link] tous les processus sont marqués alors l’état
Req= P2 1 0 1 0 est sûr et l’algorithme se termine, sinon aller à
P3 2 1 0 0 l’étape 1.
[Link],[Link] - SE 63
CH.5 - Interblocage
❑La prévention des interblocages
➢ Pour prévenir les interblocages, on doit faire de telle sorte que l’une des
quatre conditions nécessaires à leur existence ne soit jamais satisfaite.
➢ Pas d’exclusion mutuelle : impossible car certaines ressources sont
à usage exclusif.
➢ Pas de « détention et attente » : Il faudrait que toutes les ressources
nécessaires à un processus soient demandées et allouées à la fois. Le
processus ne doit pas détenir des ressources et en demander d’autres.
✓ Il est difficile de prévoir les besoins du processus
✓ Problème de famine.
➢ Préemption : n’est pas raisonnablement traitable pour la plupart des
ressources sans dégrader profondément le fonctionnement du système. On
peut cependant l’envisager pour certaines ressources dont le contexte peut
être sauvegardé et restauré.
➢ Pas d’attente circulaire, si on parvient à :
✓ Établir un ordre total entre les ressources et
✓ Imposer, à chaque processus, la règle de demande de ressources suivante :
Un processus peut demander une ressource Rj seulement
si toutes les ressources qu’il détient sont inférieures à Rj
[Link],[Link] - SE 64
CH.6 - Ordonnancement de processus
❑ Les ordonnanceurs
➢ Les programmes lancés sont d’abord admis par le système qui se charge
d’en créer les processus nécessaires.
➢ Dans un système multiprogrammé, plusieurs processus peuvent être
présents en mémoire centrale.
➢ Le système d’exploitation décide de l’ordre et du moment de l’admission des
programmes en attente (ordonnanceur de haut niveau).
➢ Il gère également l’allocation du processeur aux différents processus à
exécuter (ordonnanceur de bas niveau).
➢ L’exécution d’un processus est une séquence alternée de calculs CPU
(rafales « burst ») et d’attentes d’événements (E/S, attente d’un
sémaphore..).
➢ Lorsque le processus en cours se bloque, le processeur est alloué à un autre
[Link],[Link] - SE 65
CH.6 - Ordonnancement de processus
❑ Les ordonnanceurs
File d'attente
Device Scheduler
Périphériques
Device Scheduler
Device Scheduler
[Link],[Link] - SE login 66
CH.6 - Ordonnancement de processus
❑ Les ordonnanceurs
P P P P P P
Processus 2 1 1 2 1 1
P P P P P P
prêt 3 3 2 3 3 2
Processus
exécuté P1 P2 P3 P1 P2 P3
t
CH.6 - Ordonnancement de processus
❑ Les ordonnanceurs
P P P P P
Processus 2 1 P P P 1 2 1
prêt P P 1 3 1 P P P
3 3 2 3 3
Processus
exécuté P1 P2 P3 P1 P3 P1 P2
t
CH.6 - Ordonnancement de processus
❑ La commutation de contexte
[Link],[Link] - SE 69
CH.6 - Ordonnancement de processus
❑ La commutation de contexte
⬛ La commutation a lieu lors de l'élection d'un processus :
• Sauvegarde du contexte du processus évincé
• Chargement du contexte du processus élu
⬛ Contexte : ensemble des infos associées au processus
• Valeur des registres
• Informations mémoire (emplacement, etc.)
Restauration du
contexte
Processus P1 P2 P1
exécuté
Sauvegarde du
contexte
t
Mem
6. Favoriser les processus les plus prioritaires (éviter le problème d’inversion des
priorités).
[Link],[Link] - SE 72
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs non préemptifs
P1 2 3 1
P2 0 4 3
P3 0 6 1
P4 1 2 2
[Link],[Link] - SE 73
P5 1 1 1
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs préemptifs
✓ Pour s’assurer qu’aucun processus ne s’exécute pendant trop de temps, les
ordinateurs ont une horloge électronique qui génère périodiquement une
interruption.
✓ A chaque interruption d’horloge, le système d’exploitation reprend la main et
décide si le processus courant doit :
o poursuivre son exécution ou
o être suspendu pour laisser place à un autre.
✓ S’il décide de suspendre l’exécution au profit d’un autre, il doit d’abord
sauvegarder l’état des registres du processeur avant de charger dans les
registres les données du processus à lancer (commutation de contexte).
✓ Cette sauvegarde est nécessaire pour pouvoir poursuivre ultérieurement
l’exécution du processus suspendu.
[Link],[Link] - SE 74
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs préemptifs
[Link],[Link] - SE 75
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs préemptifs
P1 2 3 1
P2 0 4 3
P3 0 6 1
P4 1 2 2
[Link],[Link] - SE P5 1 1 1 76
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs préemptifs
✓ Ordonnancement circulaire (Tourniquet ou round robin)
o Algorithme ancien, simple, fiable et très utilisé.
o Il mémorise dans une file (FIFO : First In First Out), la liste des
processus en attente d’exécution (prêts).
o Algorithme équitable mais sensible au choix du quantum.
o Un quantum trop petit provoque trop de commutations de processus et abaisse
l’efficacité du processeur.
o Un quantum trop élevé augmente le temps de réponse des courtes commandes
en mode interactif.
Processus Arrivée Durée Priorité
P1 2 3 1
P2 0 4 3
P3 0 6 1
P4 1 2 2
[Link],[Link] - SE P5 1 1 1 77
CH.6 - Ordonnancement de processus
❑ Politique d’ordonnancement
➢ Ordonnanceurs préemptifs
✓ Ordonnanceur à priorité avec files multiples
[Link],[Link] - SE 80
CH.7 Gestion de la mémoire vive
❑ Généralités
➢ L’espace d’adressage d’un processus est généré par le compilateur et l’éditeur de liens.
Édition de liens +
Compilation Chargement
Programme
Programme
Programme
exécutable
source
objet
Adresses abstraites Adresses Adresses
x, n, p... translatables physiques
adresse de base
du programme
Calcul d’adresses
✓ Comment organiser la mémoire ? (une ou plusieurs partitions, le nombre et la taille des partitions fixes ou
variables au cours du temps).
✓ Faut-il allouer une zone contiguë à chaque processus à charger en mémoire ? Faut-il allouer tout l’espace
nécessaire à l’exécution du processus entier ? (politique d’allocation).
✓ Comment mémoriser l’état de la mémoire? Parmi les parties libres en mémoire, lesquelles allouées au
processus? (politique de placement)
✓ S’il n’y a pas assez d’espace en mémoire, doit-on libérer de l’espace en retirant des parties ou des
processus entiers? Si oui lesquels ? (politique de remplacement).
✓ Les adresses figurant dans les instructions sont-elles relatives? Si oui, comment les convertir en adresses
physiques.
✓ Si plusieurs processus peuvent être résident en mémoire, comment assurer la protection des processus
(éviter qu’un processus soit altéré par un autre?
[Link],[Link] - SE 82
CH.7 Gestion de la mémoire vive
❑ Généralités
➢ Exigences
[Link],[Link] - SE 83
CH.7 Gestion de la mémoire vive
❑ Partitionnement de la mémoire
➢ Partitions fixes
[Link],[Link] - SE 84
CH.7 Gestion de la mémoire vive
❑ Partitionnement de la mémoire
➢ Partitions variables
✓ Quand un nouveau processus doit être chargé, on lui alloue une zone contiguë
de taille suffisamment grande pour le contenir.
✓ Solutions:
– Compactage (coûteux et exige que les processus soient relocalisables)
– Allocation discontinue.
[Link],[Link] - SE 85
CH.7 Gestion de la mémoire vive
❑ Etat de la mémoire
[Link],[Link] - SE 86
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
[Link],[Link] - SE 87
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
[Link],[Link] - SE 88
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢ supposons que l’adresse virtuelle (b, d) est sur 32 bits, n bits pour d :
✓ Le nombre maximal de blocs que peut contenir l’espace virtuel : 232-n
✓ La taille maximale d’un bloc : 2n
n => fragmentation interne et table des blocs
➢ La table des blocs d’un processus indique quels sont les blocs en mémoire. Elle
contient une entrée pour chaque bloc de l’espace virtuel du processus.
(bit de présence, adresse physique du début du bloc, ….).
➢ L’adresse de la table des blocs fait partie du contexte du processus à sauver ou
à restaurer lors du changement de contexte (un registre).
[Link],[Link] - SE 89
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
Processeur
Unité de gestion
de la mémoire
Ram Disque
[Link],[Link] - SE 90
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢La pagination pure
✓ La taille d’une page est fixe et égale à celle d’une case. Elle varie entre 512 octets
et 8 Ko.
✓ Il n’y a pas de fragmentation externe car toutes les pages sont de même taille.
[Link],[Link] - SE 91
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢La pagination pure
0
t p. 0
t-1 d=0 kt
t d=1 kt + 1
t p. 1 d
d=2 kt + 2
2t-1 . .
2t kt + d
. .
t p. 2 . .
3t-1 .
.
3t . .
t p. 3
4t-1
d = t-1 (k+1)t -1
kt
t p. k Page k
(k+1)t-1
[Link],[Link] - SE 92
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢La pagination pure: Conversion d’adresses virtuelles
✓ Adresse virtuelle = (numéro de page, déplacement dans la page).
✓ Les adresses virtuelles référencées par l’instruction en cours d’exécution doivent
être converties en adresses physiques.
✓ La correspondance entre les pages et les cases est mémorisée dans une table
appelée table des pages. Le nombre d’entrées dans la table est égal au nombre
de pages virtuelles.
✓ La table des pages d’un processus doit être (en totalité ou en partie) en
mémoire centrale lors de l’exécution du processus. Elle est nécessaire pour la
conversion des adresses virtuelles en adresses physiques.
✓ Chaque entrée de la table des pages est composée de plusieurs champs,
notamment :
o Le bit de présence
o Le bit de référence (R)
o Les bits de protection
o Le bit de modification (M)
o Le numéro de case correspondant à la page
o son emplacement
[Link],[Link] - SEsur disque 93
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢La pagination pure: Conversion d’adresses virtuelles
adresse
adresse
physique P
logique L
Processus x d y d
x y
✓ La taille de la table des pages peut être très grande (ex: pour un adressage virtuel sur 32 bits et des pages de 4 Ko).
✓ Pour éviter d’avoir des tables trop grandes en mémoire, de nombreux ordinateurs utilisent des tables
des pages à plusieurs niveaux.
✓ Par exemple, une table des pages à deux niveaux, pour un adressage sur 32 bits et des pages de 4 Ko,
est composée combien de tables de 1024 entrées ?
✓ Dans ce cas, une adresse virtuelle de 32 bits est composée de trois champs :
[Link],[Link] - SE 96
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢La pagination pure: Conversion d’adresses virtuelles
Page de la table
des pages
Page kt -1 C 0
Page t-1 C1
0 75 P1 P2 d
…
t-1 1
Page 0 C 75
t 100
p1
.. 900
. 2t-1
p2
Page t C 100
[Link],[Link] - SE 98
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle : défaut de page
SE
3
2
1
Charge M i
6
Cadre de page
libre 4
5
[Link],[Link] - SE 99
Mémoire physique
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
Cadre Bit
valide/invalide
de page
1
12 5 v/ i 2
Cadre 5 victime 12
84 5 i/ v 4
3
84
Table des pages
[Link],[Link] - SE 101
Mémoire physique
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
✓ Algorithme aléatoire
o Facile
[Link],[Link] - SE 102
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
✓ Algorithme optimal (BELADY) : OPT
o Critère : remplacer la page qui sera référencée le plus tard possible dans le futur
o Irréalisable
o Version locale et globale
o Intérêt pour faire des études analytiques comparatives
Exemple 1 avec 3 cadres
[Link],[Link] - SE 103
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
✓ Algorithme FIFO
o Critère : la page dont le temps de résidence est le plus long
o Implémentation facile :
❖ pages résidentes en ordre FIFO –› on expulse la première
o Ce n’est pas une bonne stratégie :
❖ Son critère n’est pas fondé sur l’utilisation de la page
o Anomalie de Belady
❖ On peut rencontrer des exemples où en augmentant le nombre de
cadres on augmente le nombre de défauts de page au lieu de le
diminuer.
[Link],[Link] - SE 104
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
✓ Algorithme FIFO : Anomalie de Belady
[Link],[Link] - SE 105
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Algorithme de remplacement de page
✓ Algorithme LRU
o Critère : page résidente la moins récemment utilisée
o Basé sur le principe de localité : une page a tendance à être réutilisée dans
un futur proche.
[Link],[Link] - SE 106
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Segmentation/pagination
✓ Dans un système paginé, l’espace d’adressage virtuel d’un processus est à une
dimension.
[Link],[Link] - SE 107
CH.7 Gestion de la mémoire vive
❑ Mémoire virtuelle
➢Segmentation/pagination
[Link],[Link] - SE 108
CH.8 Système de fichier
❑ Qu’est ce qu’un système de fichier ?
➢ Un système de fichiers est la partie du système d’exploitation qui se charge
de gérer le stockage et la manipulation de fichiers (sur une unité de stockage :
partition, disque, CD, disquette).
➢ Avant qu’un système de fichiers puisse créer et gérer des fichiers sur une
unité de stockage, son unité doit être formatée selon les spécificités du système
de fichiers.
[Link],[Link] - SE 109
CH.8 Système de fichier
❑ Qu’est ce qu’un système de fichier ?
➢ Un superbloc contient notamment :
[Link],[Link] - SE 110
CH.8 Système de fichier
❑ Qu’est ce qu’un fichier ?
➢ Un fichier désigne un ensemble de données manipulées comme une seule unité.
Accès séquentiel
Articles accessibles
Article pointé
[Link],[Link] - SE 113
CH.8 Système de fichier
❑ Stockage des fichiers
➢ Chaque fichier (ordinaire ou répertoire) d’un système de fichiers est stocké
sur l’unité de stockage du système de fichiers. Ses données sont dans des
blocs de taille fixe (512, 1024, ou 2048 octets, …).
➢ À chaque fichier est alloué un nombre de blocs. Le bloc est l’unité
d’allocation => fragmentation interne
➢ La lecture ou l’écriture d’un élément d’un fichier impliquera le transfert vers
la mémoire du bloc entier qui contient cet élément.
➢ Le système de fichiers conserve, dans un ou plusieurs blocs spécifiques
(superblocs), un certain nombre d’informations telles que le nombre de ses
blocs, leur taille, la liste des blocs libres….
➢ Pour pouvoir récupérer l’état des blocs (libre ou alloué), les systèmes de
fichiers maintiennent :
✓ une liste chaînée des blocs libres ou
✓ une table de bits contenant un bit pour chaque bloc (0 pour libre).
➢ Les blocs d’un même fichier sont contiguës ou non contiguës
[Link],[Link] - SE 114
CH.8 Système de fichier
❑ Stockage des fichiers
➢Structure des disques
Têtes de Axe
• Accès: lecture/écriture
Secteur ou bloc
– Positionnement
des têtes sur le bon Piste
cylindre
– Rotation pour
atteindre le bon
secteur
– Transfert des
informations
Plateau
[Link],[Link] - SE 115
CH.8 Système de fichier
❑ Stockage des fichiers
➢Temps d’accès
Temps de latence
+
Temps de recherche
+
Temps de transfert
[Link],[Link] - SE 116
CH.8 Système de fichier
❑ Stockage des fichiers
pilote
1 0 1 2 3
4 5 6 7
2 8 9 10 11
2
Zone tampon 12 13 14 15
Ram
[Link],[Link] - SE 117
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (1)
Répertoire
5 blocs libres
0 1 2 3 0 1 2 3
Toto : 4 blocs 4 5 6 7 4 5 6 7
8 9 10 11 8 9 10 11
Ne loge pas compactage
12 13 14 15 12 13 14 15
[Link],[Link]
Fragmentation - SE externe 118
Toto
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (2)
0 1 2 3 début lgueur
Allocation 0 4
4 5 6 7
chaînée 1 6
8 9 10 11
12 13 14 15
Le pointeur
Données
du fichier
Un bloc
[Link],[Link] - SE 119
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (2)
✓File Allocation Table
0
Entrée du répertoire
48 339
toto … 217
217 619
619 48
[Link],[Link] - SE 120
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (3)
index lgueur
0 1 2 3 7 4
Allocation
4 5 6 7
indexée
8 9 10 11
12 13 14 15
0
6
9 128 entrées
13
15
0
8
....
Bloc n°7
[Link],[Link] - SE 121
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (4)
Indexation à
3 niveaux
[Link],[Link] - SE 122
CH.8 Système de fichier
❑ Stockage des fichiers
➢Méthodes d’allocation (5)
I-node d’Unix
10 accès
directs
Indirections
simple
double
triple
[Link],[Link] - SE 123
CH.9 Introduction à la sécurité
Cryptage par clé publique
communication
E et D publiques
B’ publique A’ publique
Bob Alice A’’ secrète
B’’ secrète
EA’ DA’’
M M’ M’’ = M
DA’’ EA’
M’ M M’’ = M’
[Link],[Link] - SE 124
Secret des données
A’ A’’
publique privée
EA’ DA’’
M M’ transmis M’ M’’ = M
secrète
EA’
M
publique
[Link],[Link] - SE 125
Secret + authenticité
M DB’’ EA’
M’=DB’’(M) M’’=EA’(M’) M’’
signature
privée
publique
M EB’ DA’’
M’ M’’
[Link],[Link] - SE 126