Académique Documents
Professionnel Documents
Culture Documents
_________________________________________
Telecom-ParisTech BCI Informatique
65
Dfinitions, exemples
_________________________________________
Telecom-ParisTech BCI Informatique
66
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
Programme vs Processus
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
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
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
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
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
75
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
78
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
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
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
Les "pid", la filiation des processus, etc peuvent tre observs en utilisant la commande ps.
_________________________________________
Telecom-ParisTech BCI Informatique
81
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
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
86
_________________________________________
Telecom-ParisTech BCI Informatique
87
_________________________________________
Telecom-ParisTech BCI Informatique
88
1. Dfinitions, exemples
_________________________________________
Telecom-ParisTech BCI Informatique
89
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
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
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
dconfiture ou thrashing
degr de multiprogrammation
_________________________________________
Telecom-ParisTech BCI Informatique
92
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
_________________________________________
Telecom-ParisTech BCI Informatique
94
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
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
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
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
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
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
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
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
Running
Fin de quantum 127 Toutes les secondes : p=p_de_base + f(cpu) 60 En attente sur E Asleep
p=f(E)
_________________________________________
Telecom-ParisTech BCI Informatique
103
_________________________________________
Telecom-ParisTech BCI Informatique
104
1. Dfinitions, exemples
_________________________________________
Telecom-ParisTech BCI Informatique
105
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
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
109
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
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
114
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
118
/****************** 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
_________________________________________
Telecom-ParisTech BCI Informatique
120
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
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
124
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)
_________________________________________
Telecom-ParisTech BCI Informatique
125
_________________________________________
Telecom-ParisTech BCI Informatique
126
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);
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
_________________________________________
Telecom-ParisTech BCI Informatique
128
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 */
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
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
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
_________________________________________
Telecom-ParisTech BCI Informatique
132
_________________________________________
Telecom-ParisTech BCI Informatique
133
_________________________________________
Telecom-ParisTech BCI Informatique
134
Plan
Solutions logicielles - Divers algorithmes, - Lalgorithme de Dekker : le premire solution, - Lalgorithme de Peterson : une solution lgante,
_________________________________________
Telecom-ParisTech BCI Informatique
135
_________________________________________
Telecom-ParisTech BCI Informatique
136
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
_________________________________________
Telecom-ParisTech BCI Informatique
138
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
_________________________________________
Telecom-ParisTech BCI Informatique
140
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
_________________________________________
Telecom-ParisTech BCI Informatique
142
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; ... ...
_________________________________________
Telecom-ParisTech BCI Informatique
143
_________________________________________
Telecom-ParisTech BCI Informatique
144
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
_________________________________________
Telecom-ParisTech BCI Informatique
146
_________________________________________
Telecom-ParisTech BCI Informatique
147
_________________________________________
Telecom-ParisTech BCI Informatique
148
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.
_________________________________________
Telecom-ParisTech BCI Informatique
149
_________________________________________
Telecom-ParisTech BCI Informatique
150
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