Vous êtes sur la page 1sur 87

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

65

Gestion des processus

La Gestion des Processus

Dfinitions, exemples

2. Politiques d'allocation du processeur

3. Synchronisation des processus

_________________________________________
Telecom-ParisTech BCI Informatique

66

Gestion des processus

Programme : Un programme est une suite fige d'instructions, un ensemble statique. Processus : Plusieurs dfinitions existent ; on peut citer : Un processus est l'instance d'excution d'un programme dans un certain contexte pour un ensemble particulier de donnes. On peut aussi caractriser un processus par les tables qui le dcrivent dans l'espace mmoire rserv au systme d'exploitation (partie rsidente du systme). Ces tables dfinissent les contextes matriel (partie dynamique du contexte : contenu des registres...) et logiciel (partie statique du contexte : droits d'accs aux ressources) dans lesquels travaille ce processus. C'est l'tat de la machine un instant t. Plusieurs processus peuvent excuter paralllement le mme programme (notion de rentrance). L'exemple le plus classique est celui des diteurs (edit, vi, emacs, ...). Chacun des utilisateurs simultans de ces programmes travaille dans son propre contexte (le compteur ordinal de leur contexte mmorise leur position dans l'diteur) sur ses donnes propres (fichiers crs et modifis). Remarques : Les performances d'un mme programme seront donc trs diffrentes suivant qu'il se droule dans le contexte d'un processus plus ou moins privilgi. Et le droulement du mme processus pourra se faire trs diffremment suivant la charge de la machine (non dterminisme des processus). Le remplacement sur les ordinateurs dits personnels (du type IBM-PC) de MSDOS par Windows ou Unix les transforme en machine processus au mme titre que les grands systmes. La comprhension et la matrise du fonctionnement de ces machines demande alors le mme niveau de connaissance que celles des mainframes.

_________________________________________
Telecom-ParisTech BCI Informatique

67

Gestion des processus

Programme vs Processus

Un programme est une suite d'instructions (un objet statique).

Un processus est un programme en excution et son contexte (un objet dynamique). - Dans un environnement monotche la notion de processus est rduite sa plus simple expression. - Dans un systme multitches (ex : Linux, UNIX), plusieurs processus s'excutent "simultanment". Ils doivent se partager l'accs au processeur. - Plusieurs processus peuvent excuter simultanment des copies (ou instances) d'un mme programme. - Plusieurs processus peuvent excuter simultanment la mme copie d'un mme programme : on parle alors de rentrance.

_________________________________________
Telecom-ParisTech BCI Informatique

68

Gestion des processus

Plusieurs processus peuvent se trouver simultanment en cours d'excution (multiprogrammation et temps partag), si un systme informatique ne comporte qu'un seul processeur, alors, un instant donn, un seul processus aura accs ce processeur. En consquence, un programme en excution peut avoir plusieurs tats. Note : La multiprogrammation a t introduite en partie pour viter qu'un programme en attente de fin d'entres-sorties ne monopolise le processeur.

_________________________________________
Telecom-ParisTech BCI Informatique

69

Gestion des processus

tats d'un processus

Dans un systme multitches, plusieurs processus peuvent se trouver simultanment en cours d'excution : ils se partagent l'accs au processeur.

Un processus peut prendre 3 tats : - Etat actif ou lu (running): le processus utilise le processeur. - Etat prt ou ligible (ready: le processus pourrait utiliser le processeur si il tait libre (et si c'tait son tour). - Etat en attente ou bloqu : le processus attend une ressource (ex : fin d'une entre-sortie).

_________________________________________
Telecom-ParisTech BCI Informatique

70

Gestion des processus

Le S.E choisit un processus qui deviendra actif parmi ceux qui sont prts. Tout processus qui se bloque en attente d'un vnement (par exemple l'attente de la frappe d'un caractre au clavier lors d'un scanf) passe dans l'tat bloqu tant que l'vnement attendu n'est pas arriv. Lors de l'occurrence de cet vnement, le processus passe dans l'tat prt. Il sera alors susceptible de se voir attribuer le processeur pour continuer ses activits. Les processus en attente sont marqus comme bloqus dans la table des processus. Ils se trouvent gnralement dans la file d'attente lie une ressource (imprimante, disque, ...). Le changement d'tat d'un processus peut tre provoqu par : - un autre processus (qui lui a envoy un signal, par exemple) - le processus lui-mme (appel une fonction d'entre-sortie bloquante, ...) - une interruption (fin de quantum, terminaison d'entre-sortie, ...) La sortie de ltat actif pour passer ltat prt se produit dans le cas des ordonnancements premptifs lorsquun processus plus prioritaire que le processus actif courant devient prt. Dune manire gnrale : - le passage de ltat actif ltat prt est provoqu par le systme en fonction de sa politique dordonnancement (fin de quantum, premption du processus actif si un processus plus prioritaire devient prt dans le cas des politiques premptives, ), - le passage de ltat actif ltat bloqu est provoqu par le programme excut par le processus. On peut citer : opration P sur un smaphore dont le compteur est ngatif, E/S bloquante du type scanf, oprations sleep ou wait sous UNIX).

_________________________________________
Telecom-ParisTech BCI Informatique

71

Gestion des processus

Transitions entre tats


Les transitions entre tats provoquent le passage d'un tat un autre : Activation Dsactivation (ou premption, ou rquisition) Mise en attente (ou blocage) Rveil prt -> actif. actif -> prt. actif -> en attente. attente -> prt.

activation prt dsactivation actif

rveil en attente

blocage

Les oprations que l'on peut effectuer sur les processus sont : - Cration (ex : fork, cration d'un processus sous UNIX), - Destruction (ex : kill -9, destruction d'un processus sous UNIX), - Activation, dsactivation, blocage(ex : wait sous UNIX),

_________________________________________
Telecom-ParisTech BCI Informatique

72

Gestion des processus

Le systme d'exploitation gre les transitions entre les tats. Pour ce faire il maintient une liste de processus ligibles et une liste de processus en attente. Il doit galement avoir une politique d'activation des processus ligibles (ou politique d'allocation du processeur aux processus) : parmi les processus ligibles, faut-il activer celui qui est ligible depuis le plus de temps, celui qui aurait la plus forte priorit ou celui qui demande l'unit centrale pour le temps le plus court ( supposer que cette information soit disponible)? Les processus sont classs dans la file des processus ligibles par l'ordonnanceur (en anglais scheduler). C'est le distributeur (en anglais dispatcher) qui se chargera de leur activation au moment voulu. Afin d'viter qu'un processus accapare l'unit centrale, le systme d'exploitation dclenche un temporisateur chaque fois qu'il alloue l'unit centrale un processus. Quand ce temporisateur expire, si le processus occupe toujours l'unit centrale (il peut avoir t interrompu par un vnement extrieur ou s'tre mis en attente), le systme d'exploitation va le faire passer dans l'tat prt et activer un autre processus de la liste des processus ligibles. La dsactivation d'un processus peut se faire sur expiration du temporisateur ou sur rquisition (en anglais preemption) du processeur central par un autre processus. Un temporisateur peut tre vu comme un systme de compte rebours ou de sablier. On lui donne une valeur initiale qu'il dcrmente au rythme de l'horloge de l'ordinateur jusqu' atteindre la valeur zro. Ici, la valeur initiale du temporisateur est le quantum de temps allou l'excution du processus. A l'expiration du temporisateur le systme d'exploitation est immdiatement prvenu par une interruption. Nous verrons cette notion plus en dtail dans la suite de ce chapitre. D'autres vnements sont signals au systme par des interruptions : c'est le cas des fins d'entres-sorties. Le systme est ainsi prvenu que le ou les processus qui taient en attente sur cette entre-sortie peuvent ventuellement changer d'tat (tre rveills).

_________________________________________
Telecom-ParisTech BCI Informatique

73

Gestion des processus

Ordonnancement
Dans un systme multitches, le systme d'exploitation doit grer l'allocation du processeur aux processus. On parle d'ordonnancement des processus.
libration d'une ressource diffrentes files de processus bloqus (une par ressource)!! rveil dsactivation blocage processus lu activation files des processus ligibles!! ordonnanceur

Il existe diffrentes politiques d'allocation : - avec ou sans priorit o sans : premier arriv premier servi (first come, first served : FCFS) o avec : la priorit peut tre fixe ou dynamique il peut y avoir premption, ou non

_________________________________________
Telecom-ParisTech BCI Informatique

74

Gestion des processus


Il existe deux contextes : le contexte matriel et le contexte logiciel. Le contexte matriel est la photographie de l'tat des registres un instant t : compteur ordinal, pointeur de pile, registre d'tat qui indique si le processeur fonctionne en mode utilisateur (user) ou en mode noyau (kernel), etc. Le contexte logiciel contient des informations sur les conditions et droits d'accs aux ressources de la machine : priorit de base, quotas sur les diffrentes ressources (nombre de fichiers ouverts, espaces disponibles en mmoires virtuelle et physique...). Chaque fois que le processeur passe l'excution d'un nouveau processus il doit changer les configurations de ses registres. On parle de changement de contexte. Certaines informations (une partie du contexte logiciel) concernant les processus doivent rester en permanence en mmoire dans l'espace systme. D'autres peuvent tre transfres sur disque avec le processus quand celui ci doit passer de la mmoire au disque (quand il n'y a plus de place en mmoire pour y laisser tous les processus, par exemple). Il s'agit en gnral de tout le contexte matriel et d'une partie du contexte logiciel. La plupart des processeurs proposent des instructions spciales de changement de contexte (cf. machines Motorola, Intel, ...). Le bloc de contrle d'un processus (en anglais Process Control Block ou PCB) est une structure de donnes qui contient toutes les informations relatives au contexte d'un processus. Quand un processus est dsactiv ou bloqu, toutes les information relatives son contexte son sauvegardes dans son bloc de contrle. Quand un processus est activ, on restaure son contexte partir de son bloc de contrle.

