Syst`emes d’exploitation : Gestion des processus
M. T. Bennani
Maˆıtre Assistant, ISIM Monastir, UR MOSIC
-Ann´ee universitaire 2008-2009-
M. T. Bennani Maˆıtre Assistant, ISIM Monastir, UR MOSIC Cours sur syst`emes d’exploitation
2 / 35
Le mod`ele de processus
D´efinition - Le processus est une activit´e
Un processus est un programme qui s’ex´ecute, avec des valeurs du compteur ordinal des registres et des variables. Le compteur ordinal contient l’adresse de la prochaine instruction `a extraire de la m´emoire.
Remarque
Un SE donne l’impression qu’il ex´ecute plusieurs processus d’une mani`ere parall`ele. En r´ealit´e, le processeur bascule constemment d’un processus `a un l’autre. Ce basculement rapide est appel´emultiprogrammation.
un compteur ordinal
A B C D
A B C D
quatre compteurs ordinaux
processus
Temps A
B C D
3 / 35
Le mod`ele de processus
La cr´eation d’un processus
Il existe quatre ´ev´enements provoquant la cr´eation d’un processus : + Initialisation du syst`eme (Cr´eation de processus de premier plan et d’arri`ere-plan ”Deamon”)
+ Ex´ecution d’un appel syst`eme de cr´eation de processus par un processus en cours d’x´ecution (d´ecomposition des traitements) + Requˆete utilisateur sollicitant la cr´eation d’un nouveau processus (Besoin pour l’utilisateur)
+ Initialisation d’un travail en traitement par lots (Dans le cas des mainframe : ensemble de processus ”jobs”)
Remarques
- Dans le cas du SE UNIX, la cr´eation d’un processus se traduit par l’appel fork. Ceci permet de cr´er un processus fils image du p`ere. Le processus fils ex´ecute la commande execvepour cr´eer sa propre image.
- Dans le cas du SE WINDOWS, la cr´eation d’un processus se traduit par l’appel CreateProcess qui prend `a la fois la cr´eation du processus et le
chargement du programme appropri´e dans le nouveau processus. 4 / 35
Le mod`ele de processus
La fin d’un processus
Un processus s’arrˆete pour les raisons suivantes :
◮ Arrˆet normal (volontaire) (i.e. exitouExitProcess)
◮ Arrˆet pour erreur (volontaire) (i.e. cc foo.c o`u le fichier n’existe pas)
◮ Arrˆet pour erreur fatale (involontaire) (i.e. bogue)
◮ Le processus est arrˆet´e par un autre processus (involontaire) (I.e. killouTerminateProcess)
5 / 35
Le mod`ele de processus
La hi´erarchie des processus
Deux mani`eres peuvent ˆetre envisag´ees : gestion hi´erarchique et non hi´erarchique.
Gestion hi´erarchique (UNIX)
+ Un processus n’a qu’un seul parent. En revanche, il poss`ede z´ero ou plusieurs enfants.
+ Tous les processus d´escendent du porcessus initpr´esent dans l’image d’amor¸cage. Il g´en`ere un processus par Terminal qui attend l’ouverture d’une session (login). Le porcessusloginex´ecute un shell pour acc´epter les commandes.
Gestion non hi´erarchique (Windows)
+ Tous les processus sont ´egaux
+ Le seul moment o`u l’on trouve une hi´erarchie est celui de la cr´eation du processus. Le parent r´ecup`ere un jeton sp´ecial (Handle) qu’il peut utiliser pour contrˆoler son fils. Ce jeton peut ˆetre pass´e `a un autre processus (non autoris´e dans UNIX)
6 / 35
Les ´etats des processus
Un processus poss`ede les septs ´etats suivants :
Suspendu
Pérmuté Pret
Pret
Bloqué Pérmuté
bloqué
En
exécution Terminé (1)
(2) Fin des E/S
(1), (2) : permutateur
sortie Fin des E/S
(4) (3)
(3) : Interruption de l’horloge (4): Allocateur
-manque attente d’E/S
7 / 35
Les ´etats des processus
◮ Prˆet : ´etat d’un processus qui n’est pas allou´e `a l’UC, mais qui est prˆet `a ˆetre ex´ecut´e. Un processus prˆet pourrait s’ex´ecuter s’il est allou´e `a l’UC.
◮ En ex´ecution: ´etat d’un processus ex´ecut´e sur une UC. Si le syst`eme dispose de n UC, n processus au maximum peuvent se trouver en ´etat d’ex´ecution.
◮ Termin´e: ´etat d’un processus qui a termin´e son ex´ecution, mais dont l’enregistrement est conserv´e par le SE (zombie). Par exemple, un processus fils est toujours en vie alors on doit garder le Handle.
◮ Permut´e-bloqu´e: ´etat d’un processus qui attend l’occurence d’un
´ev´enement et qui a ´et´e extrait de la m´emoire auxiliaire.
◮ Permut´e-prˆet: ´etat d’un processus qui est prˆet `a ˆetre ex´ecut´e, mais qui est plac´e dans la m´emoire auxiliaire. Un processus Permut´e-prˆet ne peut pas ˆetre allou´e `a l’UC car il ne se trouve pas dans la m´emoire principale.
◮ Suspendu: ´etat d’un processus qui a ´et´e cr´e´e, mais qui n’est pas pris en compte pour le chargement en m´emoire ou l’ex´ecution. Il s’agit de processus nouveaux. On ne peut pas revenir `a l’´etat
suspendu. 8 / 35
Les ´etats des processus
Passage entre les ´etats
◮ Cr´eation d’un processus →suspendu: Lors de sa cr´eation, un processus est plac´e en ´etat suspendu.
◮ Suspendu→ {Permut´e prˆet ou Prˆet} : si la m´emoire est trop petite, on commence par activer le processus `a l’exterieur de la m´emoire principale en attendant qu’elle soit lib´er´ee par le SE.
◮ Permut´e prˆet →prˆet: Un processus est introduit lorsque suffisamment de m´emoire est disponible.
◮ Permut´e bloqu´e→bloqu´e: le syst`eme peut introduire en m´emoire principale des processus bloqu´es. Ceci s’av`ere int´eressant si le processus en question est de haut niveau de priorit´e ou bien, le syst`eme poss`ede une grande m´emoire.
◮ Prˆet →Permut´e prˆetoubloqu´e→Permut´e bloqu´e: Les processus en m´emoire y sont extrait afin de lib´erer de l’espace m´emoire pour les processus en ex´ecution ayant une grande emprinte.
9 / 35
Les ´etats des processus
Passage entre les ´etats (suite)
◮ Permut´e bloqu´e→Permut´e prˆetoubloqu´e→bloqu´e: Lorsqu’un processus est bloqu´e, il attend qu’un ´ev`enement survienne. Si c’est le cas, le processus est transf´er´e `a l’´etat prˆet correspondant.
◮ En ex´ecution→ prˆet: Les processus sont allou´es `a l’UC pour une dur´ee d´efinie appel´ee tranche de temps. Si un processus ne se bloque pas et lib`ere volontairement l’UC avant la fin de la tranche de temps, une interruption transf`ere le contrˆole au SE qui met le processus `a l’´etat prˆet et choisit le prochain processus `a ex´ecuter.
◮ Prˆet →en ex´ecution: Lorsqu’un processus n’est pas allou´e `a l’UC, l’ordonnanceur selectionne le prochain processus `a ex´ecuter dans lepool (i.e. liste) des processus prˆet
10 / 35
Les ´etats des processus
Passage entre les ´etats (suite)
◮ En ex´ecution→ bloqu´e: La r´ealisation d’op´erations d’E/S est contrˆol´ee par des facteurs externes au processus. Dans la plupart des cas, l’ex´ecution du processus doit ˆetre suspendue, jusqu’`a la notification que la condition sp´ecifi´ee est survenue. Pour ´eviter que l’UC reste inactive pendant que le processus attend un ´ev´enement, celui-ci est bloqu´e pour que l’UC puisse ˆetre attribu´ee `a un autre processus ex´ecutable.
◮ En ex´ecution→ Termin´e: Un processus en cours d’ex´ecution prend fin lorsqu’il accomplit une action non autroris´ee ou il ach`eve normalement l’ex´ecution de son code.
◮ Tout ´etat→termin´e: Cette situation n’est pas repr´esent´ee sauf qu’elle indique que l’´etat d’un processus n’a pas d’importance si le SE ou un autre processus veulent mettre fin au processus en cours.
11 / 35
L’impl´ementation des processus
Pour impl´ementer le mod`ele de processus, le syst`eme d’exploitation maintient une table appel´ee (table de processus) contenant une entr´ee par processus. Cette table contient 3 groupes
d’informations:
- Gestion des processus - Gestion de la m´emoire - Gestion des fichiers Gestion des processus - L’identificateur du processus - L’´etat du processus
- Le compteur ordinal - Le pointeur de pile - Priorit´e
- Processus parent
- Param`etres d’ordonnancement
Gestion de la m´emoire - Pointeur vers la zone m´emoire allou´ee au processus
Gestion des fichiers - R´epertoire racine - R´epertoire de travail - ´Etat des fichiers ouvert - ID Utilisateur
12 / 35
Algorithmes non pr´eemptifs
D´efinition
L’ordonnancement permet de maximiser l’utilisation du processeur, de tenir un temps de r´eponse acceptable et de respecter l’´equit´e entre les processus. Il existe deux types d’ordonnancements.
◮ Pr´eemptif
◮ Non-Pr´eemptif
D´efinition
Dans un algorithme d’ordonnancement non pr´eemptif, chaque processus est ex´ecut´e jusqu’`a ach`evement. Le processus ´elu garde le contrˆole jusqu’`a ´epuisement du temps qui lui est a ´et´e allou´e mˆeme si des processus plus prioritaires on atteint la liste des processsu prˆets.
13 / 35
Algorithmes non pr´eemptifs
Remarque
Il existe plusieurs types d’algorithmes non pr´eemptifs :
◮ FIFO :First In First Out
◮ SJF : Shortet Job First
◮ EDF : Earlier Deadline First FIFO
Cet algorithme traite les processus dans l’ordre de leur soumission (i.e. date d’arriv´ee) sans consid´eration de leur temps d’ex´ecution.
L’organisation de la file d’attente des processus prˆets est donc toute simple.
14 / 35
Algorithmes non pr´eemptifs
Exemple sur FIFO
Soit 4 processus : P1,P2,P3etP4 ayant des dur´ees de traitement estim´ees `a : 8, 4, 5 et 9 et des dates d’arriv´ees : 0, 1, 2 et 3.
Le diagramme de Gantt des 4 processus est le suivant : La dur´ee de traitement moyen Ttmoy =...
Remarque
- Avantage : Simplicit´e de l’algorithme - Inconv´enient : Risque de famine
15 / 35
Algorithmes non pr´eemptifs
SJF
D´efintion
Cet algorithme choisit de fa¸con prioritaire les processus ayant le plus court temps d’ex´ecution sans tenir compte de leur date d’arriv´ee.
Exemple sur SJF
Soit 4 processus : P1,P2,P3etP4 ayant des dur´ees de traitement estim´ees `a : 8, 4, 5 et 9 et des dates d’arriv´ees : 0, 1, 2 et 3.
Le diagramme de Gantt des 4 processus est le suivant : La dur´ee de traitement moyen Ttmoy =...
Remarque
- Avantage : Minimisation du temps d’attente
- Inconv´enient : Impossibilit´e de mise en œuvre car les dur´ees de traitement ne sont pas connues d’avance.
16 / 35
Algorithmes pr´eemptifs
D´efinition
Dans ce type d’algorithmes, mˆeme si un processus est ´elu, le processeur ne peut pas ˆetre r´equisitionn´e. L’ordonnanceur peut interrompre un processus en cours d’ex´ecution si un nouveau processus plus prioritaire est ins´er´e dans la file des processus prˆets.
Remarque
Il existe plusieurs types d’algorithmes pr´eemptifs :
◮ Round Robin : Ordonnancement circulaire
◮ SJF avec pr´eemption : Shortet Job First
17 / 35
Algorithmes pr´eemptifs
Round-Robin
D´efinition
Cet algorithme d´ecrit une strat´egie dite de du tourniquet o`u on proc`ede `a un recyclage des processus sur le processeur tant que ceux-ci ne sont pas termin´es.
Lorsqu’un processus est ´elu, on lui attribue une tranche de temps fixe, appel´ee quantum, pendant laquelle il s’ex´ecute. Au bout de ce temps, on ne poursuit plus l’ex´ecution du processus, on lui retire donc le processeurs et on le r´eins`ere dans la file des processus prˆets. Il devra ainsi attendre sa prochaine ´election.
Le processus se voit attribuer successivement plusieurs tranches de temps avant d’atteindre se terminaison.
18 / 35
Algorithmes pr´eemptifs
Round-Robin
Exemple sur RR
Soit 3 processus : P1,P2etP3 ayant des dur´ees de traitement estim´ees `a : 30, 5 et 2 et des dates d’arriv´ees : 0, 1 et 2.
Le diagramme de Gantt des 3 processus est le suivant : La dur´ee de traitement moyen Ttmoy =...
Remarque
- Avantage : Pas de famine
- Inconv´enient : Des processus prioritaires attendent des procesus non prioritaires.
19 / 35
Introduction
D´efinition
Nous parlons de communication interprocessus (IPC) lorsqu’un processus n’arrive pas `a r´ealiser un service sans l’aide d’autresou qu’il est en concurrence avec d’autres processus(race conditions). Cette concurrence peut ˆetre sur une partie du traitement du processus appel´ee s´ection critique. Par exemple, ”ps -ef | grep username” le pipe repr´esente un moyen de communication entre les processus ”ps” et
”grep” au niveau du shell.
Probl´ematique
Nous rencontrons trois probl`eme dans la communication interprocessus :
◮ Comment un processus fait-il pour passer des informations ?
◮ Est-ce que les processus en communication ne produisent pas des conflits lorsqu’ils s’engagent dans des activit´es critiques ?
◮ Comment s´equencer les d´ependances. Par exemple, si le processus A produit des donn´ees et le processus B les consomme.
20 / 35
Introduction
Diff´erentes solutions
Il existe plusieurs solutions pour prendre en charge la communication interprocessus au niveau noyau :
◮ L’exclutions mutuelle avec attente active
D´esactivation des interruptions, variables de v´errou, alt´ernative stricte (utilisation duwhile), Peterson, instruction TSL.
◮ Le sommeil et l’activation
Utilisation des m´ethodes : sleep()etwakeup().
◮ Les s´emaphores
◮ Les mutex
◮ Les moniteurs
Primitive de haut niveau (Hoare et Brinch Hansen). Une sorte de biblioth`eque.
◮ L’´echange de messages
◮ Les barri`eres (i.e. Ensemble de processus `a synchroniser) 21 / 35
Les S´emaphores
D´efiniton
Dans la proposition de Dijkastra, un s´emaphore est une variable qui permet partager une ressource entre plusieurs processus. Ceci est r´ealis´e par l’interm´ediaire de deux op´erations : downetup.
L’op´eration down sur un s´emaphore d´etermine si sa valeur est sup´erieure `a 0. Si c’est le cas, elle la d´ecremente et poursuit son activit´e. Si la valeur est de 0, le processus est plac´e en sommeil sans que le down ne se termine. Lorsqu’un processus finit son traitement, il r´ealise l’op´eration up qui incr´emente de un le s´emaphore dans le cas o`u il n’y a pas de processus en sommeil.
22 / 35
Les mutuex
D´efiniton
Si le d´ecompte n’est pas n´ecessaire, on peut utiliser une version simplifi´ee des s´emaphores qui est les mutex. Il ne prennent en charge que l’exclusion mutuelle. Un mutex est une variable qui peut prendre deux ´etats : v´errouill´e et d´ev´errouill´e d’o`u la n´ecessit´e d’un seul bit pour le repr´esenter. Deux proc´edures sont n´ecessaires pour utiliser un mutex :
- mutex lock: Pour entrer dans une section critique - mutex unlock: Pour lib´erer la ressource partag´ee
23 / 35
´Echange de messages
D´efiniton
Cette m´ethode de communication emploie deux primitives : send et receive. Les en-tˆete des primitives sont les suivantes : - send (destination, &message)
- receive (source, &message)
24 / 35
Introduction
D´efinition
Un ensemble de processus est en interblocage si chaque processus attend un ´ev´enement que seul un autre processus de l’ensemble peut provoquer.
Causes possibles
◮ Condition d’exclusion mutuelle : Chaque ressource est soit attribu´ee `a un seul processus, soit disponible.
◮ Condition de d´etention et d’attente : Les processus ayant d´ej`a obtenu des ressources peuvent en demander de nouvelles.
◮ Pas de r´equisition : Les ressources d´ej`a d´etenues ne peuvent ˆetre retir´ees de force `a un processus. Elles doivent ˆetre explicitement lib´er´ees par le processus qui les d´etient.
◮ Condition d’attente circulaire : il doit y avoir un cycle d’au moins deux processus, chacun attendant une ressource d´etenue par un autre processus du cycle.
25 / 35
D´etection de l’interblocage
Une ressource pour chaque type
1. Pour chaque nœud, N dans le graphe, suivre les cinq ´etapes suivantes, avec N comme point de d´epart.
2. Initialiser L `a une liste vide et d´esigner tous les arcs comme non marqu´es.
3. Ajouter le nœud en cours `a la fin de la liste L et v´erifier que le nœud apparaˆıt deux fois dans L. Si tel est le cas, le graphe contient un cycle et l’algorithme prend fin.
4.
26 / 35
D´etection de l’interblocage
Plusieurs ressources
Quatre structures sont n´ecessaires pour d´etecter les interblocages.
Ressources existantes (E1,E2, ...,Em)
Matrice des allocations en cours
C11 C12 ... C1m
C21 C22 ... C2m
. . .
. . .
. . .
Cn1 Cn2 ... Cnm
Ressource Disponibles (A1,A2, ...,Am) Matrice des demandes
R11 R12 ... R1m
R21 R22 ... R2m
. . .
. . .
. . .
Rn1 Rn2 ... Rnm
◮ La ligne n correspond `a l’attribution en cours du processus n.
◮ La ligne 2 correspond `a ce dont le processus 2 a besoin.
27 / 35
D´etection de l’interblocage
Algorithme de d´et´ection de l’interblocage
1. On cherche un procesus non marqu´e, Pi, pour lequel laie rang´ee de R est inf´erieur ou ´egale `a A.
2. Si l’on trouve ce processus, on ajoute la ie rang´ee de C `a A, on marque le processus et l’on revient `a l’´etape 1;
3. Si un tel processus n’existe pas, l’algorithme se termine.
Lorsque l’algorithme se termine, tous les processus non marqu´es, s’il y en a, sont en interblocage.
28 / 35
D´etection de l’interblocage
Exemple
Ressources existantes E = (4,2,3,1)
Matrice des allocations en cours
0 0 1 0 2 0 0 1 0 1 2 0
Ressources disponibles A= (2,1,0,0)
Matrice des requˆetes
2 0 0 1 1 0 1 0 2 1 0 0
29 / 35
Pr´evision de l’interblocage
Les trajectoires de ressources
Mettre deux processus sur deux axes diff´erents. Mettre, aussi, deux ressources et montrer qu’on doit raisonner en fonction de
trajectoires.
Algorithme du banquier
◮ Chaque processus doit annoncer le nombre maximum d’instance de la ressource qu’il pourra demander.
◮ Lorsqu’un processus demande une ressource, il peut ˆetre mis en attente.
◮ Quand un processus poss`ede toute les ressources dont il a besoin, il termine son ex´ecution dans un temps fini.
30 / 35
Pr´evision de l’interblocage
Etats sˆurs et non sˆurs´ Etat sˆ´ ur
A Max
(A) 3 9
(B) 2 4
(C) 2 7
Libre : 3
´Etat non sˆur A Max
(A) 4 9
(B) 2 4
(C) 2 7
Libre : 2
31 / 35
D´efinition
C’est un processus l´eger.
Elements partag´es par les threads d’un processus´
◮ Esapce d’adressage
◮ Variables globales
◮ Fichiers ouverts
◮ Processus enfant
◮ Alertes en attente
◮ Signaux et handlers de signaux
◮ Information de d´ecompte
Elements propres `a chaque thread´ Compteur ordianl, Registres, Pile et ´Etat
32 / 35
UNIX
Priorité utilisateur 0 Attente du buffer dique
Attente E/S disque
Priorité utilisateur 1 Priorité utilisateur 2
.. .
.. . maximale
Priorité
Priorité minimale
Attente d’affichage à l’écran
2 1 0
−1
−2
−3
Processus attendant en mode noyau
Processus attendant en mode utilisateur
Processus mis en file de priorité 3
33 / 35
LINUX
34 / 35
Windows
35 / 35