Cours Système D'exploitation
Cours Système D'exploitation
Systme d'exploitation II 2
Cours 1 :
Les logiciels peuvent tre classs en deux catgories : - les programmes d'application des utilisateurs - les programmes systme qui permettent le fonctionnement de l'ordinateur. Parmi ceux-ci, le systme d'exploitation (SE dans la suite).
Le SE soustrait le matriel au regard du programmeur et offre une prsentation agrable des fichiers. Un SE a ainsi deux objectifs principaux :
- prsentation : Il propose l'utilisateur une abstraction plus simple et plus agrable que le matriel : une machine virtuelle
- gestion : il ordonne et contrle l'allocation des processeurs, des mmoires, des icnes et fentres, des priphriques, des rseaux entre les programmes qui les utilisent. Il assiste les programmes utilisateurs. Il protge les utilisateurs dans le cas d'usage partag.
- gestion de la mmoire principale et des mmoires secondaires, - excution des E/S faible dbit (terminaux, imprimantes) ou haut dbit (disques, bandes), - multiprogrammation, temps partag, paralllisme : interruption, ordonnancement, rpartition en mmoire, partage des donnes - lancement des outils du systme (compilateurs, environnement utilisateur,...) et des outils pour l'administrateur du systme (cration de points d'entre, modification de privilges,...), - lancement des travaux, - protection, scurit ; facturation des services, - rseaux
Systme d'exploitation II 3
L'interface entre un SE et les programmes utilisateurs est constitue d'un ensemble d'instructions tendues, spcifiques d'un SE, ou appels systme. Gnralement, les appels systme concernent soit les processus, soit le systme de gestion de fichiers (SGF).
transactions: ex:
systmes
Avec la grande diffusion des micro-ordinateurs, l'volution des performances des rseaux de tlcommunications, deux nouvelles catgories de SE sont apparus :
- les SE en rseaux : ils permettent partir d'une machine de se connecter sur une machine distante, de transfrer des donnes. Mais chaque machine dispose de son propre SE
- les SE distribus ou rpartis : l'utilisateur ne sait pas o sont physiquement ses donnes, ni o s'excute son programme. Le SE gre l'ensemble des machines connectes. Le systme informatique apparat comme un mono-processeur.
- Les SE embarques
lectronique et informatique autonome, qui est ddi une tche bien prcise. Ses ressources disponibles sont gnralement limites. Cette limitation est gnralement d'ordre spatial (taille limite) et nergtique (consommation restreinte).
Systme d'exploitation II 4
Les processus concurrents sexcutant dans le systme dexploitation peuvent tre des processus coopratifs ou indpendants. Un systme d'exploitation dispose de ressources (imprimantes, disques, mmoire, fichiers, base de donnes, ...), que les processus peuvent vouloir partager.
Ils sont alors en situation de concurrence (race) vis--vis des ressources. Il faut synchroniser leurs actions sur les ressources partages.
2. Actualit de la concurrence
La concurrence entre processus est un sujet de grande actualit pour plusieurs raisons. 1. L'volution des systmes personnels : Dos, Windows, Mac, fait passer ceux-ci d'une organisation mono processus des systmes multiprogramms. 2. Les systmes classiques, MVS, AS 400 (IBM), VMS (Digital) , Solaris (Sun), Unix, Linux, qui sont multiprogramms ds leur conception continuent se dvelopper et sont de plus en plus souvent multiprocesseurs. 3. Les applications temps rel, embarques, enfouies, se dveloppent et requirent des systmes temps rel multiprocessus (on dit, dans ce mtier, des excutifs multitches) 4. Les applications rparties se multiplient et chacun peut dsormais crire ou utiliser des processus concurrents distance avec des applets ou des servlets Java. Les systmes d'architecture client-serveur, les architectures rparties base d'objets ou de
Systme d'exploitation II 5
composants vont aussi dans le sens d'une augmentation du nombre des processus concurrents. 5. Enfin, les clients nomades, les plates-formes mobiles, ne peuvent fonctionner sans utiliser des processus mandataires ou proxys qui sont leurs reprsentants sur les serveurs fixes de ressource. La connaissance des bons comportements et des bonnes mthodes de programmation et d'utilisation de ces processus concurrents est indispensable.
3. Les processus
Un processus est un programme qui s'excute, ainsi que ses donnes, sa pile, son compteur ordinal, son pointeur de pile et les autres contenus de registres ncessaires son excution.
Dans une entit logique unique, gnralement un mot, le SE regroupe des informations-cls sur le fonctionnement du processeur : c'est le mot d'tat du processeur PSW, Il comporte gnralement :
- la valeur du compteur ordinal - des informations sur les interruptions (masques ou non) - le privilge du processeur (mode matre ou esclave) - etc.... (format spcifique un processeur)
A chaque instant, un processus est caractris par son tat courant : c'est l'ensemble des informations ncessaires la poursuite de son excution (valeur du compteur ordinal, contenu des diffrents registres,
informations sur l'utilisation des ressources). A cet effet, tout processus, on associe un bloc de contrle de processus (BCP). Il comprend gnralement :
- une copie du PSW au moment de la dernire interruption du processus - l'tat du processus : prt tre excut, en attente, suspendu, ... - des informations sur les ressources utilises
Systme d'exploitation II 6
- mmoire principale - temps d'excution - priphriques d'E/S en attente - files d'attente dans lesquelles le processus est inclus, etc... - et toutes les informations ncessaires pour assurer la reprise du processus en cas d'interruption
Les BCP sont rangs dans une table en mmoire centrale cause de leur manipulation frquente.
5. Les ressources
On appelle ressource tout ce qui est ncessaire l'avancement d'un processus (continuation ou progression de l'excution) : processeur, mmoire, priphrique, bus,
rseau, compilateur, fichier, message d'un autre processus, etc... Un dfaut de ressource peut provoquer la mise en attente d'un processus.
Un processus demande au SE l'accs une ressource. Certaines demandes sont implicites ou permanentes (la ressource processeur). Le SE alloue une ressource un
processus. Une fois une ressource alloue, le processus a le droit de l'utiliser jusqu' ce qu'il libre la ressource ou jusqu' ce que le SE reprenne la ressource (on parle en ce cas de ressource premptible, de premption).
plusieurs processus
locale : utilise par un seul processus. Ex.: fichier temporaire, variable de programme. commune ou partageable . Ex. : disque, imprimante, fichier en lecture. Une ressource peut possder un ou plusieurs points d'accs un moment donn :
Systme d'exploitation II 7
* un seul :(accs exclusif) si elle ne peut tre alloue plus d'un processus la fois. On parle de ressource critique Ex: un lecteur de disquettes partag entre plusieurs utilisateurs. Une zone mmoire partage en criture entre plusieurs utilisateurs. * plusieurs points d'accs: (accs partag) par exemple, un fichier en lecture utilisable par plusieurs processus.
Le SE doit contrler l'utilisation des ressources dans une table indiquant si la ressource est disponible ou non, et, si elle est alloue, quel processus. A chaque ressource est associe une file d'attente, pointe par la table prcdente, contenant les BCP des processus qui l'attendent. Chaque fois qu'un nouveau processus fait une demande de la ressource et que cette dernire n'est pas disponible, son BCP est ajout en queue de la file d'attente. Lorsqu'une demande survient de la part d'un processus plus prioritaire que celui qui utilise la ressource, on empile l'tat de la ressource, on la retire au processus en cours pour l'attribuer par rquisition au processus prioritaire. Dans le cadre des ressources limites gres par le systme, il n'est pas toujours possible d'attribuer chaque processus, ds sa cration, toutes les ressources ncessaires. Il peut y avoir blocage .
6. L'ordonnancement
On appelle ordonnancement la stratgie d'attribution des ressources aux processus qui en font la demande. Diffrents critres peuvent tre pris en compte :
- temps moyen d'excution minimal - temps de rponse born pour les systmes interactifs - taux d'utilisation lev de l'UC - respect de la date d'excution au plus tard, pour le temps rel, etc...
Systme d'exploitation II 8
Cours 3 :
1 Paralllisme
Processus et Paralllisme
On appelle simultanit l'activation de plusieurs processus au mme moment. Si le nombre de processeurs est au moins gal au nombre de processus, on parle de simultanit totale ou vraie, sinon de pseudo-simultanit. pseudo-simultanit : c'est par exemple l'excution enchevtre de plusieurs processus sur un seul processeur. La simultanit est obtenue par commutation temporelle d'un processus l'autre sur le processeur. Si les basculements sont suffisamment frquents, l'utilisateur a l'illusion d'une simultanit totale.
Dans le langage de la programmation structure, on encadre par les mots-cls parbegin et parend les sections de tches pouvant s'excuter en parallle ou simultanment. Ex :
2.Etats de processus :
De faon simplifie, on peut imaginer un SE dans lequel les processus pourraient tre dans trois tats :
- lu : en cours d'excution. Un processus lu peut tre arrt, mme s'il peut poursuivre son excution, si le SE dcide d'allouer le processeur un autre processus
- bloqu : il attend un vnement extrieur pour pouvoir continuer (par exemple une ressource; lorsque la ressource est disponible, il passe l'tat "prt") - prt : suspendu provisoirement pour permettre l'excution d'un autre processus La gestion des interruptions, la suspension et la relance des processus sont l'affaire de l'ordonnanceur.
Systme d'exploitation II 9
On appelle tche une unit lmentaire de traitement ayant une cohrence logique. Si l'excution du processus P est constitue de l'excution squentielle des tches T1, T2,..., Tn, on crit : P = T1 T2...Tn A chaque tche Ti, on associe sa date de dbut ou d'initialisation d i et sa date de terminaison ou de fin fi. La relation Ti < Tj entre tches signifie que fi infrieur dj entre dates. Si on n'a ni Ti < Tj , ni Tj < Ti, alors on dit que Ti et Tj sont excutables en parallle. Une relation de prcdence peut tre reprsente par un graphe orient. Par exemple, la chane de tches S = (( T1, T2, T3), (Ti < Tj pour i infrieur j)) a pour graphe :
T1
T2
T3
exemple 1 :
Systme d'exploitation II 10
lir e a lir e b
c <- a * a
d <- b * b
e <- c + d
soit
debut parbegin lire a lire b parend parbegin ca*a db*b parend ec+d fin
exemple 2 : peut-on reprsenter le graphe suivant de tches par un programme parallle utilisant parbegin et parend ? exemple 2 : (systme S0)
T1 T2 T3 T4 T5 lire X lire Z X X+Z YX+Z afficher Y
Systme d'exploitation II 11
On appelle processus indpendants des processus ne faisant appel qu' des ressources locales. On appelle processus parallles pour une ressource des processus pouvant utiliser simultanment cette ressource. Lorsque la ressource est critique (ou en accs exclusif), on parle d'exclusion mutuelle (par exemple, sur une machine monoprocesseur, l'UC est une ressource en exclusion mutuelle).
Def.: On appelle section critique la partie d'un programme o la ressource est seulement accessible par le processus en cours. Il faut s'assurer que deux processus n'entrent jamais en mme temps en section critique sur une mme ressource. Exemple : la mise jour d'un fichier (deux mises jour simultanes d'un mme compte client).La section critique comprend : - lecture du compte dans le fichier, - modification du compte, - rcriture du compte dans le fichier.
Programmation multitache : Definitions : Def.: programme multitche : ensemble de plusieurs processus squentiels dont les excutions sont imbriques. Def.: On appelle interblocage la situation o tous les processus sont bloqus. Ex.: chacun attend que l'autre lui envoie un message pour continuer. Ex.: chacun excute une boucle d'attente en attendant une ressource disque indisponible. C'est la situation d'un carrefour avec priorit droite pour tous et des arrives continues de vhicules. Def.: on appelle privation la situation o quelques processus progressent normalement en
bloquant indfiniment d'autres processus. C'est la situation d'un carrefour giratoire avec 4 voies d'accs dont deux ont des arrives continues de vhicules.
Systme d'exploitation II 12
Rgle 1: les processus doivent tre en relation fortuite. La dfaillance d'un processus en dehors d'une section critique ne doit pas affecter les autres processus. Rgle 2: un programme multitche est juste s'il rpond aux critres de scurit comme
l'exclusion mutuelle.
Rgle 3 : Un programme multitche est juste s'il rpond aux critres de viabilit comme la non privation ou le non interblocage. Les techniques de synchronisation entre processus concurrents peuvent tre classs en deux catgories : par attente active et par attente passive.
Systme d'exploitation II 13
Systme d'exploitation II 14
reste1; } } /*********************************************************************/ p2() { for (; ; ) { while (tour == 1); crit2; tour = 1; reste2 ; } } /* on redonne l'autorisation P 1 */ /* c'est au tour de P 1 ; P2 attend */
Avantages : - l'exclusion mutuelle est satisfaite. Pour chaque valeur de tour , une section critique et une seule peut s'excuter, et ce jusqu' son terme.
- l'interblocage est impossible puisque tour prend soit la valeur 1, soit la valeur 2 (Les deux processus ne peuvent pas tre bloqus en mme temps ).
- la privation est impossible: un processus ne peut empcher l'autre d'entrer en section critique puisque tour change de valeur la fin de chaque section critique. Inconvnients : - P1 et P2 sont contraints de fonctionner avec la mme frquence d'entre en section critique - Si l'excution de P2 s'arrte, celle de P1 s'arrte aussi: le programme est bloqu. La dpendance de fonctionnement entre P1 et P2 leur confre le nom de coroutines.
Systme d'exploitation II 15
Algorithme : int c1, c2 ; /* cls de P1 et P2 - valeur 0: le processus est en section critique */ /* main () { c1=c2 = 1; parbegin p1() ; p2 (); parend } /********************************************************************/ p1 () { for ( ; ; ) { while (c2 == 0); c1 = 0 crit1 ; c1 = 1; reste1 ; } } /********************************************************************/ p2 () { for ( ; ; ) { while (c1 == 0); c2 = 0; crit2 ; c2 = 1 ; reste2; } } /* P 2 n'est plus en section critique */ /* P1 en section critique, P2 attend /* P 2 entre en section critique */ */ /* P1 n'est plus en section critique */ /* P2 en section critique, P1 attend */ /* P 1 entre en section critique */ /* initialement, aucun processus en section critique */ valeur 1: il n'est pas en section critique */
Systme d'exploitation II 16
Avantage : on rend moins dpendants les deux processus en attribuant une cl de section critique chacun.
Inconvnients : Au dbut c1 et c2 sont 1. P1 prend connaissance de c2 et met fin la boucle while. Si la commutation de temps a lieu ce moment, c1 ne sera pas 0 et P2 voluera pour mettre c2 0, tout comme le fera irrmdiablement P1 pour c1. La situation c1 = c2 = 0 qui en rsultera fera entrer simultanment P1 et P2 en section critique : l'exclusion mutuelle ne sera pas satisfaite. Si l'instruction ci = 0 tait place avant la boucle d'attente, l'exclusion mutuelle serait satisfaite, mais on aurait cette fois interblocage. A un moment donn, c1 et c2 seraient nuls simultanment P1 et P2 excuteraient leurs boucles d'attente indfiniment.
Systme d'exploitation II 17
{ c1 = 1; c1 = 0; } crit1; c1 = 1; reste1 ; } } /*************************************************************************/ p2() { for ( ; ; ) { c2 = 0 ; while (c1 == 0) { c2 = 1; c2 = 0 ; } crit2; c2 = 1 ; reste2 ; } } /* fin de la section critique de P 2 */ /* .. P2 abandonne un temps son intention .... */ /* ..... puis la raffirme */ /* P2 veut entrer en section critique */ /* fin de la section critique de P 1 */ /* ....P1 abandonne un temps son intention... */ /* ..... puis la raffirme */
Commentaires : - l'exclusion mutuelle est satisfaite. (cf. ci-dessus) - il est possible d'aboutir la situation o c1 et c2 sont nuls simultanment. Mais il n'y aura pas interblocage car cette situation instable ne sera pas durable (Elle est lie la commutation de temps entre ci = 1 et ci = 0 dans while).
Systme d'exploitation II 18
while (tour == 2) ; /* ...... jusqu' ce que ce soit son tour ...... c1 = 0; } crit1; tour = 2; c1 = 1; reste1; } } /* C'est le tour de P 2 */ /* ..... puis raffirme son intention
/**********************************************************************/ p2 ()
Systme d'exploitation II 19
while (c1 == 0) /* tant que P1 le veut aussi ......... if (tour == 1) { c2 = 1; /* ........ P2 renonce ....... /* ........ si c'est le tour de P 1 ......
*/ */ */
/* ..... jusqu' ce que ce soit son tour .... /* ..... puis raffirme son intention
*/ */
Remarques : - Si p1 veut entrer en section critique (c1 = 0), alors que p2 le veut aussi (c2 = 0), et que c'est le tour de p1 (tour = 1), p1 insistera (while (c2 == 0 ) sera actif). Dans p2, la mme boucle aboutira c2 = 1 (renoncement temporaire de p2). - On dmontre [Ben-Ari pages 51 53] que cet algorithme rsout l'exclusion mutuelle sans privation, sans interblocage, sans blocage du programme par arrt d'un processus. - Cet algorithme peut tre gnralis n processus au prix d'une trs grande complexit.
Systme d'exploitation II 20
Tour : entier ; C1,c2 : entier ; C1 :=C2 :=tour :=1 ; Paregin P1() P2() Parend ; Processus p1() Debut Faire tj C1 :=0 ; Tour :=2 ; Tq (c2=0 et tour=2) faire ftq <SC> C1 :=1 ; Reste1 ; fin Processus p2() Debut Faire tj C2 :=0 ; Tour :=1 ; Tq (c1=0 et tour=1) faire ftq <SC> C2 :=1 ; Reste1 ; fin Remarque : Lalgorithme de peterson est un pg multitache juste mais il nest valable que pour deux processus concurrents.
Systme d'exploitation II 21
Debut Tour[0..N-1] : table de booleen Num[0..N-1]: table dentiers Pp :entier ; Pour i :=2 jusquN faire Debut Tour[i ] :=faux ; Num[i]:=0; fin parbegin p0,p2,,pn-1 ; parend processus pi() var jj :=entier ; debut pp :=i ;/* 0 pour processus 0 ; etc tour[pp] := vrai ; num[pp] :=Max(NUm)+1 tour[pp ] :=Faux ; pour jj :=0 jusqua N faire tq(tour(jj) faire ftq tq ((num(jj)<>0) et (( num(jj)< num(pp) ou ((num(jj)=num(pp) et (jj<pp))) ftq fpour <SC> Num[pp] :=0 ; Fin
Systme d'exploitation II 22
Il y a des processeurs qui fournissent des instructions cbles spciales dont le rle est de rendre atomique la squence : lecture suivie d'criture. Il devient alors impossible deux processeurs excutant des processus concurrents de lire le Verrou Faux avant que l'un d'eux l'ait mis Vrai. les instructions cbles atomiques (on dit aussi indivisibles) les plus usites sont TAS ("test and set") et SWAP ("exchange to memory"). 3.7.1. Linstruction Test And Set (TAS) Linstruction TestAnd Set sexecute comme une action elementaire et indivisible ; elle peut etre dfinie comme suit : Tas(verrou : booleen) : Booleen ; Debut Si verrou alors retourne(vrai) Sinon Verrou := vrai ; Retourne (faux) ; Fin Une instruction Tas execute sur une UC doit sachever avant quune autre puisse sexecuter sur une
Systme d'exploitation II 23
Systme d'exploitation II 24
Systme d'exploitation II 25
Cours 5 : smaphores
Introduction: les dfauts des solution par attente active
Seules deux fonctions permettent de manipuler un smaphore : - P (s) ou down (s) ou WAIT (s) - V (s) ou up (s) ou SIGNAL (s)
5.1.1 P (s)
La fonction P(S) dcrmente le smaphore d'une unit condition que sa valeur ne devienne pas ngative. P(s): si s>0 alors s=s-1 Sinon suspendre l'excution du processus en cours et le placer le processus dans la file d'attente du
smaphore
Fsi
5.1.2 V (s)
La fonction V(S) incrmente la valeur du smaphore d'une unit si la file d'attente est vide et si cette incrmentation est possible.
Systme d'exploitation II 26
V(s): si Fat (file d attente) est vide alors s=s+1 Sinon reveiller un processus dans la file d'attente du smaphore, Fsi
Remarques: 1. Du fait de la variable globale verrou, les fonctions P et V sont ininterruptibles (on dit aussi atomiques). Les deux fonctions P et V s'excluent mutuellement. Si P et V sont appeles en mme temps, elles sont excutes l'une aprs l'autre dans un ordre imprvisible.
2. On supposera toujours que le processus rveill par V est le premier entr dans la file d'attente, donc celui qui est en tte de la file d'attente.
5.1.3 Application des smaphores l'exclusion mutuelle
SEMAPHORE s; /* dclaration trs symbolique */ main () { SEMAB (s,1); parbegin p1 () ; p2 () ; parend } /****************************************************************************/ p1 () { for ( ; ; ) { P (s); ................. /* section critique de p1 V (s); ................. /* section non critique de p1 */ } } /***************************************************************************/ p2 () { /* second processus */ */ /* premier processus */ /* instructions trs symboliques */ /* dclaration trs symbolique ; initialise le smaphore binaire s 1 */
Systme d'exploitation II 27
for ( ; ; ) { P (s); ................. /* section critique de p2 V (s); ................ /* section non critique de p2 */ } } */
La dmonstration formelle que l'algorithme rsout l'exclusion mutuelle et ne cre pas d'interblocage est donne dans Ben-Ari page 63. Si l'on tend cet algorithme n processus (n > 2) , il peut y avoir privation (par exemple, P1 et P2 peuvent se rveiller mutuellement et d'autres processus). J.M. Morris a propos en 1979 un algorithme de rsolution de l'exclusion mutuelle sans privation pour n processus dans Information Processing Letters, volume 8 , pages 76 80 . Exemple : Soient 3 processus P1, P2, P3 chargs du calcul de (a+ b) * (c + d) - (e/f) P2 calcule c + d, P3 calcule e/f et P1 le rsultat. On initialise les smaphores s1 et s2 0.
P1 P2 P3
suspendre indfiniment P3 ou
Exemple : avec deux processus p1 et p2, deux smaphores s1 et s2 (s1 = s2 = 1) p1 .... P (S1) ....... P (S2) ....... V (S2) p2 ...... P (S2) .......... P (S1)
Systme d'exploitation II 28
Si p1 fait P (S1) alors S1 = 0 puis p2 fait P (S2) et S2 = 0 puis p1 fait P (S2) et p1 est en attente, ENDORMI puis p2 fait P (S1) et p2 est ENDORMI Il y a donc videmment interblocage (puisque aucun des processus ne peut faire V (On dit aussi treinte fatale ou deadlock) Si les primitives P et V ne sont pas utilises correctement (erreurs dans l'emploi, le partage ou l'initialisation des smaphores), un problme peut survenir.
extensions simples des smaphores smaphores avec messages (utiliss dans HB 64 renomm DPS 7) smaphores avec P non bloquant et retour d'un compte rendu boolen smaphores avec P bloquant seulement pendant un dlai maximal smaphores avec P(S, n) augmentant l'entier E.S de n, V(S,m) diminuant l'entier E.S de m ( m, n ! 0 et pas seulement n = m = 1)
Systme d'exploitation II 29
Schma
Le corps du moniteur est excut ds que le programme est lanc pour initialiser les variables du moniteur. Les variables moniteur ne sont accessibles qu' travers les procdures moniteur. La seule manire pour un processus d'accder une variable moniteur est d'appeler une procdure moniteur. On peut prvoir plusieurs moniteurs pour diffrentes tches qui vont s'excuter en parallle. Chaque moniteur est charg d'une tche bien prcise et chacun a ses donnes et ses instructions rserves. Si un moniteur M1 est le seul moniteur avoir accs la variable u1, on est sr que u1 est en exclusion
Systme d'exploitation II 30
mutuelle. De plus, comme les seules oprations faites sur u1 sont celles programmes dans M1, il ne peut y avoir ni affectation, ni test accidentels. On dit que l'entre du moniteur par un processus exclut l'entre du moniteur par un autre processus. Les moniteurs prsentent plusieurs avantages : - au lieu d'tre disperses dans plusieurs processus, les sections critiques sont transformes en procdures d'un moniteur modularit et de la systmatisation de l'exclusion mutuelle et de la section critique - la gestion des sections critiques n'est plus la charge de l'utilisateur, mais elle est ralise par le moniteur, puisqu'en fait le moniteur tout entier est implant comme une section critique. Des exemples de moniteurs sont donns dans Beauquier, p. 139-141.
Il utilise des variables de type condition et deux primitives agissant sur elles : - WAIT : bloque le processus appelant et autorise un processus en attente entrer dans le moniteur - SIGNAL : rveille le processus endormi en tte de la file d'attente. Puis, ou bien le processus courant est endormi (solution de Hoare), ou bien le processus courant quitte le moniteur (solution de Brinch Hansen, la plus usite), afin qu'il n'y ait pas deux processus actifs dans le moniteur. La syntaxe d'un moniteur ressemble plus en moins au code ci apres: Monit: moniteur Debut // declaration des variables i: entier; c: condition // decalaration des procedures Procedure SCpoint1() Debut // code de procedure fin Procedure SCpoint2() Debut // code d eprocedure
Systme d'exploitation II 31
Exemple:
(a+ b) * (c + d) - (e/f)
intrts du moniteur
introduction de la modularit et de la systmatisation de l'exclusion mutuelle et de la section critique se prte bien une formalisation (mieux que le smaphore) car : la section critique est dclare, on peut srialiser les sections critiques, on peut appliquer des preuves squentielles cette srialisation on peut associer des invariants un moniteur
inconvnients du moniteur
la synchronisation par wait et signal peut devenir complexe et se rvler d'aussi bas niveau que les smaphores(des essais pour introduire des sortes d'expressions gardes apportent des amliorations de fiabilit, mais au cot d'une rvaluation dynamique des gardes, des endroits non systmatiques) problme des appels embots = problme gnral des exclusions mutuelles embotes : - soit danger d'interblocage si appel de moniteur possible depuis un autre moniteur (P1 dans M1 appelle M2 "" P2 dans M2 appelle M1) - soit un processus ne doit pouvoir n'appeler qu'un moniteur la fois : contrainte la programmation (explicite statique) ou l'excution(dynamique)
Systme d'exploitation II 32
Introduction
Les processus ont besoin de communiquer, d'changer des informations de faon plus labore et plus structure que par le biais d'interruptions. Un modle de communication entre processus avec partage de zone commune (tampon) est le modle producteur-consommateur. Le producteur doit pouvoir ranger en zone commune des donnes qu'il produit en attendant que le consommateur soit prt les consommer. Le consommateur ne doit pas essayer de consommer des donnes inexistantes. Hypothses : - les donnes sont de taille constante - les vitesses respectives des deux processus (producteur consommateur) sont quelconques.
Rgle 1 : Le producteur ne peut pas ranger un objet si le tampon est plein Rgle 2 : Le consommateur ne peut pas prendre un objet si le tampon est vide.
PRODUCTEUR Faire toujours produire un objet si nb d'objets ds tampon < N alors dposer l'objet ds le tampon finsi Fait
CONSOMMATEUR Faire toujours si nb d'objets ds tampon >0 alors prendre l'objet consommer l'objet finsi Fait
Rgle 3 : exclusion mutuelle au niveau de l'objet : le consommateur ne peut prlever un objet que le producteur est en train de ranger.
Systme d'exploitation II 33
Rgle 4 : si le producteur (resp. consommateur) est en attente parce que le tampon est plein (resp. vide), il doit tre averti ds que cette condition cesse d'tre vraie. Le tampon peut tre reprsent par une liste circulaire. On introduit donc deux variables caractrisant l'tat du tampon : NPLEIN : nombre d'objets dans le tampon (dbut : 0) NVIDE : nombre d'emplacements disponibles dans le tampon (N au dbut). PRODUCTEUR :
Faire toujours Produire un objet si NVIDE >0 /* dbut d'atome ininterruptible */
CONSOMMATEUR :
Faire toujours si NPLEIN > 0 /* s'il existe au moins un objet dans le tampon */ alors NPLEIN -sinon s'endormir finsi prlever l'objet dans le tampon si producteur endormi alors rveiller le producteur sinon NVIDE ++ finsi consommer l'objet Fait
Systme d'exploitation II 34
PRODUCTEUR
CONSOMMATEUR
On dmontre que le producteur et le consommateur ne peuvent tre bloqus simultanment. Cas o le nombre de producteur (consommateur) est suprieur 1 Si plusieurs producteurs (consommateurs) oprent sur le mme tampon, il faut assurer l'exclusion mutuelle dans l' opration dposer un objet ( prlever un objet) afin que le pointeur queue (tete) garde une valeur cohrente, de mme que pour les objets points par queue (tete). Si l'on veut s'assurer de plus qu'il n'y aura aucun problme dans l'accs au tampon, on peut dcider que les oprations prlever et dposer ne s'excutent pas simultanment. Dposer et prlever doivent donc figurer en section critique pour protger les valeurs ressources (tampon, queue, tete). D'o l'utilisation d'un smaphore binaire :
PRODUCTEUR produire un objet P (NVIDE) P (MUTEX) tampon[queue] = objet queue = (queue ++) % N V (MUTEX) V (NPLEIN) CONSOMMATEUR P (NPLEIN) P (MUTEX) objet = tampon [tete] tete = (tete ++) % N V (MUTEX) V (NVIDE) consommer l'objet
Systme d'exploitation II 35
out = 0 /* nb d'objets retirs du tampon producteur Faire toujours produire l'objet suivant nb_produits ++
await (out, nb_produits - TAILLE) mettre l'objet en position (nb_produits - 1) % TAILLE advance (in) Fait
await (in, nb_retirs) retirer l'objet en position (nb_retirs - 1) % TAILLE advance (out) consommer l'objet Fait
Systme d'exploitation II 36
int compteur /* dbut du corps du moniteur */ compteur := 0 /* fin du corps du moniteur procdure ajouter () { if compteur = N then WAIT (plein) /* seul un SIGNAL (plein) rveillera le processus */ ........... /* ranger l'objet dans le tampon */ compteur ++ if compteur = 1 then SIGNAL (vide) /* rveille un processus endormi parce que le tampon tait vide */ }
procdure retirer () { if compteur = 0 then WAIT (vide) /* seul un SIGNAL (vide) rveillera le processus */ .......... /* retirer l'objet du tampon */ compteur -if compteur = N-1 then SIGNAL (plein) /* rveille un processus endormi parce que le tampon tait plein */ } fin du moniteur
procdure producteur () { faire toujours produire (lment) ProdCons . ajouter () fin faire }
procdure consommateur () { faire toujours retirer (lment) ProdCons . retirer () fin faire }
Systme d'exploitation II 37
Systme d'exploitation II 38
receive (consommateur , &m) faire_message (&m , objet) send (consommateur , &m) Fait
*/ */ */
consommateur pour (i = 0 ; i < N ; i++) send (producteur , &m) Faire toujours receive (producteur , &m) retirer_objet (&m , &objet) utiliser_objet (objet) send (producteur , &m) Fait /* renvoyer une rponse vide */ /* attendre un message /* retirer l'objet du message */ */ /* envoyer N messages vides */
On peut galement imaginer une solution de type bote aux lettres de capacit N messages , avec un producteur se bloquant si la bote est pleine et un consommateur se bloquant si la bote est vide.
Systme d'exploitation II 39
Systme d'exploitation II 40
Voici une solution (une autre est donne dans Beauquier p. 155-156) :
Premire solution
#define N 5 (i - 1) % N (i + 1) % N /* nombre de philosophes */ /* n du voisin gauche de i */ /* n du voisin droite de /* il pense */ /* il a faim */ /* il mange */ i */ #define GAUCHE #define DROITE #define PENSE 0 #define FAIM 1
#define MANGE 2 typedef int semaphore; int etat [N]; semaphore mutex = 1, s [N]; /*****************************/ void philosophe (int i) { while (TRUE) { penser (); prendre_fourchettes (i); manger (); poser_fourchettes (i); } } /*****************************/ void prendre_fourchettes (int i) { P (mutex); etat [i] = FAIM; test (i); V (mutex); P (s [i]); }
/* pour mmoriser les tats des philosophes */ /* pour section critique */ /* un smaphore par philosophe */
/*****************************/ void poser_fourchettes (int i) { P (mutex); etat [i] = PENSE; test (GAUCHE); /* entre en section critique */
Systme d'exploitation II 41
test (DROITE); V (mutex) ; } /*****************************/ void test (int i) { if (etat [i] == FAIM && etat [GAUCHE] != MANGE && etat [DROITE] != MANGE) { etat [i] = MANGE; V (s [i] ); } } /* sortie de la section critique */
Deuxieme solution
Baguette[5] :table de semapho=1 Chaise: semaphore=4 Philosophe(i:entier): processus Philosophe (i:entier) debut //repas assis avec chaise pour 4 seulement
V(Chaise); Fin Parbegin Philosophe(1), Philosophe(2), Philosophe(3), Philosophe(4), Philosophe(5) parend -- ni interblocage, ni famine
Systme d'exploitation II 42
Systme d'exploitation II 43
Systme d'exploitation II 44
Chapitre V : Interblocage
Cours 10 : prvention et vitement de linterblocage
1. Introduction : Un systme consiste en un nombre fini de ressources qui peuvent tre distribues aux processus en comptition. Ressources : espaces mmoires, les cycles processeurs, fichiers , priphriques dentres sorties..etc SI un systme possde deux processeurs alors le type de ressource processeur a deux instances. (ils peuvent de eux ressources spares). Schema
P1P2P3p1 R1 R2 R3
Les interblocages surviennent lorsque chaque processus d un ensemble de processsu contrle une ressource requise par un autre processus de l ensemble. Chaque processus se bloque en attendant que la ressource requise soit disponible. 2.Quatre conditions sont indispensables pour quun interblocage survienne.
C1. Exclusion mutuelle. Chaque ressource peut tre alloue a u seul processus a tout instant C2. Dtention et attente : le processus ne librent pas les ressources prcdemment octroyes quand ils attendent que des requtes imminentes soient octroyes.
C3. Pas de premption : les ressources prcdemment octroyes ne peuvent pas retires des processus les dtenant C4. Attente circulaire : il existe une chaine de deux processus ou plus, de manire ce que chaque processus de la chaine contienne une ressource requise par le prochain processus de la chaine.
Systme d'exploitation II 45
Interblocage c1^c2^c3^c4
Graphe d allocation de ressources : Si un graphe dallocation de ressources ne possde pas de cycle, alors le systme n est pas en tat d interblockage.
3. Prvenir linterblocage : Il est possible dviter l interblocage condition que les quatre conditions ne soient pas runies.
1. La suppression de l accs exclusif mutuel a toute ressource n apparat pas comme une solution pratique certaines ressources ne peuvent pas tre partage ex : imprimante ( possible avec spooling) 2.La condition de dtention et attente : sapplique en cas de de requtes de ressources par des processus sans ressources. Sol1. On exige qu u processus ne commence son excution s il ne require pas toutes les ressources possibles. Deux inconvnients majeurs : un processus ne sait pas forcement de quelles ressources il a besoin. Les ressources peuvent dpendre de son traitement famine sol 2. demander aux processus de librer toutes ressources retenues lorsqu une requte est mise. Inc. La plupart de temps cette stratgie se rvle peu pratique. Ex : allocation de disque puis imprimante. Risque de perdre ses donnes sur disque.
3.La suppression de la condition de on premption : mois pratique que celle de la non exclusion. Possible pour quelques ressources (processur) ou par dispositif virtuel.
Systme d'exploitation II 46
4. L elimination de la condition d attente circulaire : la technique la plus prometteuse que les autres. Une mthode consiste associer a chaque ressource un numro de priorit unique. Les processus ne peuvent requrir de ressources que si la priorit est plus leve que toutes les ressources dtenues. Si la ressource n a pas de priorits suprieure a toutes les ressources dtenues, celle d entre elles qui est dote la priorit la plus lev doit tre libre en premier.
Ex : Imprimate 1, table tracante2 , modem 3 P1 imprimante table tracante P2 modem imprimante P3 table tracante modem
Inc. Il existe aucun numro de priorit qui corresponde aux besoins de tous les processus.
4. Eviter les interblocages : Au lieu dessayer dliminer lune de conditions ncessaires lapparition de linterblocage, il peut tre vit ce dernires en nallouant jamais de ressources si elle est susceptible dinduire des interblocages. Une solution simple consiste allouer des ressource a un seul processus a la fois. On dit un systme est dans un tat sur s il y a une squence dexcution sure Une squence dexcution sure est une squence dexcution dans laquelle tous les processus sexcutent entirement
Sur
Relations entre les tats sur, non sur et lineterblocage. L'algorithme de banquier ayant pour but de dterminer si un tat est sur ou non d'un systme avec P processus R ressources peut tre rcapitul comme suit: . Algorithme du Banquier
Systme d'exploitation II 47
Debut max[P,R] :entier /* les besoins maximums des processus P en ressources R*/ courant [P,R] : Entier /* les allocations en cours*/ Disp[R]: entier; Done[p]: booleen= "faux"; Sur: booleen; Pp: entire:=0; Tanque pp<P faire Si done[pp] contiune fsi // si les requtes de ce processus sont accordes , peut il sexcuter jusqu sa terminaison ? Pour rr=1 jusuqu R faire si max[pp,rr]-courant [pp,rr]>Disp[rr] alors // non, pas suffisammennt de ressources rr disponibles, processus Pp++ ; Continue 2 // se rend la prochaine itration de la boucle externe Finsi // oui, rinitialiser le systme letat avec le nouveau etat des ressources en ajoutant les ressources libres par pp Pour rr=1 jusuqu R faire Disp[rr]=disp[rr]+courant [pp,rr] ; Fpour Done[pp]= vrai ; Pp=0 ; Fpour // si tous les processus peuvent sexcuter complment , ltat du systme est sur Sur=vrai ; Pour PP=1 jusuqu P faire Si non Done[pp] alors sur =faux Fpour se rend au prochain
Systme d'exploitation II 48
Fin Lalgorithme du banquier prend la dcision daccorder une ressource en se demandant si loctroi dune requte va ou non placer le systmes dans un mode non sur. Bien que trs lgant dans sa conception, lalgorithme du banquier prsente un inconvnient majeur : il lui faut connatre le nombre maximum de ressources que chaque processus peut requrir. Or, ce type de renseignements est rarement disponible sur les systmes : cest pourquoi trs peu de systmes ont recours cet algorithme.
5- Dtecter les interblocages : Plutt que dessayer de prvenir les interbocages , les systmes peuvent galement les laisser se produire (peu frquent) pour les corriger lorsquils surviennent. Une telle stratgie fait appel des mcanismes de dtection et de correction des interblocages. Un graphe dallocation des ressources peut tre utilis pour modliser ltat des allocations de ressources et celui de requtes.
Ex :
Processus
Allocations en cours R1 R2 0 1 2 0 R3 0 0 0 1 R1 0 1 1 0
Requtes mises R2 0 0 0 2 R3 0 0 1 0 R1 0
Ressources disponibles R2 0 R3 0
P1 P2 P3 P4
3 1 0 1
Systme d'exploitation II 49
Un graphe rduit dallocation des ressources peut tre utilis pour dterminer si linterblocage existe ou non. Pour y arriver, on suit les tapes suivantes dune faon itrative : *- si une ressource ne possde que des dparts de flches, il faut effacer toutes les flches. *- si un processus n a que des arrivs des flches, il faut galement effacer toutes ses flches. *- si un processus a des flches au dpart, mais quun point de ressource (au moins) est disponible pour chacune delles dans la ressource dans laquelle pointe la flche, il faut aussi supprimer toutes les flches du processus. Le systme est en interblocage si et seulement sil reste des flches. De ltat du systme pour lhomme, main un ordinateur prfre une approche algorithmique. Lalgorithme dterminant linterblocage est similaire a celui qui dtecte si le systme est en tat sur.
Algorithme Debut dem[P,R] :entier /* les besoins maximums des processus P en ressources R*/ courant [P,R] : Entier /* les allocations en cours*/ Disp[R]: entier; Done[p]: booleen= "faux"; inetrblocage: booleen; Pp: entire:=0; Tanque pp<P faire Si done[pp] contiune fsi // si les requtes de ce processus sont accordes , peut il sexcuter jusqu sa terminaison ? Pour rr=1 jusuqu R faire si dem[pp,rr]>Disp[rr] alors // non, pas suffisamment de ressources rr disponibles, se rend au prochain processus Pp++ ; Continue 2 // se rend la prochaine itration de la boucle externe Finsi // oui, rinitialiser le systme letat avec le nouveau etat des ressources en ajoutant les ressources libres par pp
Systme d'exploitation II 50
Pour rr=1 jusuqu R faire Disp[rr]=disp[rr]+courant [pp,rr] ; Fpour Done[pp]= vrai ; Pp=0 ; Fpour // si tous les processus peuvent sexcuter complment , ltat du systme est sur interblocage=faux ; Pour PP=1 jusuqu P faire Si non Done[pp] alors interblocage =vrai Fpour Fin
6- Corriger les interblocages Les trois approches permettant de corriger les interblocages sont la premption automatique, la terminaison automatique ou lintervention manuelle a- Avec les premption automatique, le systme dexploitation prempte un sous ensemble de ressources alloues. Trois problmes majeurs doivent tre rsolues pour mettre en uvre une telle stratgie. Selection : quelles ressources de quels processus vont tre premptes ? Des facteurs permettant de prendre la dcision sont les suivantes : la priorit dun processus ? Le temps dexcution dun processus Le nombre de ressources habituelles du processus Le nombre de processus affects Consquence : quarrive-t-il aux processus qui ont leurs ressources premptes ? Sauvegarde de la trace dexcution : couteux( temps et stockage), peu pratique. Famine : si le mme processus est sans cesse victime de premption. Solution : faire appel un compteur de premption qui est incrment chaque fois quun processus repasse son tat antrieur.
Systme d'exploitation II 51
Tous les processus ou sous ensemble o o Tous ; une solution pour les systmes qui favorisent la solution rapide. Sous ensemble : l les problmes de la slection comme dans la premption automatique. La terminaison dun processus peut rpercuter sur les autres processus qui dpendent de son traitement ainsi la mise jour partielle des fichiers.
c- Lintervention manuelle : cest loperateur du systme quil incombe de rsoudre le problme. Compte tenu des limites de approches automatique, elle sagit dune solution intressante Mais, certains systmes fonctionnent sans operateur plein temps, dautres doivent ragir une situation dinterblocage ds sa dtection. Dans ces cas, lintervention manuelle est peu commode
7- Lalgorithme de lautruche Tous les mcanismes du traitement des interblocages prsents prsentent tous un inconvnient majeur.( aucun moyen efficace). Pour la plupart des systmes dexploitation , lapparition dinterblocages est fort rare. Par consquent, dans nombreuses situations, le problme des interblocages est ignor, linstar dune autruche qui senfonce la tte dans le sable en esprant que le problme disparaisse. Autrement, est ce que le cout de la solution est justifi par lampleur du problme rsoudre ?
Systme d'exploitation II 52
BIBLIOGRAPHIE
J. BEAUQUIER, B. BERARD, Systmes d'exploitation, Ediscience, 1993 M. BEN-ARI, Processus concurrents, Masson 1986 A. SCHIPER, Programmation concurrente, Presses Polytechnique Romandes 1986 A. TANENBAUM, Les systmes d'exploitation, Prentice Hall, 1999