_________________________________________
Telecom-ParisTech BCI Informatique

75

Gestion des processus

Contexte d'un processus

Par contexte, on entend toutes les informations relatives l'excution d'un processus, telles que : - l'tat des registres (compteur ordinal, registre d'tat, registres gnraux), - les registres dcrivant l'espace virtuel du processus et son espace physique d'implantation, - les pointeurs de piles, - les ressources accdes (ex : droits d'accs, fichiers ouverts), - autres informations (ex : valeur d'horloge). Le contexte doit tre sauvegard quand le processus est dsactiv ou bloqu et doit tre restaur lorsqu'il est ractiv.

_________________________________________
Telecom-ParisTech BCI Informatique

76

Gestion des processus

Les processus sont dcrits dans une table des processus, une entre de cette table donne des informations sur l'tat du processus et permet de retrouver les 3 rgions : code, data et stack, cest--dire instructions, donnes et pile. Seules les informations dont le systme a besoin en permanence sont dans la table des processus, les autres sont dans la u-structure qui peut tre ventuellement passer sur le disque si ncessaire. Sous Unix, chaque commande lance par un utilisateur est excute dans le cadre d'un processus diffrent, fils du shell avec lequel travaille cet utilisateur. Unix alloue 3 rgions en mmoire pour chaque processus: une rgion pour le code excutable (text segment), une rgion pour la pile (stack segment), une rgion pour les donnes (data segment). Unix mmorise pour chaque processus des informations de gestion du type : identificateur du processus (pid) configuration des registres (pile, compteur ordinal), rpertoire courant, fichiers ouverts, Remarque : Le pointeur vers la table des textes (fichiers excutables !) donne, non pas le dbut du programme excuter mais un pointeur vers ce programme, ce qui permet la fois le partage de code excutable par plusieurs processus diffrents et le dplacement de celui-ci par le systme.

_________________________________________
Telecom-ParisTech BCI Informatique

77

Gestion des processus

Processus sous UNIX


A chaque processus correspond une entre dans la table des processus (process table).
Table des processus Entre pour un processus Etat Signaux Table des codes chargs en mmoire
Pteur vers code, ventuellement partag

U-Structure Rsidente en mmoire (Peut tre sur le disque)

Unix alloue 3 rgions en mmoire pour chaque processus :


Code!! Code!! Donnes!! Code!! Donnes!! Donnes!! Pile!! Pile!! Pile!! Pile!! Donnes!! Code!!

Remarque : gestion des processus et gestion mmoire sont troitement lies.

_________________________________________
Telecom-ParisTech BCI Informatique

78

Gestion des processus

Cration d'un processus sous Unix, ralise par l'appel systme fork : duplication des zones mmoires attribues au pre, le pre et le fils ne partagent pas de mmoire, le fils hrite de l'environnement fichiers de son pre, les fichiers dj ouverts par le pre sont vus par le fils. Ces fichiers sont partags. Juste aprs l'excution de fork, la seule information qui diffre dans les espaces mmoire attribus au pre et au fils est le contenu de la case contenant la valeur de retour de fork (ici f). Cette case contient le pid du fils dans l'espace mmoire du pre et contient zro dans l'espace mmoire du fils.

_________________________________________
Telecom-ParisTech BCI Informatique

79

Gestion des processus

Cration de processus sous Unix

Exemple de programme utilisant fork :


int main (){ int f; ; f = fork (); if (f == -1){ printf("Erreur : le processus ne peut etre cree\n") exit (1); } if (f == 0){ printf ("Coucou, ici processus fils\n") ; } if (f != 0){ printf ("Ici processus pere\n") ; } }

La primitive fork permet de crer un processus identique au crateur par copie de ses 3 rgions. Le crateur est appel pre (parent process), et le cr est appel fils (child process).

_________________________________________
Telecom-ParisTech BCI Informatique

80

Gestion des processus

On illustre ci-contre ce qui se passe en mmoire lors de l'appel la fonction fork. Aprs l'appel fork, les espaces d'adressage du pre et du fils contiennent chacun une case dont le nom est f. La case f situe dans l'espace d'adressage du fils contient zro, la case f qui se trouve dans l'espace du pre contient le numro de processus attribu au fils (le pid, pour process identifier). Voici un exemple d'excution d'un programme mettant en vidence ce mcanisme :
$ cat exo1.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main () { int f; f = fork(); printf (" Valeur retournee par la fonction fork: %d\n", (int)f); printf (" Je suis le processus numero %d\n", (int)getpid()); return 0; } $ gcc exo1.c -o exo1

Voici quelques rsultats dexcution :


$ exo1 Valeur retournee par Je suis le processus Valeur retournee par Je suis le processus $ exo1 Valeur retournee par Valeur retournee par Je suis le processus Je suis le processus la fonction fork: 717 numero 716 la fonction fork: 0 numero 717 la fonction fork: 899 la fonction fork: 0 numero 898 numero 899

Les "pid", la filiation des processus, etc peuvent tre observs en utilisant la commande ps.

_________________________________________
Telecom-ParisTech BCI Informatique

81

Gestion des processus

Gestion mmoire lors de fork :


Avant fork :

Table des processus

{ f=fork() Code Donnes } Compteur ordinal

Aprs fork :
Compteur ordinal Table des processus Cellule f Pid_du_fils Donnes du pre Code } Cellule f 0 Donnes du fils { f=fork()

_________________________________________
Telecom-ParisTech BCI Informatique

82

Gestion des processus

On donne ici le schma fonctionnel dcrivant ce qui se passe lors de l'appel aux fonctions fork, exec, wait et exit. Cet enchanement se retrouve lors de l'appel une commande du shell, et presque toutes les applications multitches sous UNIX utilisent ce schma. Ce schma est purement fonctionnel, dans l'implantation les zones de code ne sont pas dupliques, mais partages tant que l'appel exec n'a pas t fait. Les rgions data et stack sont alloues dynamiquement, la demande. A l'excution de la fonction exec la rgion de code est remplace par le fichier fichier et la pile et les donnes sont rinitialises

_________________________________________
Telecom-ParisTech BCI Informatique

83

Gestion des processus

Cration de processus sous Unix

Mcanisme "fork-exec" :
pid P pre fork pid P pre wait pid P pre

Zombie pid F fils pid P pid P pid F pid P exec pid F fils pid F exit pid F fils pid P Programme Donnes Pile Fichiers, en particulier 0, 1, 2 et tubes

Remarque : le segment de code n'est pas dupliqu, mais partag : deux pointeurs diffrents dsignent le mme code excutable. Pas de mmoire commune -> les "IPC System V" offrent mmoire partage et smaphores sous Unix (pas vus en BCI).

_________________________________________
Telecom-ParisTech BCI Informatique

84

Gestion des processus

On donne ci-contre un exemple propos en TP. Ce programme cr un processus qui va faire appel exec pour excuter le fichier dont on lui passe le nom sur la ligne de commande. Lexcutable sappelle fexec. On va excuter la commande fexec exo1. exo1 est le fichier excutable correspondant au fichier source (appel exo1.c) vu prcdemment :
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main (){ pid_t f; f = fork(); printf ("Valeur retournee par la fonction fork: %d\n", (int)f); printf ("Je suis le processus numero %d\n", (int)getpid()); }

_________________________________________
Telecom-ParisTech BCI Informatique

85

Gestion des processus

Cration de processus sous Unix : exemple.


int main (int argc, char *argv[]){ int Pid, Fils ; if (argc != 2){ printf(" Utilisation : %s fic. a executer ! \n", argv[0]); exit(1); } printf("Je suis le pid %d je vais faire fork\n",(int)getpid()); Pid=fork(); switch (Pid){ case 0 : printf("Coucou ! je suis le fils %d\n",(int)getpid()); printf("%d :Code remplace par %s\n",(int)getpid(), argv[1]); execl(argv[1], argv[1], (char *)0); printf(" %d : Erreur lors du exec \n", (int) getpid()); exit (2); case -1 : printf("Le fork n'a pas reussi "); exit (3) ; default : /* le pere attend la fin du fils */ printf("Pere numero %d attend\n ",(int)getpid()); Fils=wait (&Etat); printf("Le fils etait : %d ", Fils); printf(".. son etat etait :%0x (hexa) \n",Etat); exit(0); } } $ fexec exo1 Je suis le pid 5195 je vais faire fork Pere numero 5195 attend Coucou ! je suis le fils 5196 5196 : Code remplace par exo1 Valeur retournee par la fonction fork: 5197 Je suis le processus numero 5196 Le fils etait : 5196 ... son etat etait :0 (hexa) $ Valeur retournee par la fonction fork: 0 Je suis le processus numero 5197

_________________________________________
Telecom-ParisTech BCI Informatique

86

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

87

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

88

Gestion des processus

La Gestion des Processus

1. Dfinitions, exemples

Politiques d'allocation du processeur

3. Synchronisation des processus

_________________________________________
Telecom-ParisTech BCI Informatique

89

Gestion des processus

Un systme propose la multiprogrammation s'il permet de charger simultanment plusieurs processus en mmoire et de leur faire partager le l'unit centrale. Le principe de fonctionnement est de laisser un processus s'excuter jusqu' ce qu'il ait besoin de se mettre en attente (par exemple sur une fin d'entre/sortie). Pendant que ce processus est en attente, un autre processus peut utiliser son tour le processeur. Pour illustrer ce fonctionnement, supposons que l'on ait deux processus A et B excuter, chacun alternant des priodes d'excution dans l'unit centrale et des priodes d'attente. L'excution totale du processus A ncessite 5 units de temps, dont 2 d'attente, celle du processus B ncessite 3 units de temps ,dont 1 d'attente (cf. schma ci-contre). L'excution de ces deux processus sans multiprogrammation prend 8 units de temps. Avec multiprogrammation, elle ne prend plus que 5 units de temps (soit la dure d'excution du processus A), cf. schma ci-contre. Dans la suite de ce chapitre, nous allons montrer le fonctionnement des systmes qui supportent la multiprogrammation. Il s'agira de dcider comment l'unit centrale est partage entre les processus chargs en mmoire. C'est ce que l'on appelle la politique (ou algorithme ) d'allocation du processeur ou encore politique d'ordonnancement. On peut dcider que c'est le premier processus qui est prt s'excuter qui s'excute (politique Premier Arriv Premier Servi). On peut aussi choisir le processus dont la dure d'excution est la plus courte pour lui attribuer l'unit centrale d'abord (politique Plus Court d'Abord). Nous examinerons diffrentes politiques d'allocation dans la suite de ce chapitre. Plusieurs politiques d'allocations tant possibles, la question se pose de savoir comment les valuer. Il faudra tout d'abord s'assurer que la politique ne cre pas de famine (il y a famine si un processus prt s'excuter n'accde pas l'unit centrale en un temps fini). On pourra ensuite utiliser diffrents critres d'valuation tels que le rendement, le temps de service, le temps d'attente et le temps de rponse, qui sont dfinis dans le paragraphe suivant.

_________________________________________
Telecom-ParisTech BCI Informatique

90

Gestion des processus

Intrt du multitches
Exemple dutilisation de la ressource processeur par deux processus A et B
excution excution excution Processus A attente d'E/S Processus B attente d'E/S sans gestion multitches

attente d'E/S

attente d'E/S

avec gestion multitches

Problme : quelle politique d'allocation du processeur au processus (ou ordonnacement ou scheduling) choisir pour utiliser le processeur "au mieux" ?

_________________________________________
Telecom-ParisTech BCI Informatique

91

Gestion des processus


Le rendement d'un systme (en anglais throughput ) est le nombre de processus excuts par unit de temps. Le temps de service (turnaround time ) est le temps qui s'coule entre le moment o un processus devient prt s'excuter et le moment o il finit de s'excuter (temps d'accs mmoire + temps d'attente dans la file des processus ligibles + temps d'excution dans l'unit centrale + temps d'attente + temps d'excution dans les priphriques d'entre/sortie). On utilise en gnral un temps moyen de service calcul pour tous les processus mis en jeu pendant une priode d'observation donne. Le temps d'attente (en anglais waiting time ) est le temps pass dans la file des processus ligibles. On utilise en gnral un temps moyen d'attente calcul pour tous les processus mis en jeu pendant une priode d'observation donne. Le temps de rponse (en anglais response time ) est le temps qui s'coule entre la soumission d'une requte et la premire rponse obtenue. On utilise en gnral un temps moyen de rponse calcul pour tous les processus mis en jeu pendant une priode d'observation donne. Le temps de rponse est utile dans l'valuation des systmes de type transactionnel o il est intressant de mesurer le temps qui s'coule entre le moment o l'utilisateur formule une requte, et celui o la rponse lui parvient. Dconfiture (thrashing) :

Utilisation de l'unit centrale

dconfiture ou thrashing

degr de multiprogrammation

_________________________________________
Telecom-ParisTech BCI Informatique

92

Gestion des processus

Critres d'valuation de performances

Rendement (throughput) : Nombre de travaux excuts par unit de temps. Temps de service (turnaround time): Temps qui s'coule entre le moment o un travail est soumis et o il est excut (temps d'accs mmoire + temps d'attente en file des ligibles + temps d'excution dans le processeur et E/S). Temps d'attente (waiting time) : Temps pass dans la file des processus ligibles. Temps de rponse (response time): Temps qui s'coule entre la soumission d'une requte et la premire rponse obtenue.

_________________________________________
Telecom-ParisTech BCI Informatique

93

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

94

Gestion des processus

First Come First Served (FCFS) Premier Arriv Premier Servi (PAPS)

L'ordre d'excution est identique l'ordre d'arrive dans la file des processus ligibles. Exemple : - On a trois processus 1, 2, 3 excuter de dures d'excution respectives 12, 2 et 2 units de temps.
P1 0 12 P2 14 P3 16

Diagramme de Gant, algorithme PAPS - Si l'ordre d'arrive est 1, 2, 3, les temps de service respectifs sont 12, 14, et 16 units de temps, et le temps de service moyen est de 14 units de temps. - Mais si l'ordre d'arrive est 2,3,1, le temps de service moyen est : (2+4+16) / 3 = 7,3

_________________________________________
Telecom-ParisTech BCI Informatique

95

Gestion des processus

L'exemple trait ci-dessus, suggre qu'il est plus efficace d'excuter les processus qui ont le temps d'excution le plus court, d'abord. C'est le principe de l'algorithme PCA. Cet algorithme donne des performances intressantes. Le problme est de prdire la dure d'excution des processus a priori. Pour y remdier, on peut faire de la prdiction sur la dure d'excution des processus. On peut aussi demander l'utilisateur du systme d'accompagner la demande d'excution de chaque programme d'une dure maximum d'excution autorise (c'est fait dans beaucoup de systmes), et utiliser cette dure comme dure d'excution. L'autre problme est qu'il y a un risque de famine (les processus de longue dure peuvent n'avoir jamais accs l'unit centrale si des processus de courte dure arrivent en permanence).

_________________________________________
Telecom-ParisTech BCI Informatique

96

Gestion des processus

Le Plus Court d'Abord (PCA) Shortest Job First (SJF)

On excute d'abord les processus qui ont le temps d'excution le plus court. Problme : comment prdire la dure d'excution des processus a priori ? Solutions : - faire de la prdiction sur la dure d'excution des processus. - faire accompagner la demande d'excution de chaque programme d'une dure maximum d'excution autorise qui est utilise comme dure d'excution. Autre problme : risque de famine (les processus de longue dure peuvent n'avoir jamais accs au processeur si des processus de courte dure arrivent en permanence).

_________________________________________
Telecom-ParisTech BCI Informatique

97

Gestion des processus

Le principe de l'algorithme de priorit est d'associer une priorit chaque processus. On excute alors les processus de forte priorit avant ceux de plus basse priorit. On peut remarquer que si l'on alloue chaque processus une priorit inversement proportionnelle sa dure, on retrouve l'algorithme PCA. Le problme de l'algorithme de priorit est qu'il y a risque de famine (les processus de faible priorit pouvant n'avoir jamais accs l'unit centrale si des processus de forte priorit arrivent en permanence). Pour y remdier, on peut utiliser une technique dite de vieillissement (en anglais aging). Le principe est d'accrotre la priorit des processus intervalles de temps rguliers, jusqu' ce qu'ils accdent l'unit centrale.

_________________________________________
Telecom-ParisTech BCI Informatique

98

Gestion des processus

Priorit

On associe une priorit chaque processus. Les processus sont excuts par ordre de priorit. Problme : risque de famine. Solution : utiliser une technique dite de vieillissement (aging ) qui augmente priodiquement la priorit des processus. Intrt : certains processus systme doivent tre excuts en priorit.

_________________________________________
Telecom-ParisTech BCI Informatique

99

Gestion des processus

Cet algorithme a t conu pour les systmes temps partag, afin d'obtenir une rpartition quitable de l'unit centrale entre les diffrents processus prsents en mmoire. Son principe est le suivant : le temps est dcoup en tranches ou quantum de temps. Un quantum de temps est allou chaque processus de la file des processus ligibles tour de rle. En pratique, la file des processus ligibles est une FIFO. Les nouveaux processus sont placs la fin de la FIFO. Le systme slectionne le premier processus de la file et arme un temporisateur initialis la dure d'un quantum. Le processus peut quitter l'unit centrale avant chance du temporisateur s'il est termin ou en attente d'vnement. Sinon, chance du temporisateur le systme reoit une interruption et la traite en sauvegardant le contexte du processus et en le plaant la fin de la file des processus ligibles. La qualit de cet algorithme va cependant beaucoup dpendre de la taille choisie pour le quantum : elle doit tre grande par rapport au temps ncessaire pour le changement de contexte des processus.

_________________________________________
Telecom-ParisTech BCI Informatique

100

Gestion des processus

Algorithme du tourniquet (Round Robin)

Le temps est dcoup en tranches ou quantum de temps. Un quantum de temps est allou chaque processus de la file des processus ligibles tour de rle. Conu pour les systmes "temps partag", afin d'obtenir une utilisation quitable du processeur par les processus prsents en mmoire. Exemple : Si le quantum est d'une unit de temps
P1 P2 P3 P1 0 1 2 3 P2 P3 P1 4 5 6 16

- Temps moyen de service : 9 = (5+6+16)/ 3, si tous sont prts au temps 0. (Meilleur que celui donn par l'algorithme FCFS pour le mme ordre d'arriv.) - Performances sensibles la taille choisie pour le quantum.

_________________________________________
Telecom-ParisTech BCI Informatique

101

Gestion des processus

Un processus utilisateur dmarre avec une priorit de base PBase (PBase = 60 ). Toutes les secondes le systme rvalue cette priorit et la pondre de faon favoriser les processus interactifs, cest--dire ceux qui font beaucoup d'entres-sorties. Le mcanisme de pondration est dcrit cidessous. chaque processus est associ un coefficient C dont la valeur est fonction du temps pass dans le processeur la dernire fois qu'il a t actif. C est initialis ainsi : C= temps cpu consomm La valeur C est recalcule toutes les secondes de la faon suivante: C = C /2 et on attribue au processus la priorit P suivante, aprs avoir recalcul C : P = PBase + C Le processus peut modifier sa priorit en ajustant le paramtre nice (valeurs ! 20), sa priorit deviendra: P = PBase + C + (nice -20) De faon gnrale, quelle que soit la manire de rvaluer le coefficient C: P = PBase + f( cpu consomm, temps d'attente) + (nice -20) Lors de son rveil aprs attente sur un vnement E (e/s, pause, ...) un processus se voit attribuer une priorit P = f(E), avec interruption ventuelle du processus actif courant, si ce dernier est moins prioritaire. La priorit d'un processus en attente sur un vnement dpend donc uniquement du type de ce dernier, ceci pose un problme pour la gestion des travaux de type batch. La priorit 25 est la limite qui indique si le processus est interruptible ou non sur rception d'un signal.

_________________________________________
Telecom-ParisTech BCI Informatique

102

Gestion des processus

Politique d'allocation d'Unix recyclage avec priorit variable


Les priorits sont calcules de deux faons diffrentes: - Si un processus est arrt par un vnement E (entre-sortie, fonctions wait, pause ...), il est ractiv avec une priorit qui dpend du type de cet vnement. - La priorit des processus prts est directement lie la consommation de temps cpu et au temps qui s'est coul depuis leur dernier accs au processeur.
p

Running

e/s, wait, pause, ...

Fin de quantum 127 Toutes les secondes : p=p_de_base + f(cpu) 60 En attente sur E Asleep

p=f(E)

Files d'attente des tats "pret"

_________________________________________
Telecom-ParisTech BCI Informatique

103

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

104

Gestion des processus

La Gestion des Processus

1. Dfinitions, exemples

2. Politiques d'allocation du processeur

Synchronisation des processus

_________________________________________
Telecom-ParisTech BCI Informatique

105

Gestion des processus

Le nombre de ressources d'un systme d'exploitation est limit, il n'offre aux utilisateurs, cest--dire aux des processus, qu'un nombre fini de : - priphriques d'entres-sorties : terminaux, imprimantes, - moyens de mmorisation (disques, mmoire centrale), - moyens logiciels (fichiers, base de donnes, ...), Les ressources alloues un seul processus, comme l'cran ou le clavier ne posent pas de problme de gestion. Par contre, sera beaucoup plus dlicate celle des ressources partages entre plusieurs processus. Dans ce cas, les processus vont se trouver en situation de concurrence (race) vis--vis des ressources offertes par le systme d'exploitation, et se posera alors le problme de la synchronisation des actions des diffrents processus sur les ressources partages. La partie de programme dans laquelle se font des accs une ressource partage s'appelle une section critique. Dans la plupart des cas l'accs cette section critique devra se faire en exclusion mutuelle (ce qui implique de rendre indivisible la squence d'instructions composant la section critique).

_________________________________________
Telecom-ParisTech BCI Informatique

106

Gestion des processus

Pourquoi synchroniser les processus ?

Un systme d'exploitation dispose de ressources (imprimantes, disques, mmoire, fichiers, base de donnes, ...), que les processus peuvent vouloir partager.

Processus 1

Ressources du systme

Processus n

Fichiers

Mmoire

Imprimante Processus i

Ils sont alors en situation de concurrence (race) vis--vis des ressources. Il faut synchroniser leurs actions sur les ressources partages.

_________________________________________
Telecom-ParisTech BCI Informatique

107

Gestion des processus

Il n' y a problme de synchronisation que si un des processus impliqus dans l'accs en parallle la ressource partage la modifie. Si les processus en accs simultan sont tous en mode consultation, il n'y a pas de problme de synchronisation puisque la ressource partage n'est pas modifie.

_________________________________________
Telecom-ParisTech BCI Informatique

108

Gestion des processus

Section critique

La partie de programme dans laquelle se font des accs une ressource partage s'appelle une section critique. Dans la plupart des cas l'accs cette section critique devra se faire en exclusion mutuelle, ce qui implique de rendre indivisible ou atomique la squence d'instructions composant la section critique. Exemple : accs une base de donnes. Plusieurs processus peuvent la lire simultanment, mais quand un processus la met jour, tous les autres accs doivent tre interdits.
Processus 1
Programme

Base de donnes

Processus 2 Programme

lecture

criture

sections critiques des processus relativement labase de donnes

_________________________________________
Telecom-ParisTech BCI Informatique

109

Gestion des processus

Comment les processus vont-ils synchroniser leurs accs respectifs aux sections critiques ? Les conditions d'accs une section critique sont les suivantes : - deux processus ne peuvent tre ensemble en section critique, - un processus bloqu en dehors de sa section critique ne doit pas empcher un autre d'entrer dans la sienne, - si deux processus attendent l'entre dans leurs sections critiques respectives, le choix doit se faire en un temps fini, - tous les processus doivent avoir la mme chance d'entrer en section critique, - pas d'hypothses sur les vitesses relatives des processus (indpendance vis vis du matriel).

_________________________________________
Telecom-ParisTech BCI Informatique

110

Gestion des processus

Outils de synchronisation

Matriels : - emploi d'une instruction de type Test and Set qui teste l'tat d'une case mmoire commune aux deux processus et change sa valeur, - inhibition des interruptions (possible seulement dans le cas d'un processus se droulant en mode privilgi). Logiciels : - smaphores (outils logiciels mis la disposition des utilisateurs par le systme d'exploitation), - algorithmes de synchronisation.

_________________________________________
Telecom-ParisTech BCI Informatique

111

Gestion des processus

On utilise une instruction du langage machine parce qu'une instruction de ce niveau est inscable. Lorsque le processeur commence l'excution d'une instruction du langage machine, il va jusqu'au bout mme si une interruption arrive. Les inconvnients de cette technique du TAS sont : - l'attente active (busy waiting) : un processus qui trouve la variable de synchronisation 1 continuera la tester jusqu' ce qu'elle passe 0. Il reste donc actif, alors qu'il pourrait tre suspendu et rang dans une file d'attente. - le fait qu'on ne sait pas qui va prendre la main. Ce problme est li au prcdent. En effet, puisqu'il n'y a pas de gestion de la file des processus en attente sur le passage de la variable 0, le premier qui obtient une rponse satisfaisante au test entre dans sa section critique. Ce n'est pas forcment celui qui la scrute depuis le plus longtemps !

Remarque : cette instruction TAS permet de synchroniser des activits en environnement multiprocesseur. Sur les processeurs SPARC, qui quipent les stations Sun, l'instruction de Test and Set s'appelle ldstub (load store unsigned byte...).

_________________________________________
Telecom-ParisTech BCI Informatique

112

Gestion des processus

Test And Set (TAS REG, X)


Fonctionnement de TAS REG, X :
TAS : Instruction assembleur, donc ininterruptible (atomique) REG=X X=1

Instruction disponible sur presque toutes les machines (mais on n'a pas toujours le droit de l'utiliser). Quand X vaut 1, cela veut dire que la ressource est prise. Utilisation (X est une variable partage par plusieurs processus, elle est initialise zro) :
Boucle :TAS REG, X CMP REG, 1 BEQ Boucle Section critique X=0

_________________________________________
Telecom-ParisTech BCI Informatique

113

Gestion des processus


Dans l'exemple ci-contre deux processus droulent le mme programme. Remarque importante : Autant de quanta passs dans sa section critique par le processus qui a pu y entrer, autant de quanta passs dans la boucle sur TAS par ceux qui essaient d'entrer dans la leur. C'est ce qu'on appelle l'attente active. Soit le scnario suivant : - P1 dmarre le premier, cest--dire le S.E lui attribue d'abord le quantum de temps. - pendant ce quantum, il rentre dans la section critique aprs avoir fait TAS, X vaut donc 1. - la fin de quantum intervient alors que P1 est dans sa section critique - le S.E attribue un quantum P2 qui arrive sur TAS et trouve X un. Il va donc puiser le reste du quantum dans la boucle de l'instruction TAS, - le S.E redonne le quantum P1 qui le passe en entier dans sa section critique - P2 va donc encore puiser un autre quantum dans la boucle de l'instruction TAS, - le S.E redonne le quantum P1 qui sort de sa section critique, met X 0 et termine son quantum, - P2 se voit attribuer un quantum et sort de TAS puisque X vaut 0, et il fait passer X 1, il rentre dans sa section critique, fin de son quantum - si P1 veut maintenant rentrer dans sa section critique, il va tre bloqu sur TAS comme l'a t P2. En fait il s'agit d'une utilisation totalement inefficace du quantum, un gaspillage de la ressource processeur, la plus prcieuse de la machine. Nous verrons que les smaphores permettent d'viter l'attente active. D'autre part, il n'est pas sr que l'accs la ressource se fera dans l'ordre ou les processus ont t bloqus sur le TAS. Cet accs dpend de l'obtention d'un quantum juste aprs que X soit revenu 0.

_________________________________________
Telecom-ParisTech BCI Informatique

114

Gestion des processus

Exemple d'utilisation de TAS

2 processus P1 et P2 excutent des programmes contenant des sections de code critiques vis--vis de l'accs une certaine ressource.
Cellule X commune X=0 Processus 1 Processus 2

Boucle :TAS REG, X CMP REG, 1 BEQ Boucle Section critique X=0

Boucle :TAS REG, X CMP REG, 1 BEQ Boucle Section critique X=0

Inconvnients de cette technique : - Attente active (busy waiting) - On ne sait pas qui va prendre la main.

_________________________________________
Telecom-ParisTech BCI Informatique

115

Gestion des processus

Les oprations Init, P et V sont donnes par le SE qui garantit leur atomicit. Il fait en sorte, que, du point de vue des processus impliqus, ces oprations s'excutent sans tre interrompues. Ceci n'est pas forcment vrai d'un point de vue plus global, en effet le systme peut traiter une autre activit, plus importante pour lui, pendant l'excution de ces fonctions. Remarques : 1- sur la valeur du compteur associ au smaphore : - si il elle est positive, elle indique le nombre de ressources disponibles ou le nombre de processus pouvant avoir accs la ressource, - si elle est ngative, sa valeur absolue donne le nombre de processus bloqus et figurant dans la file dattente. 2- sur les tats des processus : - les processus qui font passer le compteur une valeur ngative en appelant la fonction P, sont rangs dans la file dattente et passent dans l tat : bloqu, - une opration V va sans doute dbloquer un des processus qui se trouvent dans ltat bloqu. On souligne ici que la transition : bloqu -> prt dont bnficie un processus ne peut tre faite par un processus lui-mme actif.

_________________________________________
Telecom-ParisTech BCI Informatique

116

Gestion des processus

SEMAPHORES [Dijkstra 1968]


Un smaphore S associ une ressource R est un objet compos : - d'un compteur S.COMPT qui indique le nombre d'lments disponibles ou le nombre de processus en attente sur R, - d'une file d'attente S.FA o sont chans les processus en attente sur la ressource R.
Smaphore S

P (S) Compteur V (S) Init (S,N) File d'attente

Il est accessible par les oprations atomiques suivantes: Init(S, val) : S.COMPT = val (nombre d'lments de ressource) et S.FA = vide. - P (Passeren) pour demander un lment de la ressource. P(S) : On dcrmente S.COMPT. Si S.COMPT < 0 alors le processus est mis dans S.FA et passe l'tat bloqu, sinon un lment de ressource lui est allou. - V (Vrijgeven) libre un lment de la ressource. V(S) : On incrmente S.COMPT. Si S.COMPT ! 0 alors on sort un processus de S.FA, il passe dans la file des prts et on peut lui allouer un lment de ressource.

_________________________________________
Telecom-ParisTech BCI Informatique

117

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

118

Gestion des processus

Ralisation d'un smaphore

/****************** Init ********************/ Init(Semaphore *Le_Semaphore, int Valeur) { (*Le_Semaphore).Compteur = Valeur ; (*Le_Semaphore).FiledAttente initialise vide } /****************** P ********************/

void P(Semaphore *Le_Semaphore) { (*Le_Semaphore).Compteur=(*Le_Semaphore).Compteur - 1; if ((*Le_Semaphore).Compteur < 0) { mettre le processus dans la file d'attente et le faire passer dans l'tat bloqu } } /****************** V ********************/

void V(Semaphore *Le_Semaphore){ (*Le_Semaphore).Compteur=(*Le_Semaphore).Compteur + 1; if ((*Le_Semaphore).Compteur <= 0){ sortir un processus de la file d'attente et le faire passer dans l'tat prt } }

_________________________________________
Telecom-ParisTech BCI Informatique

119

Gestion des processus


Cet exemple reprend celui du TAS, mais cette fois, la synchronisation est faite par smaphore. On reprend le mme scnario, cest--dire que P1 dmarre le premier : - pendant son quantum, il fait P(S), le compteur du smaphore passe zro, ce qui n'est pas ngatif et P1 peut donc rentrer dans sa section critique, - la fin de quantum intervient alors que P1 est dans sa section critique - le S.E attribue un quantum P2 qui arrive sur P(S) et trouve le compteur zro. Ce compteur passe donc -1, le processus P2 est mis dans l'tat bloqu et rang dans la file d'attente de S. Le systme choisit alors le processus prt le plus prioritaire et lui attribue un quantum. Il n'y a pas gaspillage de la partie restante du quantum. - le S.E redonnera un quantum P1 qui le passe en entier dans sa section critique, - P2 ne se voit pas proposer de quantum, puisqu'il n'est pas dans la file d'attente des prts, mais dans l'tat bloqu et dans la file d'attente de S. Il n'y a plus attente active. - le S.E redonne le quantum P1 qui sort de sa section critique et fait V(S). Le compteur de S passe zro, on sort P2 de la file d'attente et on le met dans la file d'attente des prts. P1 termine son quantum, - P2 se voit attribuer un quantum de temps et rentre dans sa section critique, fin de son quantum de temps, - si P1 veut maintenant rentrer dans sa section critique, il va passer dans l'tat bloqu sur P(S) comme l'avait fait P2. Remarques : Il n'y a plus gaspillage de quantums par le processus qui n'a pas accs sa section critique. Il passe dans l'tat bloqu, le S.E ne lui offre donc plus de quantums. Si P1 et P2 sont seuls sur la machine : - dans le cas de TAS, P2 ralentit P1 dans sa progression dans sa section critique - dans le cas smaphore, P2 est bloqu, les quantums qui lui auraient t attribus sont donns P1, qui progresse plus vite, donc P2 sera bloqu moins longtemps !

_________________________________________
Telecom-ParisTech BCI Informatique

120

Gestion des processus

Verrou
Un smaphore dont le compteur est initialis un s'appelle un verrou : quand un processus est dans sa section critique, il empche tous les autres d'entrer dans la leur.
Init (S,1) Processus 1 Processus 2

P(S) Section critique V(S)

P(S) Section critique V(S)

Remarque : lexclusion mutuelle est un exemple de comptition entre processus pour laccs aux ressources, on va voir quil peut y avoir des interactions en coopration.

_________________________________________
Telecom-ParisTech BCI Informatique

121

Gestion des processus

Un producteur dpose des messages dans un tampon, ceux-ci sont retirs par un consommateur. Les retraits et dpts peuvent tre simultans. Le producteur doit vrifier que le tampon comporte des cases libres avant d'y dposer un message et le consommateur doit s'assurer qu'il y a bien des messages retirer. Si ces conditions ne sont pas requises, le processus (producteur ou consommateur) doit se mettre en attente. Deux smaphores sont utiliss : - S1 qui indique les ressources disponibles pour le producteur, cest-dire le nombre de cases vides, - S2 qui indique les ressources disponibles pour le consommateur, cest-dire le nombre de cases pleines, Ce type de synchronisation est mis en uvre dans le systme Unix sous forme de la primitive pipe. Celle-ci cre un fichier (appel pipe, ou tube en franais) double accs qui ne peut tre lu que si l'on a dj crit dedans et dans lequel on ne peut crire que s'il y a des cases libres. Le systme d'exploitation se charge de la gestion des accs, vitant l'utilisateur le maniement, dlicat, de smaphores. L'utilisateur voit le tampon commun aux processus comme un fichier normal, il sera ouvert par une commande open et manipul avec des read et write. Des mcanismes de ce type peuvent tre fournis par le langage. On citera Ada et Java qui proposent des outils de synchronisation.

_________________________________________
Telecom-ParisTech BCI Informatique

122

Gestion des processus

Producteur et consommateur
Un producteur dpose des messages dans un tampon ; un consommateur retire ces messages du tampon. Le producteur et le consommateur doivent synchroniser leurs actions.

Dpts du producteur Init(S1,N) Init(S2,0) Producteur P(S1) crire (case(i)) i:=suiv_prod(i) V(S2) Consommateur P(S2) lire (case(i)) i:=suiv_cons(i) V(S1)

Retraits du consommateur

2 smaphores sont utiliss : - S1 indique les ressources disponibles pour le producteur (nombre de cases vides), - S2 indique les ressources disponibles pour le consommateur (nombre de cases pleines).
Remarques: Les deux processus sont en situation de coopration. Plus les vitesses des processus diffrent, plus la taille du tampon est grande.

_________________________________________
Telecom-ParisTech BCI Informatique

123

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

124

Gestion des processus

Lecteur et crivain
Il sagit de grer laccs un fichier partag. Plusieurs consultations (lectures) en parallle sont possibles, mais partir du moment o une mise jour (une criture) est en cours, tous les autres accs, que ce soit en lecture ou en criture, doivent tre interdits.

Scnario pour les lecteurs : Le premier lecteur interdit laccs aux crivains, mais permet cet accs tous les lecteurs qui se prsentent. Le dernier libre la ressource. Scnario pour les crivains : Quand un crivain arrive, il interdit tout autre accs la ressource, il la libre quand il a termin les modifications.
Init(X, 1)

Programme pour les lecteurs


Nb_Lect = Nb_Lect + 1; si (Nb_Lect == 1) P(X); Consulter

Programme pour les crivains


P(X); Modifier V(X);

Nb_Lect = Nb_Lect - 1; si (Nb_Lect == 0) V(X);

_________________________________________
Telecom-ParisTech BCI Informatique

125

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

126

Gestion des processus

Lecteur et crivain
La solution prcdente nest pas correcte : laccs la variable partage par les lecteurs Nb_Lect nest pas contrl, on ajoute un verrou appel XL:
Programme pour les lecteurs
P(XL); Nb_Lect = Nb_Lect + 1; si (Nb_Lect == 1) P(X); V(XL); Consulter P(XL); Nb_Lect = Nb_Lect - 1; si (Nb_Lect == 0) V(X); V(XL);

Programme pour les crivains


P(X); Modifier V(X);

Linconvnient de cette solution est quelle va sans doute provoquer la famine (starvation) pour les crivains : ds quun lecteur est arriv, il permet laccs un flux ininterrompu de lecteurs. Un crivain voit son tour passer aprs celui du dernier lecteur.

_________________________________________
Telecom-ParisTech BCI Informatique

127

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

128

Gestion des processus

Lecteur et crivain
On va modifier le scnario prcdent pour quun crivain puisse accder la ressource le plus tt possible, on ajoute un verrou S:
Programme pour les lecteurs
P(S); V(S); P(SL); Nb_Lect = Nb_Lect + 1; si (Nb_Lect == 1) P(X); V(SL); Consulter P(SL); Nb_Lect = Nb_Lect - 1; si (Nb_Lect == 0) V(X); V(SL); V(X); P(X); Modifier V(S) /* Permettre laccs au suivant */ /* Si un ecrivain arrive, le laisser passer */

Programme pour les crivains


P(S); /* Interdire les accs aux lecteurs et ecrivains suivants */

Les lecteurs sont encore prioritaires, mais il ny a plus famine pour les crivains : un crivain peut maintenant interrompre le flot des lecteurs et interdire ceux qui le suivent de lui prendre son tour.

_________________________________________
Telecom-ParisTech BCI Informatique

129

Gestion des processus


P1 et P2 sont les seuls processus qui utilisent X1 et X2. Scnario posant un problme : - P1 fait P(X1), le compteur de X1 passe zro, puis il s'arrte (fin de quantum avant P(X2), - P2 fait P(X2), le compteur de X2 passe zro, puis il s'arrte (fin de quantum avant P(X1), - P1 reprend la main et fait P(X2), le compteur de X2 passe -1, P1 passe donc bloqu, - P2 reprend la main et fait P(X1), le compteur de X1 passe -1, P2 passe donc bloqu, - P1 et P2 sont tous deux bloqus, ce qui n'est pas grave, et mme normal puisque les ressources auxquelles ils veulent faire accs sont dj prises. Mais qui peut dbloquer P1 ? C'est P2. Dans quel tat est P2 ? Il est bloqu. Par qui ? Par P1, l est le problme : P1 et P2 sont bloqus et ne peuvent tre dbloqus que l'un par l'autre. Ils sont interbloqus. Pour rsoudre le problme de l'interblocage on peut demander aux dveloppeurs d'utiliser les smaphores dans l'ordre de leur numrotation, dans notre exemple, le processus 2 est alors bloqu (il doit faire P(X2) APRES P(X1) et il n'y a plus interblocage. Il faut faire :

Certains systmes, comme UNIX, proposent des oprations P et V sur plusieurs smaphores la fois. On peut ainsi remplacer les deux suites P(X1), P(X2) et P(X1), P(X2) par les deux commandes atomiques P(X1, X2) et V(X1, X2).

_________________________________________
Telecom-ParisTech BCI Informatique

130

Gestion des processus

Problmes dans l'utilisation des smaphores

Interblocage :

Init(X1,1) Init(X2,1) Processus 1 P(X1) P(X2) Section critique V(X2) V(X1) Processus 2 P(X2) P(X1) Section critique V(X1) V(X2)

Famine, cest--dire l'attente indfinie dans la file d'attente. Attention la taille des sections critiques qui doit tre la plus petite possible.

_________________________________________
Telecom-ParisTech BCI Informatique

131

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

132

Gestion des processus

Du bon fonctionnement des outils de gestion de la concurrence


Deux proprits respecter : 1. sret (safety), deux processus ne doivent pas se trouver ensemble en section critique. Il faudra assurer lexclusion mutuelle. 2. vivacit (liveness), qui impose des contraintes de : a. progression : il faudra viter linterblocage, b. quit : pas de famine, attente borne. Toute demande sera satisfaite, ou encore : tout processus qui veut entre en section critique devra pouvoir le faire Les algorithmes sont des compromis entre sret et vivacit.

_________________________________________
Telecom-ParisTech BCI Informatique

133

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

134

Gestion des processus

Plan

Solutions logicielles - Divers algorithmes, - Lalgorithme de Dekker : le premire solution, - Lalgorithme de Peterson : une solution lgante,

_________________________________________
Telecom-ParisTech BCI Informatique

135

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

136

Gestion des processus

Solutions logicielles

Nous allons prsenter de faon progressive le premier algorithme rsolvant le problme de lexclusion mutuelle pour deux processus, il sagit de lalgorithme de Dekker. Limitations : On suppose que les oprations de lecture, dcriture et de test dun mot en mmoire sont atomiques. Rappel des conditions d'accs une section critique : exclusion mutuelle pour laccs la section critique, pas d'interblocage, pas d'attente infinie pour entrer dans la section critique, accs quitable.

_________________________________________
Telecom-ParisTech BCI Informatique

137

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

138

Gestion des processus

Version 1
On considre deux processus Pi et Pj. On suppose ici : 3. i = 0, 4. j = 1, la variable partage tour indique lequel des deux processus peut entrer en section critique. Programme excut par le processus Pi
... ... /* attendre */ while (tour != i) {} /* debut de section critique */ ... ... /* fin de section critique */ tour = j; ...

Problme : Les processus ne peuvent entrer en S.C. qu' tour de rle, tour impose un ordre (pas daccs quitable).

_________________________________________
Telecom-ParisTech BCI Informatique

139

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

140

Gestion des processus

Version 2
Il faudrait connatre l'tat des processus pour savoir lequel d'entre eux peut entrer en S.C.. On remplace alors la variable unique par un tableau partag : Etat[2] dont les lments sont initialiss zro , la valeur 1 signifie que Pi est en S.C. Programme excut par le processus Pi
... ... /* attendre que l'autre processus sorte. */ while (Etat[j] == 1) {} Etat[i] = 1; /* debut de section critique */ ... ... /* fin de section critique */ Etat[i] = 0; ... ...

Problme : Les deux processus Pi et Pj peuvent tre ensemble en S.C. Pour viter cela, on va positionner Etat[i] avant d'entrer en S.C..

_________________________________________
Telecom-ParisTech BCI Informatique

141

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

142

Gestion des processus

Version 3
La valeur 1 dans la case Etat[i] signifie que Pi veut entrer en S.C.. Programme excut par le processus Pi
... ... /* Le processus indique quil va entrer en S.C. */ Etat[i] = 1; /* Si lautre fait de mme, alors attendre */ while(Etat[j] == 1){ } /* debut section critique */ ... ... /* fin de section critique */ Etat[i] = 0; ... ...

Problme : Lexclusion mutuelle est garantie, mais interblocage possible.

_________________________________________
Telecom-ParisTech BCI Informatique

143

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

144

Gestion des processus

Version 4
Programme excut par le processus Pi
... ... /* i veut entrer en S.C. */ Etat[i] = 1; /* j veut-il entre en section critique ? */ while(Etat[j] == 1) { /* oui, le laisser passer */ Etat[i] =0; /* attendre (cf. algo. 2) */ while (Etat[j] == 1) { }; /* puis redemander l'accs */ Etat[i] = 1; } /* debut de section critique */ ... ... /* fin de section critique */ Etat[i] = 0; ... ...

Interblocage possible (excutions pas pas parallles et identiques) bien que trs peu probable.

_________________________________________
Telecom-ParisTech BCI Informatique

145

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

146

Gestion des processus

Algorithme de Dekker (1)


On r-introduit la variable tour qui impose un ordre pour briser la symtrie : Programme excut par le processus Pi
... ... /* i veut entrer en S.C. */ Etat[i] = 1; while (Etat[j] == 1) { if (tour == j) { Etat[i] = 0; /* attendre que l'autre sorte de SC */ while(tour == j) { }; Etat[i] = 1; } } /* debut de section critique */ ... ... /* fin de section critique */ tour = j; Etat[i] = 0; ... ...

Ligne ajoute la version 4 : if (tour == j)

_________________________________________
Telecom-ParisTech BCI Informatique

147

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

148

Gestion des processus

Algorithme de Dekker (2)


Exclusion mutuelle garantie : 1- Pi ne va en SC que si Etat[j]=0, 2- Pi ne teste Etat[j] que si Etat[i]=1, donc Pi n'entre en SC qu'avec : Etat[i] =1 et Etat[j] =0.

Pas d'interblocage : Si Pi et Pj veulent entrer en SC et que tour=i : 1- Pi attend que Etat[j] = 0 2- Pj met Etat[j] 0 et attend que tour change, 3- Pj entre en SC.

tour ne change qu'aprs passage en section critique.

_________________________________________
Telecom-ParisTech BCI Informatique

149

Gestion des processus

_________________________________________
Telecom-ParisTech BCI Informatique

150

Gestion des processus

Algorithme de Peterson (1981)


Programme excut par le processus Pi
... /* i veut entrer en S.C. */ Etat[i] = 1; /* mais il laisse passer j, si j veut entrer */ tour = j; /* attendre que Pj sorte de SC */ while ((Etat[j] == 1) && (tour == j)) {}; /* debut de S.C. */ ... ... /* fin de section critique */ Etat[i] = 0; ...

Exclusion mutuelle garantie, pas dinterblocage et attente limite, en effet : - interblocage ssi (ce qui est impossible) :
(Etat[j] = 1 ET tour = j) ET (Etat[i] = 1 ET tour = i)

-les deux processus sont ensemble en SC ssi (ce qui est impossible) :
(Etat[j] = 0 OU tour = i) ET (Etat[i] = 0 OU tour = j)

Linitialisation de tour est indiffrente : suivant lordonnancement, tour donne le droit dentrer lun ou lautre des processus.

_________________________________________
Telecom-ParisTech BCI Informatique

151