cours de syst`emes d’exploitation · 2011. 10. 6. · table des mati`eres introduction 1 1...

115
Cours de Syst` emes d’Exploitation Yann Mor` ere Septembre 2001

Upload: others

Post on 14-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

Cours de Systemes d’Exploitation

Yann Morere

Septembre 2001

Page 2: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 3: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

Table des matieres

Introduction 1

1 Historique des Systemes Informatiques 31.1 Definition d’un systeme informatique . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Les Premiers Systemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Les Automates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 Le zero et la notation positionnelle (chiffres arabes) . . . . . . . . . . . . 41.2.3 Les machines a calculer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 La machine Analytique (1887) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.1 Les systemes mecanographiques . . . . . . . . . . . . . . . . . . . . . . . 51.3.2 Theorie des systemes et cybernetique . . . . . . . . . . . . . . . . . . . . 51.3.3 Les mathematiques de la calculabilite . . . . . . . . . . . . . . . . . . . . 5

1.3.3.1 Logique Mathematique . . . . . . . . . . . . . . . . . . . . . . . 51.3.3.2 Theorie des nombres . . . . . . . . . . . . . . . . . . . . . . . . 51.3.3.3 Theorie des ensembles . . . . . . . . . . . . . . . . . . . . . . . 51.3.3.4 La machine de Turing . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.4 Le Seconde Guerre Mondiale . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.5 Premiere Generation : 1944-1954 . . . . . . . . . . . . . . . . . . . . . . 6

1.3.5.1 Entree dans l’ere commerciale . . . . . . . . . . . . . . . . . . . 71.3.6 Seconde Generation : 1955-1965 . . . . . . . . . . . . . . . . . . . . . . . 7

1.3.6.1 Invention des langages de programmation . . . . . . . . . . . . 71.3.6.2 Progres Technologique . . . . . . . . . . . . . . . . . . . . . . . 71.3.6.3 Elements de l’informatique actuelle . . . . . . . . . . . . . . . . 7

1.3.7 Troisieme Generation :1965-1980 . . . . . . . . . . . . . . . . . . . . . . 91.3.8 Quatrieme Generation : 1980-1990 . . . . . . . . . . . . . . . . . . . . . . 9

2 Structure de systemes informatiques 112.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Organisation materielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Architecture generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Architecture du processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.5 Les entrees/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.5.1 Les entrees/sorties programmees . . . . . . . . . . . . . . . . . . . . . . . 142.5.2 Les entrees/sorties par acces direct a la memoire (DMA) . . . . . . . . . 142.5.3 Les entrees/sorties par processeur specialise . . . . . . . . . . . . . . . . 15

2.6 Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.7 Notion d’appels systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.7.1 Mode maıtre-esclave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

i

Page 4: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

2.8 Fonctionnement d’un systeme informatique . . . . . . . . . . . . . . . . . . . . . 172.9 Structure d’entrees/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.9.1 Comment cela fonctionne . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.10 Structure de Stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.11 Protection du systeme informatique . . . . . . . . . . . . . . . . . . . . . . . . . 20

3 Structures des systemes d’exploitation 213.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 Le modele processus-ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3 Composants et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3.1 Gestion de l’UCT : Gestion de processus . . . . . . . . . . . . . . . . . . 233.3.2 Gestion des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.3 Gestion de la memoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.4 Autres composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.5 Services d’un systeme d’exploitation . . . . . . . . . . . . . . . . . . . . 243.3.6 Acces aux services du systeme d’exploitation . . . . . . . . . . . . . . . . 24

3.4 Structure d’un systeme d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . 253.4.1 Structure simple (systemes monolithiques) . . . . . . . . . . . . . . . . . 253.4.2 Structure en couches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.3 Structure a noyau (kernel) . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.5 Exemple de systemes d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . 283.5.1 Unix classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.5.2 Le Mac OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4 Les Processus 314.1 Concepts elementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Le processus et son espace adresse . . . . . . . . . . . . . . . . . . . . . . 314.1.2 Le kernel (noyau) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.1.3 Mode, espace et contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.1.4 Etats d’un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.1.5 Mecanismes de gestion de processus . . . . . . . . . . . . . . . . . . . . . 33

4.2 Ordonnancement (Scheduling) de processus . . . . . . . . . . . . . . . . . . . . . 354.2.1 Roles des ordonnanceurs (repartiteurs, Schedulers) . . . . . . . . . . . . 354.2.2 Files d’ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.2.2.1 Traitements par lots (batch) . . . . . . . . . . . . . . . . . . . . 364.2.2.2 Multiprogrammation sans temps partage . . . . . . . . . . . . . 364.2.2.3 Repartiteur pour le temps partage . . . . . . . . . . . . . . . . 364.2.2.4 Temps partage avec gestion de la memoire virtuelle . . . . . . . 38

4.2.3 Algorithmes d’ordonnancement . . . . . . . . . . . . . . . . . . . . . . . 384.2.3.1 Premier Arrive, Premier Servi ou PAPS . . . . . . . . . . . . . 384.2.3.2 Plus court d’abord . . . . . . . . . . . . . . . . . . . . . . . . . 404.2.3.3 Priorite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2.3.4 Le tourniquet (Round Robin) . . . . . . . . . . . . . . . . . . . 414.2.3.5 Ordonnancement a listes multiples . . . . . . . . . . . . . . . . 424.2.3.6 Ordonnancement temps reel . . . . . . . . . . . . . . . . . . . . 42

4.2.4 Evaluation des algorithmes d’ordonnancement . . . . . . . . . . . . . . . 424.2.4.1 Essais sur le systeme en fonctionnement reel . . . . . . . . . . . 424.2.4.2 Analyse deterministe . . . . . . . . . . . . . . . . . . . . . . . . 434.2.4.3 Modeles de files d’attente . . . . . . . . . . . . . . . . . . . . . 434.2.4.4 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

ii

Page 5: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.3 Creation de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.4 Exemple du systeme Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.4.1 Fonctionnement de fork() . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4.2 La notion de ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.5 Synchronisation de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.5.1 Conditions de course (race condition) . . . . . . . . . . . . . . . . . . . . 464.5.2 Exclusion mutuelle avec attente active (busy wait) . . . . . . . . . . . . . 46

4.5.2.1 Variable de blocage (lock variable) . . . . . . . . . . . . . . 464.5.2.2 Desactivation des interruptions . . . . . . . . . . . . . . . . . . 474.5.2.3 Solution materielle : TSL (Test and Set Lock) . . . . . . . . . . 474.5.2.4 Alternance stricte . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.5.3 Problemes classiques de synchronisation de processus . . . . . . . . . . . 494.5.3.1 Le probleme des producteurs et des consommateurs (le buffer

limite) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.5.3.2 Le probleme des philosophes dineurs . . . . . . . . . . . . . . . 494.5.3.3 Le probleme du barbier endormi (sleeping barber) . . . . . . . . 50

4.5.4 Les Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.5.4.1 Definition d’un semaphore . . . . . . . . . . . . . . . . . . . . . 504.5.4.2 Exemple d’implantation de semaphores . . . . . . . . . . . . . . 504.5.4.3 Une solution au probleme des producteurs et consommateurs . 514.5.4.4 Une solution au probleme des philosophes dineurs . . . . . . . . 524.5.4.5 Une solution au probleme du barbier endormi . . . . . . . . . . 53

4.6 Processus poids-legers et threads . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.6.2 Notion de thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.6.3 Abstraction fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . 55

4.6.3.1 Le point de vue du kernel . . . . . . . . . . . . . . . . . . . . . 554.6.3.2 Thread du kernel . . . . . . . . . . . . . . . . . . . . . . . . . . 574.6.3.3 Processus poids-leger (lightweight process ou LWP) . . . . . . . 574.6.3.4 Threads au niveau de l’usager . . . . . . . . . . . . . . . . . . . 57

5 Gestion de la memoire 615.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.2 Monoprogrammation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.2.2 La liaison entre noms et adresses (address binding) . . . . . . . . . . . . 615.2.3 Espace adresse logique et espace adresse physique . . . . . . . . . . . . . 62

5.3 Multiprogrammation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.3.1 Multiprogrammation et utilisation de l’UCT et de la memoire . . . . . . 635.3.2 Multiprogrammation a partitions fixes . . . . . . . . . . . . . . . . . . . 635.3.3 Multiprogrammation a partitions variables . . . . . . . . . . . . . . . . . 645.3.4 Allocation d’un trou libre . . . . . . . . . . . . . . . . . . . . . . . . . . 655.3.5 Representation de l’espace libre . . . . . . . . . . . . . . . . . . . . . . . 65

5.3.5.1 Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.3.5.2 Liste chaınee . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.3.5.3 Listes de trous de taille specifiques . . . . . . . . . . . . . . . . 66

5.3.6 Limitations de ces techniques . . . . . . . . . . . . . . . . . . . . . . . . 665.4 La memoire virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.4.1 Pallier le manque de memoire . . . . . . . . . . . . . . . . . . . . . . . . 675.4.1.1 Structures de chevauchement (overlays) . . . . . . . . . . . . . 67

iii

Page 6: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4.1.2 Segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.4.1.3 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.4.2 Generalisation a plusieurs processus . . . . . . . . . . . . . . . . . . . . . 735.4.3 Le va-et-vient (swap inswap out) . . . . . . . . . . . . . . . . . . . . . . 735.4.4 La demande de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.4.5 Performance de la memoire virtuelle . . . . . . . . . . . . . . . . . . . . 745.4.6 Caracteristiques principales dun algorithme de demande de page . . . . . 755.4.7 Algorithmes statiques de remplacement de pages . . . . . . . . . . . . . . 75

5.4.7.1 PAPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.4.7.2 Remplacement aleatoire . . . . . . . . . . . . . . . . . . . . . . 765.4.7.3 LRU (Least Recently Used) . . . . . . . . . . . . . . . . . . . . 765.4.7.4 LFU (Least Frequently Used) . . . . . . . . . . . . . . . . . . . 765.4.7.5 L’anomalie de Belady et lalgorithme de remplacement optimal 77

5.4.8 Une approximations de LRU : l’algorithme de la seconde chance . . . . . 785.4.8.1 L’algorithme de la seconde chance . . . . . . . . . . . . . . . . 79

6 Interblocage 816.1 Introduction : definition et caracterisation . . . . . . . . . . . . . . . . . . . . . 81

6.1.1 Definition de l’interblocage (deadlock) . . . . . . . . . . . . . . . . . . . 826.1.2 Caracterisation de l’interblocage . . . . . . . . . . . . . . . . . . . . . . 826.1.3 Graphe dallocation des ressources . . . . . . . . . . . . . . . . . . . . . 826.1.4 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.1.5 Comment traiter le probleme de linterblocage ? . . . . . . . . . . . . . . 86

6.2 Vagabondage theorique sur linterblocage . . . . . . . . . . . . . . . . . . . . . . 876.2.1 Preambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2.2 Bibliographie reduite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2.3 Mecanisme de demande de ressource . . . . . . . . . . . . . . . . . . . . 886.2.4 Interblocage et cycles dattente . . . . . . . . . . . . . . . . . . . . . . . 886.2.5 Mauvaises nouvelles (1ere partie) : problemes non decidables . . . . . . 89

6.2.5.1 Introduction plus formelle a la theorie de la calculabilite . . . . 906.2.6 Une version plus faible du probleme de linterblocage . . . . . . . . . . . 926.2.7 Mauvaises nouvelles (2e partie) : problemes NP-complets . . . . . . . . . 926.2.8 Que faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.2.9 Le modele qui en resulte . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.2.10 Les matrices dallocation de ressources . . . . . . . . . . . . . . . . . . . 95

6.3 Solutions au probleme de l’interblocage . . . . . . . . . . . . . . . . . . . . . . 966.3.1 Evitement de l’interblocage . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.3.1.1 Etats surs, risques (unsafe) et interblocage . . . . . . . . . . . 966.3.1.2 L’algorithme du banquier . . . . . . . . . . . . . . . . . . . . . 98

6.3.2 La prevention de l’interblocage . . . . . . . . . . . . . . . . . . . . . . . 986.3.2.1 Condition d’exclusion mutuelle . . . . . . . . . . . . . . . . . . 996.3.2.2 Condition d’attente circulaire . . . . . . . . . . . . . . . . . . . 996.3.2.3 Condition de non requisition . . . . . . . . . . . . . . . . . . . 99

6.3.3 Detection et resolution de l’interblocage . . . . . . . . . . . . . . . . . . 996.3.3.1 Resolution de l’interblocage . . . . . . . . . . . . . . . . . . . . 1006.3.3.2 Resoudre par rollback. . . . . . . . . . . . . . . . . . . . . . . 100

6.3.4 La strategie de l’autruche (ne rien faire) . . . . . . . . . . . . . . . . . . 101

iv

Page 7: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

Table des figures

1.1 Vue des composants d’un systeme informatique . . . . . . . . . . . . . . . . . . 41.2 Schema d’un moniteur resident . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Paquets de cartes pour le traitements par lots . . . . . . . . . . . . . . . . . . . 81.4 Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1 Structure de l’ordinateur IAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Architecture generale d’un ordinateur . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Architecture generale d’un processeur . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Protocole elementaire d’entrees/sorties . . . . . . . . . . . . . . . . . . . . . . . 142.5 Mecanisme d’acces direct a la memoire . . . . . . . . . . . . . . . . . . . . . . . 152.6 Deroulement d’un sous-programme d’interruption . . . . . . . . . . . . . . . . . 162.7 Structure d’un Systeme Informatique . . . . . . . . . . . . . . . . . . . . . . . . 172.8 Mecanisne d’un disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.9 Hierarchie de dispositifs de stockage . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1 Le SE comme intermediaire entre usagers et ressources systemes . . . . . . . . . 223.2 Modele revise : Processus et Ressources . . . . . . . . . . . . . . . . . . . . . . . 223.3 Structure d’un systeme d’exploitation MS-DOS . . . . . . . . . . . . . . . . . . 253.4 Organisation d’un SE avec un kernel (noyau) . . . . . . . . . . . . . . . . . . . . 273.5 Organisation en kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.6 L’architecture en couche Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1 Modes et contextes d’operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Diagramme d’etats de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.3 Deroulement d’un changement de contexte . . . . . . . . . . . . . . . . . . . . . 344.4 Ordonnancement pour le traitement par lot (batch) . . . . . . . . . . . . . . . . 374.5 Ordonnancement pour la multiprogrammation sans temps partage . . . . . . . . 374.6 Ordonnancement avec temps partage . . . . . . . . . . . . . . . . . . . . . . . . 374.7 Ordonnancement avec gestion de la memoire virtuelle . . . . . . . . . . . . . . . 384.8 Fonctionnement d’un repartiteur PAPS . . . . . . . . . . . . . . . . . . . . . . . 394.9 Execution des processus par un repartiteur PAPS . . . . . . . . . . . . . . . . . 404.10 Execution de la sequence par un repartiteur tourniquet . . . . . . . . . . . . . . 414.11 Ordonnancement a listes multiples . . . . . . . . . . . . . . . . . . . . . . . . . 424.12 Evaluation du temps d’attente moyen sous PAPS . . . . . . . . . . . . . . . . . 434.13 Evaluation du temps d’attente moyen sous SJF . . . . . . . . . . . . . . . . . . 434.14 Valeur retournee par fork() pour le pere et le fils . . . . . . . . . . . . . . . . . 444.15 Exemple de hierarchie de processus Unix . . . . . . . . . . . . . . . . . . . . . . 454.16 Exemple avec deux processus 0 et 1 . . . . . . . . . . . . . . . . . . . . . . . . . 484.17 Inversion de priorites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

v

Page 8: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.18 Le probleme des philosophes dineurs . . . . . . . . . . . . . . . . . . . . . . . . 494.19 Le modele classique tache = processus . . . . . . . . . . . . . . . . . . . . . . . 554.20 Nouveau modele : un processus peut comprendre plusieurs chaınes de controle,

ou threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.21 Une des chaınes de controle (threads) d’un processus peut bloquer sans que cela

affecte les autres threads de ce processus . . . . . . . . . . . . . . . . . . . . . . 564.22 Les processus poids-leger (lightweight process) sont vus par le kernel et en parti-

culier par le repartiteur qui leur offre l’acces au(x) processeur(s) disponible(s) . . 584.23 Cas des threads implantes par des librairies comme C-threads ou pthreads : le

repartiteur ne voit que les processus . . . . . . . . . . . . . . . . . . . . . . . . . 594.24 Structure complexe combinant les deux types de threads usager : processus poids

leger et threads non supportes par le kernel . . . . . . . . . . . . . . . . . . . . . 59

5.1 Organisation de la memoire avec un SE et un programme usager . . . . . . . . . 625.2 transformation de l’adresse physique en adresse logique . . . . . . . . . . . . . . 625.3 Taux d’utilisation de l’UCT pour divers taux d’E/S et nombre de processus . . . 635.4 Deux types de repartiteurs de haut niveau : repartiteurs a files multiples (une

par partition) et repartiteur a file unique . . . . . . . . . . . . . . . . . . . . . . 645.5 Occupation de la memoire pour la sequence d’execution des processus donnee

dans le cas d’une gestion de la memoire a partitions variables . . . . . . . . . . . 645.6 Representation de l’occupation memoire par une carte de bits . . . . . . . . . . 665.7 Representation de l’occupation de la memoire par une liste chaınee . . . . . . . 665.8 Acces a un element d’un segment grace a son deplacement . . . . . . . . . . . . 685.9 Transformation d’une adresse logique en adresse physique dans le cas de la me-

moire segmentee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.10 Pagination : decomposition de l’espace d’adresse d’un processus en pages de taille

fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.11 Implantation de la memoire paginee a l’aide d’une table de pages . . . . . . . . 705.12 Pagination a l’aide des registres assocoatifs . . . . . . . . . . . . . . . . . . . . . 715.13 Pagination a l’aide des registres assocoatifs . . . . . . . . . . . . . . . . . . . . . 715.14 Implementation de la pagination a deux niveaux . . . . . . . . . . . . . . . . . . 72

6.1 Interblocage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.2 Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.3 Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.4 Ressources allouees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.5 Ressources demandees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.6 Etat dinterblocage apres que P3 a demande R B. . . . . . . . . . . . . . . . . . 846.7 Etat impossible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.8 Graphe d’allocation de ressources (une ressource de chaque type). . . . . . . . . 856.9 Graphe d’attente correspondant . . . . . . . . . . . . . . . . . . . . . . . . . . . 856.10 Graphe d’allocation de ressources (plusieurs de chaque type). . . . . . . . . . . 866.11 Graphe d’attente correspondant (plusieurs de chaque type). . . . . . . . . . . . . 866.12 Un autre graphe dallocation de ressources . . . . . . . . . . . . . . . . . . . . . 886.13 Graphe dattente correspondant a letat represente a la figure precedente . . . . . 896.14 Module de prediction de chronologie des besoins en ressources. . . . . . . . . . . 906.15 On suppose que lon dispose dune chronologie des demandes de ressources . . . 926.16 Exemple de fonction dordre O(n) . . . . . . . . . . . . . . . . . . . . . . . . . . 936.17 Temps dexecution approximatif en fonction de la complexite algorithmique et

de la taille n de lentree (tire du livre de Garey & Johnson cite plus haut). Onsuppose ici quune instruction elementaire sexecute en 1 µs. . . . . . . . . . . . 93

vi

Page 9: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.18 Effet de progres technologiques sur la taille du plus grand probleme traitable en1 heure de calcul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.19 Matrices dallocation de ressources : Requises = Max Detenues . . . . . . . . . . 956.20 Exemple de sequences dallocation/liberation de deux ressources de type impri-

mante, I, et table tracante, T, par deux processus. Les instants tij correspondenta des points dans le code des processus. . . . . . . . . . . . . . . . . . . . . . . 96

6.21 Sequencements possibles des allocations et liberations de ressources pour les deuxprocesssus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

vii

Page 10: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 11: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

Liste des tableaux

3.1 Structure en couche de THE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.1 Bloc de controle de processus generique pour Unix . . . . . . . . . . . . . . . . . 354.2 Contraintes d’operations des repartiteurs de bas et haut niveau . . . . . . . . . . 364.3 Exemple ou la variable verrou ne protege pas l’acces a la ressource partagee . . . 47

ix

Page 12: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 13: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

1 / 103

Introduction

Dans l’informatique d’aujourd’hui, les divisions bien distinctes entre la materiel informatique(hardware) et les differentes formes de logiciel (software) : systeme d’exploitation (operatingsystem), langages de programmation et applications.

On peut par exemple installer differentes variantes d’UNIX (SunOs, Solaris, AIX, IRIX, Li-nux, QNX, FreeBSD), sur des ordinateurs utilisant differentes generations de microprocesseursDigital Alpha, Sun Sparc, Intel x86, MIPS, Motorola 68K et PowerPc. De meme des applica-tions comme les traitements de textes, traitements d’images numeriques, sont utilisables surdifferrentes plate-formes, Wintel, Macintosh ou Unix.

Ces divisions et distinctions actuelles ne se sont pas imposees d’emblee. Elles sont le resultat(avec avantages et defauts) d’une longue evolution qui a plusieurs origines : mathematique,philosophique, electronique, cybernetique, autimatique, economique et marketing.

Page 14: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 15: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

3 / 103

Chapitre 1Historique des Systemes Informatiques

1.1 Definition d’un systeme informatique

Ce dernier se decompose generalement en 4 composants : le materiel, le systeme d’exploita-tion, les programmes applications et les utilisateurs.

Le materiel : compose de l’unite centrale (UC), la memoire et les peripheriques d’entree/sortie,fournit les ressources informatiques de bases.

Les programmes d’applications : comme les compilateurs et les systemes de base de don-nees, les jeux, les programmes bureautiques definissent les manieres d’utiliser le materielafin de resoudre les problemes informatiques des utilisateurs.

Le systeme d’exploitation : qui controle et coordonne l’utilisation du materiel parmi lesdivers programmes d’applications et les utilisateurs.

Les utilisateurs : qui utilisent les programmes d’applications afin de realiser les taches vou-lues.

Le systeme d’exploitation peut alors etre envisager comme un programme d’allocation de res-sources. En effet le systeme informatique possede differentes ressources qui peuvent servir aresoudre un probleme : temps processeur, espace memoire, espace de stockage des fichiers, pe-ripheriques d’entree/sortie. Le SE est alors le gestionnaire de ces ressources, et les alloue auxprogrammes et aux utilisateurs quand cela est necessaire.

Bien sur il peut exister des requetes imcompatibles au niveau des ressources, il faut alorsque le processeur choisisse la maniere efficace est equitable pour les exploiter.

Afin de bien comprendre ce que font les systemes d’exploitation, il est important de suivreleur evolution durant les 30 dernieres annees.

1.2 Les Premiers Systemes

1.2.1 Les Automates

Les premiers furent les mecaniciens chinois, des le 2eme millenaire avant J-C avec les moteursa eau, a sable, les horloges. Puis les mecaniciens grecs : Archimede, Philon de Bysance, Herond’Alexandrie avec les systemes a base de poulies, vis sans fin, engrenages, plans inclinnes. Puisles Mecaniciens Arabes avec la conception de systemes mecaniques et d’automates sequentielsa arbre a came.

Page 16: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4 / 103 Chapitre 1 : Historique des Systemes Informatiques

������������

����������������� ����� ��!#"$�&%���"�!#'

( )�*,+-)/.,0�0�13254�67.,( ( 8:9<;�.�=�9<*#>�2

?A@#B�C�D:E:F�GIH�J�K LNM/M/O�PRQ S<O�T UWV�X Y$ZI[�\ ]^X�[_Z�[�`aZ�[3b c#d3e�f&g�h#i i�j,g<k�dml�dn jNed�l�d�l�h#i i�o3d3e

paq�r:s<r<tIu�qIv�p�wmx yaz�{:|<{<}I~�zI��y��5� �a���:�<�<�I���I������� �a���:�<�<�I���I�������

Fig. 1.1 – Vue des composants d’un systeme informatique

1.2.2 Le zero et la notation positionnelle (chiffres arabes)

Deux inventions fondamentales des mathematiques vont permettre de concevoir les ma-chines a calculer. L’apparition du zero et de la notation positionnelle en Inde, va permettre auxmathematiciens europeens de developper des systemes de numerotation en bases non decimaleset en particulier la base 2 : code binaire au lettre F. Bacon (1623), theorie de la divisibilite enbase m ≥ 2 par Blaise Pascal (1654), traite de la numerotation binaire de Leibnitz (1679).

1.2.3 Les machines a calculer

¤ 1623 la machine a calculer de Wilhelm Schickhard (1623) est capable de faire quatreoperations avec l’intervention d’un operateur,

¤ La Pascaline de Blaise Pascal (1642) basee sur un systeme de roues dentees est capablede d’additionner et de soustraire,

¤ La Machine de Leibnitz est capable de multiplier (1675).L’invention du clavier numerique (1714-1850) et des dispositifs d’impression vont permettre laication en serie de ces machines a calculer.

¤ Machine de Burroughs (1885),¤ Caisses enregistreuses (National Cash Register : NCR Corporation) vers 1884-1890,¤ Electrification des machines a ecrire (Eddison 1880),¤ Electrification des machines a calculer (1900).

1.3 La machine Analytique (1887)

Deux grands precurseurs, Charles Babbage et Adelaide (ADA) Lovelace inventent la machineanalytique qui possedait les caracteristiques suivantes :

¤ programmable avec des cartes perforees,¤ composee de 1000 registres de 50 chiffres chacun,¤ dispositif d’entree/sortie,

Yann MORERE

Page 17: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

1.3 La machine Analytique (1887) 5 / 103

¤ un organe de commande,¤ un magasin (store) permettant de stocker les resultats des calculs intermediaires,¤ un moulin (mill) qui constituait l’unite arithmetique,¤ et un mecanisme d’impression.

Il s’agit de la premiere machine de calcul programmable generaliste. Le meme materiel pourraetre utilise pour resoudre des problemes differents. Il apparait alors la notion d’algorithme.

1.3.1 Les systemes mecanographiques

En 1728 Falcon invente les cartes perforees pour l’operation des machines. Ces travauxsont repris par J.M. Jacquard qui ameliore ce systeme en ajoutant un tambour et un lecteura aiguilles mobile qui permet de lire des rouleaux perfores en continu. De la, naıt le premiermetier a tisser automatique en 1804 a Vaucanson.

H. Hollerith invente les machines a statistiques a cartes perforees en 1889. Il cree la Tabu-lating Machine Corporation qui deviendra par la suite IBM.

Le norvegien F.R. Bull invente une machine similaire en 1919. Ses brevets seront rachetespar une compagnie francaise en 1931 qui devient la Compagnie des Machines Bull.

1.3.2 Theorie des systemes et cybernetique

En 1938 les concepts intuitifs comme celui de la quantite d’information sont formalises parla theorie de l’information de C. Shannon en 1938.

La theorie generale des systemes (H. Simon, L. Von Bertalanfy, N. Wiener...) vise a de-velopper des modeles de systemes complexes dont on connait les entrees et sorties (reacteurchimique, plante...).

1.3.3 Les mathematiques de la calculabilite

Simultanement, de gros progres ont ete fait dans le domaine des mathematiques. Ces avan-cees seront decisives pour le developpement de l’informatique.

1.3.3.1 Logique Mathematique

Au 19eme siecle, G. Boole et A. de Morgan, posent les fondations de la logique des mathe-matiques modernes. Les notions de systemes logiques, de calcul de propositions et de theorie dela quantification sont developpees par T. Skolem en 1919, S.C. Kleene 1936, W.V. Quine 1937,K. Godel 1930-1938.

1.3.3.2 Theorie des nombres

Des mathematiciens s’attaquent aux bases axiomatiques de la theorie des nombres : G.Peano 1891, A. Church 1936, A. Turing 1936, K. Godel, S.C. Kleene.

1.3.3.3 Theorie des ensembles

La notion intuitive d’ensemble est formalisee par G. Cantor 1873 et A. Tarki 1923-1938 poureliminer de nombreux paradoxes.

Cours de Systemes d’Exploitation

Page 18: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6 / 103 Chapitre 1 : Historique des Systemes Informatiques

1.3.3.4 La machine de Turing

En 1936, A. Turing presente un modele formel d’une machine calculatoire. Ce modele ma-thematique detache completement le processus de calcul des details de l’implantation. Doncpratiquement, tous les systemes informatiques peuvent etre modelises comme une machine deTuring.

Ces travaux permettent d’integrer la notion de calculabilite : Existe-t-il un solution algo-rithmique a un probleme donne (meme si on n’en a pas encore trouve une).

1.3.4 Le Seconde Guerre Mondiale

Lorsque le seconde guerre mondiale survient, la technologie necessaire a la creation d’ordi-nateur existe depuis 20 ans. La guerre va donner d’autres sources de motivation :

¤ motivation politique (donc financement) a la prise de risque technologique,¤ assimilation des travaux des grands theoriciens des annees 30,¤ collaboration de certains de ces theoriciens avec des ingenieurs de grand talent pour

construire des systemes operationnels (Von Neumann, Turing et Mauchly).

Le projet le plus celebre de calculateur developpe durant la seconde guerre mondiale est leColossus (operationnel en 1943), qui visait a decoder les messages de la marine allemandeencodes par la machine Enigma.

1.3.5 Premiere Generation : 1944-1954

Apres la fin de la guerre, les efforts de developpement de calculateur se maintiennent. Ils pro-viendront surtout de l’armee (controle des reseaux radars, meteorologie...) dans les laboratoiresnationaux.

L’armee favorise aussi ce developpement de maniere indirecte par le financement de centresde recherche universitaires : Angleterre, Cambridge (MARK I, 1949), Pennsylvanie (ENIAC,1944-1946), au MIT (WHIRLWIND, 1945-1952) qui etait dedie a des problemes de controle etde temps reel, Illinois (ORDVAC et ILLIAC, 1949-1952).

Quelques compagnies commencent a faire des recherches et a developper des machines. IBMembauche H.H. Aiken, de l’universite d’Harvard, pour developper le MARK I (qui sera donnepar IBM a Harvard).

De leurs cotes, P. Eckert et J.W. Mauchly, qui etaient a la base du developpement del’ENIAC, fondent leur propre compagnie et creent l’UNIVAC I, et seront rachetes par RemingtonRand.

Toutes ces machines avaient a peu pres les memes caracteristiques :

¤ Systeme a base de composants mecaniques et d’electronique a lampes,¤ Machines tres complexes et tres volumineuses,¤ Concepteur = constructeur = programmeur = operateur¤ Programmation en language machine absolu et pas en langage d’assemblage (cablage de

carte),¤ Operation de l’ordinateur : reservation de la machine, cablage des cartes, elimination des

bugs,¤ Problemes traites : calculs numeriques (tables de fonctions).

Une des innovations technologiques les plus importantes a cette epoque est l’introduction descartes perforees au debut des annees 50. (faire un petit truc sur les cartes parforees)

Yann MORERE

Page 19: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

1.3 La machine Analytique (1887) 7 / 103

1.3.5.1 Entree dans l’ere commerciale

Ce nouveau domaine est investit par les compagnies des industries des machines mecano-graphiques et des caisses enregistreuses. Plus particulierement IBM, developpe le modele 701,compose de plusieurs boıtes interconnectees : 701, l’unite electronique et analytique de controle,706, l’unite de stockage electrostatique, 711, un lecteur de cartes perforees, 716, une imprimantealphabetique, 721, un enregistreur de carte perforees, 726, des lecteurs enregistreurs de bandesmagnetiques, 731, le lecteur enregistreur de tambour magnetique ainsi que l’unite d’alimenta-tion electrique.

IBM hesite pour la commercialisation de ses ordinateurs et saute finalement le pas sous lapression de la concurrence (UNIVAC I pour le recensement de la population des E.U.).

En 1953, le premier 701 est livre au centre national scientifique de Los Alamos, et cettememe annee IBM annonce la sortie du modele 650. A la fin de l’annee 1956, IBM a rattrappeRemington-Rand et prend la tete des fabriquants d’ordinateurs. La compagnie conservera cetteposition jusqu’a l’apparition des clones d’IBM PC.

1.3.6 Seconde Generation : 1955-1965

1.3.6.1 Invention des langages de programmation

¤ Assembleur¤ FORTRAN (FORmula TRANslator), John Backus 1954, est un langage compile particu-

lierement adapte aux calculs scientifiques. Il est toujours utilise de nos jours, apres avoirsubi de nombreuses modifications.

¤ COBOL (COmmon Business Oriented Language), G. Hopper 1959, est un langage com-pile specialise pour le traitement d’information de gestion et de comptabilite.

1.3.6.2 Progres Technologique

¤ Introduction du transistor en 1947 par J. Bardeen, H.W. Brattain et W. Shockley quiremplace alors les lampes.

¤ Apparition des bandes magnetiques, qui permettent de conserver les programmes impor-tants (assembleurs, compilateurs, etc...) qui doivent etre montes en memoire.

1.3.6.3 Elements de l’informatique actuelle

¤ l’ordinateur devient reellement un produit commercial,¤ separation des roles : programmeur 6= operateur,¤ notion de Job (programme ou ensembles de programmes) que le programmeur saisit sur

des cartes perforees et que l’operateur execute sur l’ordinateur,¤ regroupement des programmes a executer, ou taches (jobs), pour le traitement par lots

(batch processing). On assiste meme a l’introduction de la notion d’ordonnancement.Dans quel ordre faut il lancer les programmes afin de gagner du temps. Le temps machineest alors une valeur essentielle, et il est important d’optimiser l’utilisation de la machine.

Afin de diminuer ces temps d’inactivite de la machine, l’enchaınement automatique des travauxa ete developpe. On observe alors les vrais debuts des systemes d’exploitation avec l’apparitiond’un moniteur resident. Il s’agit d’un petit programme, toujours resident en memoire, qui permetde donner le controle de travail a un autre. Afin de permettre a ce petit programme de savoir quelprogramme executer, les cartes de controle ont ete inventees. Ces cartes de controle contiennentdes directives pour le programme resident. Il permet l’enchaınement automatique des travaux,le chargement et le dechargement en memoire, la gestion des entrees/sorties et la definition d’unlangage de commande.

Cours de Systemes d’Exploitation

Page 20: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

8 / 103 Chapitre 1 : Historique des Systemes Informatiques

����������� �

������������������������ ������ !�#"��$&%

')(�*,+�-/.�-102*�+�3�-�4 +�56�7 -�*,+�584 + 6#9 (�*�-/:;<+

=�>? @BA�CD�E >�F E!G�HIH @CKJ�L)MNL<O G J,@�C E

P�QR�SUT,V�W�X

Fig. 1.2 – Schema d’un moniteur resident

$JOB

$FNT

$LOAD

$RUN

$END

������������� �� ���� ��� ������������� �

���������������� �!�#"������$&%& �

Fig. 1.3 – Paquets de cartes pour le traitements par lots

Yann MORERE

Page 21: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

1.3 La machine Analytique (1887) 9 / 103

1.3.7 Troisieme Generation :1965-1980

L’apparition des circuits integres et des disques magnetiques donne une nouvelle fois uneacceleration a l’industrie de l’informatique. On voit alors apparaitre des familles d’ordinateursqui sont bases sur la meme architecture. Theoriquement les memes programmes doivent tournersur la famille d’une meme machine.

Il y a aussi l’apparition de la multiprogrammation. L’UCT (unite de calcul et de traitement)peut travailler sur un autre job, si un job effectue ses E/S.

La notion de spooling (Simultaneous Peripheral Operation On Line) apparait. Les pro-grammes (jobs) sont lus directement des cartes vers un disque afin de reduire les temps dechargement en memoire. Le disque est utilise comme un tres large tampon (buffer) afin d’at-tendre la completion des taches.

����������

��� ���������������� �����

� �!#"�$�%&"�')(+*,"-$�./(0%&"�1 2#354)6�27398/:�;&<= 2?>@:A<B4C8/6 = 2�>@:A<

Fig. 1.4 – Spooling

Lorsque plusieurs travaux sont sur un disque, il devient possible de faire de l’ordonnancement(scheduling) de travaux. Le systeme d’exploitation maintient plusieurs travaux en memoire ala fois. Lorsque l’UC devient inactive, le SE commute sur un autre travail et l’execute.

Les systemes interactifs font leur apparition, l’utilisateur peut entrer directement des com-mandes a l’ordinateur et obtenir les reponses (clavier, terminal a impression, terminal a ecrancathodique).

Dans ce cas l’utilisateur actif bloque la machine pour tous les autres. La solution est doncla temps partage, introduit par les systemes MULTICS (MIT Bell Labset General Electric)MULTiplexed Information and Computing Service et UNIX (K. Thompson, D. Ritchie, BellLabs).

1.3.8 Quatrieme Generation : 1980-1990

On observe l’apparition des micro-ordinateurs grand public, comme le PET de commodore,l’Apple II, le TRS 80, le Sinclair ZX80, Thomson MOXX. Puis, arrive l’IBM PC et son insepa-rable MS-DOS.

Mais le grand-public a besoin d’ordinateurs plus simple. On observe l’apparition d’interfacegraphique avec le XEROX Star, L’Apple Lisa puis l’Apple Macintosh.

Apparition du langage Postscript pour les imprimantes et des editeurs WYSIWYG.La fin des annees 90 verra le boum du multimedia et des reseaux informatiques (internet).Dans un cadre plus serieux de nouvelles technologies apparaissent :¤ Les systemes paralleles (multiprocesseurs), les processeurs partagent les memes ressources

(bus, memoire, horloge), on parle alors de systemes fortement couples. La capacite de

Cours de Systemes d’Exploitation

Page 22: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

10 / 103 Chapitre 1 : Historique des Systemes Informatiques

traitement est largement augmentee, meme si le doublement du nombre de processeursne divise pas le temps de traitement par 2. Il sont aussi plus fiables, puisque si l’un desprocesseurs tombe en panne les autres peuvent prendre le relais.

¤ les systemes distribues (repartis), les processeurs ont leurs ressources propres et ils com-muniquent entre eux par des lignes de communication comme des bus ou encore deslignes telephoniques. On parle de systemes repartis ou faiblement couples. Chaque unitede traitement (processeur) est nomme nœud, site, ordinateur. Ces systemes permettentdes partager les ressources entre les differents sites (partage de fichier), d’accelerer descalculs, en subdivisant ces derniers qui s’effectuent en concurrence sur differents sites, defiabiliser le systeme, par dispersion des fonctions dans son architecture, de communiquerentre les differents sites et les programmes se deroulant sur les differents nœuds.

¤ informatique temps reel (industrie), ou systeme temps reel est une forme de systemed’exploitation specialise. Il est utilise lorsqu’il existe des exigences imperieuses de tempsde reponse pour le fonctionnement d’un processeur. Un systeme d’exploitation temps reelpossede des contraintes de temps fixes et bien definies. Le traitement doit etre effectuedans les contraintes definies, sinon le systeme tombe en panne.

Yann MORERE

Page 23: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

11 / 103

Chapitre 2Structure de systemes informatiques

2.1 Introduction

Le but de cette partie est d’avoir une connaissance generale du fonctionnement de based’un systeme informatique. Ceci permettra ensuite de rentrer dans les arcannes du systemed’exploitation et d’en comprendre les differentes parties.

2.2 Organisation materielle

La plupart des systemes informatiques d’aujourd’hui sont toujours organises selon les prin-cipes de l’ordinateur IAS, concu par John Von Neuman et ses collegues du Princeton Institute forAdvanced Studies (1946-1952). L’implatation la plus commune de l’IAS utilise une architecture

���� ������ ������ ��������� �

������������ ���! �"#�� �!��$%� �� �'&�(*)+��$,� �

-�.�/0�1243526�7 .+0�8�97�:�2;3�2<�8 7*= 8!>*?@? 2

ACB�AEDGFHJIKHLNM HJO+D�P�QH�H�A!RATS*PUD!V�HJA

Fig. 2.1 – Structure de l’ordinateur IAS

de bus pour etablir les connections entre les differents modules du systeme. Les caracteristiquesimportantes du bus sont, sa largeur (en bits), la frequence a laquelle il fonctionnne (en Mhz)et le type de transfert autorise. Il existe plusieurs standard, comme le bus ISA, PCI, EISA,Microchannel...

2.3 Architecture generale

En premiere approche, un ordinateur est constitue d’un processeur qui effectue des traite-ments, d’une memoire centrale ou le processeur range les donnees et les resulats de ces traite-ments et enfin de peripheriques qui permettent l’echange d’informations vers l’exterieur. Tousces composants sont relies entre eux par l’intermediaire d’un bus, qui est l’artere centrale et leur

Page 24: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

12 / 103 Chapitre 2 : Structure de systemes informatiques

permet de s’echanger des donnees. Patriquement tous les ordinateurs actuels ont cette archi-tecture (Cf. figure 2.2). Les differences entre gros systemes industriels et ordinateurs personnelsresident dans les performances des composants.

���������������� ��� ��������

�������������� �!��" !�#

$�%�&�'�(�)�*,+- %�&�&�.�+�/0 - (�+�/�/�+13254

6,7�8�9�:<;>=@?�9

ACB�D�E�A�F�B�D<E�GIH�J

KCL�M�N�K�O�L�M<N�PIQ�R SCT�U�V�S�W�T�U<V�XIY�Z

[@\�\�]�^`_�a�b<c�\�de�f�e�g a�b<c

h�i�j�k�l�m�n�o�p�l

qCr�s�t�q�u�r�s<t�vIw�x

y�z�{�|�}�~�~�}���z}�����z���}�~���~�{@z<����}�~

�C�������������<���I���

�C�������������<���I���

Fig. 2.2 – Architecture generale d’un ordinateur

La memoire est un organe passif qui repond a des a des ordres indiques par les files decontrole du bus. En repons a un ordre d’ecriture, elle range la valeur representee par les filsde donnees du bus dans un emplacement defini par les fils d’adresse du bus. En reponse a unordre de lecture, elle fournit sur les fils de donnees du bus la valeur memorisee a l’emplacementdefini par les fils d’adresse. Le nombre de fils de donnees du bus definit les nombres de bitsdes emplacements memoire. C’est une caracteristique importante pour les performances del’ordinateur, puisqu’elle determine le nombre de bits pouvant etre lus ou ecrits en memoire parune seul operation. Le nombre de fils d’adresse du bus definit la taille maximale de la memoirecentrale. Le bus est gere par un controleur, parfois integre au processeur, qui empechesonutilisation simultanee par plusieurs organes.

2.4 Architecture du processeur

Le processeur est l’organe qui effectue les traitements suivant un algorithme defini parle programmeur. Il est constitue essentiellement de trois partie :

¤ l’Unite Arithmetique et Logique (UAL) est capable d’effectuer les oprerations elemen-taires habituelles sur les valeurs binaires, telles que l’addition, la soustraction, le OUlogique, les decalages ...

¤ Les registres permettent de memoriser des resultats intermedaires ou des etats particuliersdu processeur. Ils sont en general en petit nombre, mais d’acces tres rapide. Certains ontun role particulier, comme l’accumulateur, le compteur ordinal ou le registre d’instruction.

¤ Le decodeur-sequenceur controle l’execution des differentes phases d’instructions.Le mecanisme de fonctionnement est assez simple. Le decodeur sequenceur repete indefinimentla sequence d’operations suivantes :

1. lecture memoire a l’adresse indiquee par le compteur ordinal, et rangement du resultatdans le registre d’instruction,

2. decodage de cette instruction pour en executer les differents phases.

Les instructions sont en general assez rudimentaires. Ce sont essentiellement des operationsde transfert de donnees entre les registreset l’exterieur du processeur (memoire et peripherique),

Yann MORERE

Page 25: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

2.5 Les entrees/sorties 13 / 103

������������

��� �����������

���������������

���������� �!"����#��

$�%�&�'($�)�*�+&�'�,.-�+�/�0�)

1 %�23*�)�,�&�)"*�+

4�5�5�6�786�9�4�:�;�6�<

=?>�@�A�BDCFE�@�A�G�HIB"A�@�J3K�LLMAFNPO�Q�@�J.K�L

... ...

Fig. 2.3 – Architecture generale d’un processeur

ou des operations arithmetiques et logiques avec un ou deux operandes. Pour ces dernieres ope-rations, un registre particulier, l’accumulateur, est souvent utilise implicitement comme l’un desoperandes et comme resultat. En general le deroulement de l’instruction entraıne l’incrementa-tion du compteur ordinal et donc l’execution de l’instruction qui suit. Notons que le transfertd’une valeur dans le compteur ordinal entraıne un branchement a l’adresse correspondant acette valeur. La tendance naturelle a ete de contruire des processeurs avec un jeu d’instructionde plus en plus large. On pensait que le programmeur utilisarait les instructions ainsi disponiblespour ameliorer l’efficacite de ses programmes. Ceci a conduit a l’architecture CISC (ComplexInstruction Set Computer). Ce pendant on a constate que les programmes contenaient toujoursles memes instructions, laissant une partie du jeu d’instruction tres peu utilise. Une nouvellesfamille de processeur a vu le jour avec une nouvelle architecture : l’architecture RISC (ReducedInstruction Set Computer), qui offre un jeu tres reduit d’instructions simples mais tres rapides.

2.5 Les entrees/sorties

Le principe elementaire mis en œuvre pour l’echange de donnees entre deux constituantsphysiques est donne en figure 2.4. En dehors des donnee proprement dites, deux liaisons sup-plementaires sont necessaires pour permettre d’une part a l’emetteur de la donnee de signalerla presence effective de cette donnee sur les fils correspondants, et d’autre part au recepteur designaler qu’il a lu la donnee.

Cours de Systemes d’Exploitation

Page 26: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

14 / 103 Chapitre 2 : Structure de systemes informatiques

������������ ���������������������������

�������! �"$#�%&��#'�(���)�#'*�&�+�"$#

,�-.,�/!0�1$2�34�.2'.5�--6�2'4�2�7�32

Fig. 2.4 – Protocole elementaire d’entrees/sorties

2.5.1 Les entrees/sorties programmees

La maniere la plus simple d’assurer la liaison entre le bus et un peripherique, est de faire unesimple adaptation des signaux evoques ci-dessus. On parle alors d’une interface. Le processeuradresse directement le peripherique, soit par les instructions habituelles d’acces a la memoirecentrale, l’interface jouant alors le role d’un (ou plusieurs) emplacement de memoire, soit pardes instructions specialisees qui assurent le transfert d’une donnee elementaire avec un registreou un emplacement memoire. Dans tous les cas, le programmeur doit assurer le protocoleelementaire d’echange de la figure 2.4, on parle alors d’entrees/sorties programmees.

tant que il_y_a_des_donnees faire

tant que donnee_suivante_non_prete faire fait ; (at-

tente de la donnee)

lire_la_donnee ;

traitement_de_la_donnee ;

fait ;

L’algorithme ci-dessus donne le schema d’un tel programme de lecture. On constate une boucled’attente de donnee. De plus si le peripherique est lent, le processeur est monopolise pendanttoute la duree de l’echange.

2.5.2 Les entrees/sorties par acces direct a la memoire (DMA)

Afin d’accroıtre le debit des entrees/sorties et de diminuer la monopolisation du processeur,la premiere solution a ete de deporter un peu de fonctionnalite dans le dispositif qui relier leperipherique au bus, de maniere a lui permettre de ranger directement les donnees provenantdu peripherique en memoire dans le cas d’une lecture, ou d’extraire directement ces donnees dela memoire dans le cas d’une ecriture. Cest ce que l’on appel l’acces directe a la memoire, ouencore le vol de cycle.

La figure 2.5 schematise le mecanisme d’acces direct a la memoire. L’execution d’un transfertse deroule de la maniere suivante :

¤ le processeur informe le dispositif d’acces direct a la memoire de l’adresse en memoireou commence le tampon (buffer) qui recevra les donnees s’il s’agit d’une lecture, ou quicontient les donnees s’il s’agit d’une ecriture. Il informe egalement le dispositif du nombred’octet a transferer.

¤ le processeur informe le controleur des parametres de l’operation proprement dite.¤ pour chaque donnee elementaire echangee avec le controleur, le dispositif demande au

processeur le controle du bus, effectue la lecture ou l’ecriture memoire a l’adresse contenuedans son registre et libere le bus. Il incremente ensuite cette adresse et decremente lecompteur.

¤ lorsque le compteur atteint zero, le dispositif informe le processeur de la fin du transfertpar une ligne d’interruption.

Yann MORERE

Page 27: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

2.6 Les interruptions 15 / 103

����������� ������������

���������������� !� "$#�%'&)('('& *,+.-0/2143)526 728.9�9�:);)<=2>@?'ACB.?'>ED4>GFH=�I JLK)K)M,?N=�>@O'P)K,DRQ0S)Q0B.>EO'P

T,U.VXW4Y'Z.[@\,]�Y^$_)`ba�cEd4e)fge)hXdi2j)kmlLn�i2j

o2p)qmrLs�o2pt$u)vbw�xEy4z){gz)|Xy}E~X�4�)�'�'�����4}@�.~

Fig. 2.5 – Mecanisme d’acces direct a la memoire

Pendant toute la duree du transfert, le processeur est libre d’effectuer un traitement quel-conque. La seule contrainte est une contrainte de ses propres acces memoire pendant toutecette meme duree, car il doit parfois retarder certains de ses acces pour permettre au dispositifd’acces direct a la memoire d’effectuer les siens (d’ou le terme vol de cycle).

La limitation du debit inherent au mecanismeest en general lie au debit potentiel de lamemoire.

Dans le cas de peripheriques rapides (autre qu’un clavier), si on utilise le systeme d’inter-ruption simplement, l’UCT ne fait plus que gerer des interruptions, et n’a plus de ressourcespour les calculs. Le DMA permet de remedier a cela. Avec cet Acces Direct a la Me-moire, le controleur de peripherique transfert des blocs entiers de donnees, dans la memoiresans l’intervention de l’UCT.

On a alors une seul interruption par bloc a la place d’une interruption par octet.

2.5.3 Les entrees/sorties par processeur specialise

La troisieme facon de relier un peripherique avec la memoire est d’utiliser un processeurspecialise d’entrees/sorties, c’est a dire de deleguer plus d’automatisme a ce niveau. Dans lemecanisme precedent c’est le processeur principal qui avait la charge de la preparation detous les dispositifs, acces direct a la memoire, controleur, peripherique..., pour la realisation del’operation. L’utilisation d’un processeur specialise a pour but de reporter dans ce dernier laprise en charge de toute cette preparation, mais aussi des operations plus complexes comme lecontrole et la reprise d’erreurs. L’interet est de faire executer des taches de bas niveau par unprocesseur moins performant et donc moins couteux a realiser, afin de preserver le processeurprincipal pour des taches plus nobles.

2.6 Les interruptions

Ce mecanisme a ete imagine pour permettre a un dispositif executeur d’interrompre le derou-lement normal du processeur pour lui faire executer un traitement specifique. Un peripherique

Cours de Systemes d’Exploitation

Page 28: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

16 / 103 Chapitre 2 : Structure de systemes informatiques

peut signaler la fin d’une operation d’entrees/sorties precedemment demandees, ce qui permetau systeme de reprendre l’execution du programme interrompu.

Le mecanisme est obtenu en modifiant legerement le fonctionnement du decodeur-sequenceurduprocesseur par l’introduction d’une troisieme phase :

1. lecture memoire a l’adresse indiquee par le compteur ordinal, et rangement du resultatdans le registre instruction,

2. decodage de cette instruction pour en executer les differentes phases,

3. s’il y a une demande d’interruption, alors la prendre en compte.

La prise en compte de l’interruption peut se faire de differentes manieres. Puisqu’il s’agit d’in-terrompre le deroulement normal des instructions, il suffit de modifier le compteur ordinal.Mais comme l’on desire reprendre ulterieurement le programme interrompu, il faut aussi sau-vegarder la valeur de ce compteur. En general, on utilise un PSW Program Status Word,ou mot d’etat du programme, qui contient en particulier, le compteur ordinal ainsi que certainsindicateurs sur l’etat courant du processeur. La prise en compte de l’interruption consiste a ran-ger en memoire ce PSW dans un emplacement determine ou repere par un registre particuliercomme le pointeur de pile et a charger a nouveau ce PSW.

Afin d’eviter de ranger inutilement en memoire des registres, le processeur ne range que leminimum lors de la prise en compte de l’interruption. Si l’on desire reprendre ulterieurementle programme interrompu, les instructions qui constituent le traitement de l’interruption, sous-programme d’interruption, doit ranger en memoire le contenu de l’ensemble des registres duprocesseur qui ne l’ont pas ete lors de la prise en compte de l’interruption, pour permettre cettereprise ulterieure. On nomme cela la sauvegarde du contexte. Lorsque le contexte est sauvegarde,le sous-programme analyse la cause de l’interruption et effectue le traitement approprie. Ilpeut ensuite restituer le contexte du programme interrompu. Il se termine par une instructionspeciale qui demande au processeur de restituer le PSW du programme interrrompu, entraınantsa reprise effective. Il y a des difficultes si un nouvelle interruption arrive avant la fon du sous-

��������� � ����������� �������������������

���� �!#"�"�$&%& (' )��*!(+& �!�"��&!

,.-�/ 0�121 354#6�7�8&9�1:/ 3�9�1�-�-�;&8&9�/ 6�3

<>=�?&@BA�CD�=FE�D�G�HIH�JLK M�N�J�D�D�?&C&N�K =�M

O&P�Q>R�S#T�P�U�V&SLVQ5W#X�Y�Z�S([&Z�S

\^]�_(`&]�a�_(`&]L_#b�c&d�]

e.f�g�h i�j k�j l�inm&j:oqp h l�i�j�f�f�r&s&i(h t�l

u^v#w�x�y�z&{�yFx�| }�~5�z5�#}�~�x�v(�>x�v

���(�&�� ��� ��� ������� � �����#�����&�&�(� ������#���(� ���>�(� ���5������>�

Fig. 2.6 – Deroulement d’un sous-programme d’interruption

programme d’interruption. Si aucune precaution n’est prise, le sous-programme d’interruptionest de nouveau appelle avant sa fin, entraınant la sauvegarde du contexte du sous-programmed’interruption et ainsi la perte du contexte du programme interrompu. Ce ptrobleme est resolupar le masquage des interruptions qui interdit au processeur la prise en compte d’interruptionsi elle est masquee. Cela n’annulle pas la demande d’interruption proprement dite, qui n’estpas consideree par le processeur. Lorsque cette instruction sera executee par le processeur pourdemasquer cette interruption, ce dernier pourra alors la prendre en compte.

Yann MORERE

Page 29: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

2.7 Notion d’appels systeme 17 / 103

2.7 Notion d’appels systeme

2.7.1 Mode maıtre-esclave

En general, il est necessaire d’empecher le programme d’un utilisateur de perturber le fonc-tionnement global du systeme ou les programmes des autres utilisateurs. Cela implique qu’iln’aie pas l’acces a l’ensemble des ressources de la machine mais seulement celles qui lui ont ereallouees. La solution la plus couramment adoptee est de distinguer deux modes de fonction-nement du processeur, le mode maıtre et le mode esclave. Dans le mode maıtre le processeura acces a toutes les ressources de la machine. Dans le mode esclave, certaines instructions luisont interdites. Le fonctionnement du decodeur-sequenceur est modifie en ajoutant une phaseintermediaire.

1. lecture memoire a l’adresse indiquee par le compteur ordinal, et rangement du resultatdans le registre instruction,

2. si le processeur est en mode esclave, verification que l’instruction est autorisee,

3. decodage de cette instruction pour en executer les differentes phases,

4. s’il y a une demande d’interruption, alors la prendre en compte.

L’indicateur de mode de fonctionnement maıtre/esclave fait partie du mot d’etat programme.

2.8 Fonctionnement d’un systeme informatique

Le systeme est compose de l’UCT (unite de calcul et de traitement) et d’un certains nombresde peripheriques (disques, etc...) connectees sur un bus commun, fournissant l’acces a la memoirepartagee. On peut noter qu’un controleur s’occupe d’un type de peripherique particulier.

���� ������ �

�� �������������������� � ���! #" �$�

%�&�'�(�)�*&�+�,�-�).0/21!354 ) 1!376 '�(�,98

:�;�<�=�>�?;�@�A�B�>CED B�<�F=�GA�HC AJILK�< C A9H

M�N!O#PRQ�SUT�V!W#XRY�Z

[�\^]�_�[!\�`�a�b�c

dfe�g�h�i�je�kl9m�ion�lJprql9p�e�s�i#l

Fig. 2.7 – Structure d’un Systeme Informatique

Cours de Systemes d’Exploitation

Page 30: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

18 / 103 Chapitre 2 : Structure de systemes informatiques

Lorsque l’ordinateur est mis sous tension, un programme initial s’execute (boot code, pro-gramme d’amorcage). Son travail est d’initialiser tous les composants de l’ordinateur en partantdes registres de l’UCT jusqu’aux peripheriques.

Ensuite il doit pouvoir charger le systeme d’exploitation et commencer a l’executer. Le SEdemarre alors le premier processus et attend un evenement. Le plus souvent il s’agit d’uneinterruption materielle ou logicielle. Le materiel interrompt l’UCT en lui envoyant un signal surle bus systeme. Dans le cas d’une interrruption logicielle il s’agit d’un appel systeme. L’UCTarrete son travail actuel, et transfere l’execution a l’adresse de l’interruption. La une routined’interruption s’execute, et lorsqu’elle a termine, l’UCT reprend son calcul.

Les interruptions sont tres importantes, car c’est par elle que les programmes peuvent acce-der au materiel. Ces interruptions sont en nombre fini, et il est possible d’acceder aux routinesd’interruption par l’intermediaire d’une table stockee dans la memoire basse. On parle alors devecteur d’interruptions. Ce tableau d’adresse est utilise pour indexer un peripherique unique.

Mais pendant que nous executons notre routine d’interruption, il ne faut pas perdre le travailque l’on etait en train de faire. Donc le plus souvent l’adresse de l’instruction interrompue eststockee dans la pile systeme (stack).

Tout le systeme fonctionne comme cela. Des que l’on veut atteindre un peripherique il fautinterrompre l’UCT.

2.9 Structure d’entrees/sorties

Comme nous l’avons deja dit, chaque peripherique est rattachee a un controleur specifique(IDE, SCSI), Souvent il contient peu de memoire et des registres specialises. Son principal butest de deplacer les donnees entre les unites de peripheriques qu’il controle.

2.9.1 Comment cela fonctionne

Pour demander une operation d’entrees/sorties, l’UCT charge les registres du controleurqui examine alors les les actions a effectuer (lecture, ecriture). Une fois l’operation terminee, ilimforme l’UCT. Cettet communication se fait par l’intermediaire d’un interruption. Il existe 2types E/S :

¤ E/S synchrone, le controle est pris par le processus d’E/S, et le controle est rendu auprocessus utilisateur a la fin des actions d’E/S,

¤ E/S asynchrone, le controle est rendu tout de suite au processus utilisateur, puis lecontroleur s’occupe des operations d’E/S et informe en fin de traitement. Ceci permetd’augmenter l’efficacite du systeme.

2.10 Structure de Stockage

La seule grande zone de stockage a laquelle le processeur (UCT) puisse acceder est la me-moire principale (RAM), qui est un gigantesque tableau d’octets regroupes en mots et chaquemots possede son adresse propre.

L’ideal serait que les programmes et les donnees soient residents en memoire (pour unequestion de rapidite), mais cela est impossible :

¤ La memoire principale est souvent trop petite,¤ c’est un procede de stockage volatile, et une panne de courant signifie la perte des donnees.

Il est donc necessaire d’avoir une memoire auxiliaire (souvent des disques magnetiques, optiques,bandes).

Yann MORERE

Page 31: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

2.10 Structure de Stockage 19 / 103

�����

����� ���

������� �������

�������� �!#"%$

&�')(+* ,�(.-

/�01 / 1�2�14351�6 /87�9 1�:<;1�6 9 =>/ 7�9 1

Fig. 2.8 – Mecanisne d’un disque dur

Il est alors possible de montrer une hierarchie de stockage en partant des memoires les plusproche du processeur et donc du plus rapide, aux plus eloignees et plus lentes.

���������������

��� ����

���� ������� ��� ���� �!�� �#"�$%�

&�'�(�)+*�,.-,0/%,0132�4�5�67'�)+*�,

8�9�:�;+<�=?>A@CB�DFE=3GH9�;+<�=

I�J�K�L+M�N?O�P�QHJ�L+MRN

SUT�V7W�X0Y[ZATC\�V^]X`_Ha�b+c�X�Y

Fig. 2.9 – Hierarchie de dispositifs de stockage

Il est important de remarquer la tres grande difference de vitesse de traitement entre lesmemoires volatiles et les disques. Donc afin de ne pas trop penaliser la vitesse globale du systemeet de pallier cette difference, les memoires cache ont ete ajoutees.

Elle sont chargees de stocker les donnees qui sont utilisees tres souvent, afin que le systemen’aie pas a les recharger a partir d’un peripherique lent. Il est a noter que ce stockage n’est quetemporaire.

Mais ces memoires rapides sont d’une taille limitee, donc la gestion du cache est tres im-portante. En effet un cache bien dimmensionne couple a un programme de gestion astucieux,peux eviter de nombreux acces a un peripherique lent comme les disques.

Cours de Systemes d’Exploitation

Page 32: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

20 / 103 Chapitre 2 : Structure de systemes informatiques

2.11 Protection du systeme informatique

Le passage a des systemes multitaches, multi-utilisateurs et a temps partage, a apporter denouveaux problemes. Les plus important sont les suivants :

¤ une erreur sur un programme peut se repercuter sur les autres et meme sur le SE,¤ la securite des donnees.

Il est donc necessaire de proteger toutes les composantes du systeme informatique.Il faut dans un premier temps proteger le systeme d’exploitation et les donnees d’un pro-

gramme qui fonctionne mal et qui risque de tout detruire. Pour cela, on a introduit deux modesd’execution :

¤ le mode utilisateur¤ le mode superviseur, systeme, moniteur ou encore provilegie.

Il s’agit alors de ne pas donner tous les droits a un programme utilisateur. Celui ci s’executeraen mode utilisateur, et les fonctions qui pourraient etre dangeureuses pour le systeme seront enmode superviseur. Et, bien sur, un mecanisme de controle sera effectuer pour passer d’un modea l’autre.

Il s’agit typiquement de la difference entre un Unix et un systeme base sur MS-DOS.De meme afin d’eviter des instructions illegales d’E/S, ces dernieres seront definies comme

des instructions privilegiees. L’utilisateur ne pourra donc pas emettre directement ses instruc-tions. Il devra passer par le SE qui va controler ces appels au materiel.

Il est alors aussi necessaire de proteger le vecteur d’interruption, car c’est lui qui permetd’acceder aux peripheriques. On protegera aussi les routines de traitement d’interruption, d’ouau final la protection de la memoire, puisque tout ceci est place en memoire. Cette derniereprotection va permettre en meme temps de proteger les programmes des utilisateurs entre eux.

La derniere chose dont il est necessaire de s’assurer, c’est que le SE a toujours le controle.Il faut a tout pris eviter les blocages. Pour cela on utilise une horloge, qui va generer desinterruptions sur l’UCT, et le SE peut alors reprendre le controle. Cette horloge est aussiutilisee dans les systemes a temps partages pour faire commuter les taches.

Yann MORERE

Page 33: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

21 / 103

Chapitre 3Structures des systemes d’exploitation

3.1 Introduction

Il s’agit d’une partie tres importante de tout systeme informatique.Un systeme d’exploitation (SE ou OS) est un programme qui permet de faire la liaison entre

l’utilisateur et le materiel de l’ordinateur. Sans celui-ci les applications telles que les SGBD, lesoutils PAO, les traitements de texte ne pourraient pas fonctionner. De plus, il doit permettrea l’utilisateur d’executer ses programmes de maniere pratique et efficace (avec par exemple lesAPI (de programmation) Application Program Interface et la gestion simultanee de plusieursprogrammes).

Ce systeme doit assurer le fonctionnement correct du systeme informatique. Il fournit aussicertains services aux progammes et aux utilisateurs (faciliter la programmation par exemple).Ils sont souvent differents d’un systeme a l’autre, mais on retrouve des services communs.

Le systeme d’exploitation peut aussi etre vu comme un programme de controle qui verifiel’execution des programmes utilisateurs afin d’eviter les erreurs et les mauvaises utilisations.Pour cela il s’occupe principalement du controle des peripheriques.

Une definition plus commune consiste a expliquer que le SE est le seul programme tournanta tout moment dans l’ordinateur (on parle aussi de noyau ou kernel).

Pour l’utilisateur final, le but principal est la commodite du systeme d’exploitation. L’ex-ploitation efficace des ressources est alors un probleme secondaire. Mais dans le cadre d’unsysteme partage multi-utilisateurs, cet objectif est des plus important car ces systemes coutenttres cher et il est important de les rendre les plus efficaces possible.

Ces deux objectifs, commodite et efficacite, sont souvent contradictoires. Mais par le passela notion d’efficacite etait la plus importante. c’est pour cela que la plupart des theories seconcentrent sur l’utilisation optimale des ressources du systeme.

3.2 Le modele processus-ressources

Le systemes d’exploitation est un intermediaire offrant un ou plusieurs niveaux d’abstractionentre les usagers et un ensemble de ressources : UCT, memoire, disque, peripheriques. L’usagerpresente des demandes d’acces aux ressources suivantes :

¤ l’UCT pour effectuer des operations arithmetiques et logiques,¤ la memoire, pour conserver temporairement l’information,¤ des disques, ou autres systemes de memoires secondaires, pour conserver les informations

de maniere durable,¤ claviers, moniteurs, souris, imprimantes, et autres peripheriques d’E/S pour introduire

des donnees dans le systeme informatique et visualiser les resultats.

Page 34: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

22 / 103 Chapitre 3 : Structures des systemes d’exploitation

������������ �������������� ����� ����

! " #$�$�%'& (*)�)�+', -/.103254768.94;:�03<=<=>@?BA'0C:1?@D5E=.

F GH�IKJ L�MKNO�PKQR�ST RVU5W@X T

YCZ/[1\8]7^�_�`5ab@c�d \ b@c Y3e5[1]7^f/g@h8ikj=l

Fig. 3.1 – Le SE comme intermediaire entre usagers et ressources systemes

Un autre modele du systeme d’exploitation consiste en un intermediaire presentant des niveauxd’abstraction entre un ensemble de processus et les ressources du systeme que des processusutilisent. Le systeme d’exploitation offre un ensemble de services aux processus, ce qui necessite

������������ �������������� ����� ����

!" # $ % &

' ( ) * + , -

Fig. 3.2 – Modele revise : Processus et Ressources

la resolution de nombreux problemes de partage de ressources.

3.3 Composants et fonctions

Pour creer un systeme aussi grand et complexe qu’un systeme d’exploitation, il est necessairede le decomposer en pieces plus petites. Chacune d’elles sera un fonction bien delimitee dusysteme. Bien que les systemes d’exploitation n’aient pas tous la meme structure, ils partagentle meme but : supporter et exploiter les composants du systeme informatique (ressources) decrits

Yann MORERE

Page 35: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

3.3 Composants et fonctions 23 / 103

precedemment.

3.3.1 Gestion de l’UCT : Gestion de processus

L’UCT (Unite de Calcul et de Traitement) est une ressource du systeme informatique, dontle SE doit optimiser l’utilisation.

On peut considerer un processus comme un programme en cours d’execution. Mais ce n’estpas la seul definition possible, car un travail de traitement par lot est un processus. On considereparfois le processus comme un programme en mouvement.

Mais attention, un programme en lui-meme n’est pas un processus, car il s’agit d’une entitepassive, alors que le processus, lui, est une entite active.

On peut dire que le processus est l’unite de travail d’un systeme.

Un des buts du systeme d’exploitation est la gestion des processus :

¤ Activer un processus,¤ Suspendre, reactiver un processus,¤ Tuer un processus¤ Surveiller l’operation d’un processus,¤ Synchronisation de processus

de maniere a ce que l’UCT soit utilisee de maniere optimale.

3.3.2 Gestion des fichiers

C’est une des composantes les plus visibles d’un systeme d’exploitation. Le stockage d’infor-mation peut se faire sur differents types de support. Afin de permettre une utilisation pratique,le systeme d’exploitation propose une vue logique uniforme de toutes ces ressources de stockageen faisant abstraction des proprietes physiques et definit une unite de stockage : le fichier.

C’est un ensemble d’informations definies par son createur. Habituellement les fichiers re-presente des programmes et des donnees (numeriques, alphanumeriques, alphabetiques).

Physiquement le fichier se compose d’une sequence de bits, octets, lignes ou enregistrements.

Le systeme d’exploitation a la responsabilite des activites suivantes concernant les fichiers :

¤ Creation et suppression de fichiers,¤ Creation et suppression de repertoires,¤ Primitives pour manipuler des fichiers et des repertoires,¤ Correspondances entre les fichiers et la memoire auxiliaire,¤ Sauvegarde des fichiers sur des supports d’information stables (non volatiles).

3.3.3 Gestion de la memoire

Pour etre executer un programme doit etre transferer a des adresses absolues de la memoirecentrale. Pendant son execution, L’UCT accede aux instructions et aux donnees contenues dansla memoire, et a la fin de l’execution, cet espace memoire est declare disponible et le programmesuivant peut etre charge.

Afin d’ameliorer l’utilisation de l’UCT diverses approches de la gestion memoire existent.

Le systeme d’exploitation est responsable des activites suivantes :

¤ Connaitre en permanence les parties de memoire en cours d’execution, et par quel pro-gramme,

¤ Decider quels processus doivent etre charges en memoire quand on dispose de l’espacememoire,

¤ Affecter et desaffecter l’espace memoire.

Cours de Systemes d’Exploitation

Page 36: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

24 / 103 Chapitre 3 : Structures des systemes d’exploitation

3.3.4 Autres composants

¤ La gestion des entrees/sorties,¤ Systeme de protection (memoire, fichier, UCT, E/S...),¤ Connection a un reseau dans la cadre de la communication dans un systeme distribue,¤ Interpreteur de commande (de l’usager) :

. interface entre l’usager et le systeme d’exploitation,

. choix : ligne de commande (shell), ou interface graphique.

3.3.5 Services d’un systeme d’exploitation

Services fournis :¤ pour les programmes,¤ pour les utilisateurs de ces programmes.

1. Execution de programmes,

2. Operation d’entrees/sorties,

3. Manipulation du systeme de fichiers,

4. Communication entre processus,

(a) par memoire partagee (processus sur le meme ordinateur),

(b) par passage de message (ordinateurs differents),

5. Detection et gestion d’erreurs

Services fournis au systeme d’exploitation lui-meme :

1. Allocation de ressources,

2. Suivi et gestion des comptes,

3. Protection.

3.3.6 Acces aux services du systeme d’exploitation

L’usager peut acceder au services du systeme d’exploitation :¤ en lancant des appels systemes, a l’interieur d’un programme,

. Gestion de processus– charger et executer– creer et terminer un processus– activer ou suspendre des processus– obtenir et fixer les attributs d’un processus– attendre pendant un certain temps– attendre un signal, un evenement– allouer et liberer de la memoire

. Manipulation de fichier– creer et detruire des fichiers– ouvrir et fermer un fichier– lire et ecrire un fichier– obtenir et fixer les attributs d’un fichier

. Manipulation de peripheriques– requerir et relacher un peripherique– lire, ecrire– obtenir et fixer les attributs d’un peripherique

Yann MORERE

Page 37: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

3.4 Structure d’un systeme d’exploitation 25 / 103

– attacher ou detacher logiquement un peripherique. Maintenance de l’information

– obtenir et fixer la date, l’heure– obtenir et fixer les donnees du systeme

. Communication– creer et detruire des connections pour la communication– envoyer et recevoir des messages– transferer de l’information d’etat– attacher ou detacher des peripheriques

3.4 Structure d’un systeme d’exploitation

Quelle que soit la taille du systeme, il doit etre concu soigneusement, pour fonctionnercorrectement et etre facilement modifiable.

Une approche courante (linux, Unix) consiste a subdiviser les taches en composants pluspetits, plutot que d’avoir un gros systeme monolithique. Chacun de ces modules constitue uneportion bien definie du systeme.

3.4.1 Structure simple (systemes monolithiques)

¤ en fait il n’y a pas de structure,¤ le SE est un ensemble de procedures dont chacune peut appeler n’importe quelle autre,

sans restriction.

Il s’agit souvent de SE qui on grandit a partir d’un systeme original simple :

¤ les premieres versions d’Unix,¤ Mac OS¤ MS-DOS

������������ ��� ������ � ������ �����

�������������� "!�#$!�%'& ��� (�*) '!�+ ,* �-.%

/�0 1 2�3�4'576*4(8:94�;�0 8*<794�;�0 =�>�4'56*4@?BA.C D@E(A

FHG I J�K�L'MON$L(P:QL�RSG P�T:QL�RSG U.V*L'MOW7XZY([]\ ^OY`_Ba

Fig. 3.3 – Structure d’un systeme d’exploitation MS-DOS

Cours de Systemes d’Exploitation

Page 38: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

26 / 103 Chapitre 3 : Structures des systemes d’exploitation

3.4.2 Structure en couches

A l’oppose des structures monolithiques, on trouve les systemes organises par couches, etune communication se cree entre couches adjacentes. Le principal avantage de cette approcheen couche est la modularite. Chaque couche est concue de maniere a n’utiliser que les fonction-nalites de la couche inferieure.

L’archetype des strustures en couches est le systeme THE (Technische Hogeschool Eind-hoven) concu par Djikstra en 1968. Ce systeme se decompose en 6 couches comme le montrela figure 3.1. La difficulte majeure de l’approche en couches consiste a determiner les diverses

Couche 5 : programmes utilisateurs

Couche 4 : bufferisation pour les peripheriques d’entree/sortie

Couche 3 : driver pour la console de l’operateur

Couche 2 : gestion memoire

Couche 1 : scheduling de l’UC

Couche 0 : materiel

Tab. 3.1 – Structure en couche de THE

couches qui vont composer le systeme de maniere adequate. Une soigneuse planification estnecessaire. De plus ces implementations sont souvent moins performantes que d’autres types destructures. En effet par exemple pour faire un appel E/S (acces au materiel) il est necessairede faire appel a toutes les couches. Chaque couche ajoute une surchage a l’appel initial.

Les systemes actuels se portent donc sur une structure avec moins de couches et plus demodularite (par exemple OS2).

3.4.3 Structure a noyau (kernel)

L’architecture en couches est conceptuellement elegante, mais se revele peu efficace (toutacces au materiel demande au moins 5 appels de fonctions en cascade). En outre, les systemesconcus de cette maniere sont souvent peu portables.

L’architecture de noyau (kernel) est preferee de nos jours. Le kernel regroupe un ensemblede fonctions du systeme qui sont independantes du materiel. Elles sont donc tres facilementportables d’une plate-forme a une autre. Le kernel gere les aspects d’acces a l’UCT et aux res-sources ainsi qu’au systeme de fichier. Il communique avec les pilotes (driver) de peripheriquespour gerer les appels systemes en provenance des processus.

Les processus communiquent avec le kernel a travers les API (Application ProgrammingInterface) qui definissent la syntaxe et la semantique des appels systeme. Ils le font aussi atravers les API d’extensions du systeme qui ajoutent un ensemble de fonctionnalites (interfacegraphique et gestionnaire (manager) de fenetres, QuickTime, DirectX, etc...).

Idealement le kernel devrait comporter un petit nombre de fonctions et devraient etre detaille reduite.

Malheureusement, cette reduction de la taille du kernel se fait le plus souvent au detrimentdes performances du systeme : plutot que d’ecrire un grand nombre de fonctions specialisees, on

Yann MORERE

Page 39: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

3.4 Structure d’un systeme d’exploitation 27 / 103

� � � � � �

����� ����������������

� � �! �" # $&%�')(+*, -/. # , - �!01" $2%354)6 758)9 :5;)< =�> ? @1ACB

DFEHG

IKJML N�OPJ

Fig. 3.4 – Organisation d’un SE avec un kernel (noyau)

����������

��� ������ ������ �� ��� � ��!��� "� �#���"������$�$���$%& &�! �����#'��(��)%�*�"����$� �����+� ���#'��(,����- ��! ��� /.$%+*$� &"��&#� &��%�0 0 0

13254687�9�:&;)<�= >�;?,@

A�B <�9&C:&DE:F8G�H�I&J)K�L M�JN,O

P�Q K�H&RI&SEI

T3U5VW3X5Y

Z\[ ] ^�_�`a b�c [ d�` c+e f\g h i�j�kl m�n

g o�kn+p q\r s t�u�vw x�y

r z�vy+{ |\} ~ ������ ���

} ����+�

�'�����)���,�����

Fig. 3.5 – Organisation en kernel

Cours de Systemes d’Exploitation

Page 40: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

28 / 103 Chapitre 3 : Structures des systemes d’exploitation

aura un faible nombre de fonctions elementaires, mais on augmente du meme coup le nombred’appels de fonctions pour toutes operations que doit effectuer le kernel.

On oppose alors souvent les kernels dit monolithiques qui continuent a etre independantdu materiel, mais ils sont de taille plus importante, aux microkernels qui n’offrent plus que4 services minimaux :

¤ un mecanisme de communication interprocessus,¤ un systeme de gestion memoire,¤ un niveau minimal de gestion de processus,¤ un systeme de gestion des E/S de bas niveau.

Contrairement a un kernel monolithique, un microkernel n’est plus un systeme d’exploitation,mais une base sur laquelle on peut construire un systeme d’exploitation.

Dans la famille des kernels monolithiques on retrouve la fameux kernel Linux, les WinNTetc... de l’autre cote, on retrouve les implantations Mac OS, basee sur un microkernel Mach, ouencore Solaris, la variante Unix de Sun. On peut noter aussi le developpement de GNU Hurd,un micronoyau, base lui aussi sur Mach.

On peut alors lister les principaux avantages des deux architectures :¤ Microkernel : portabilite, maintenance facile,¤ Kernel monolithique : performance.

3.5 Exemple de systemes d’exploitation

3.5.1 Unix classique

Les caracteristiques principales sont les suivantes :¤ un systeme d’exploitation a temps partage. Systeme multi-utilisateurs et multi-taches.¤ Au depart, concu par un seul programmeur, il etait assez simple pour etre compris dans

son ensemble.¤ En fait c’etait un systeme concu par des programmeurs pour des programmeurs.¤ Il est tres portable, car il est quasiment completement ecrit en C.¤ Il possede l’avantage de fournir le meme environnement sur des plates-formes tres diffe-

rentes.¤ L’interface avec l’usager est la ligne de commande ou CLI (Command Line Interface).

Le Shell (coquille) est l’interpreteur de commande en Unix. Il porte ce nom, car c’est unprocessus qui entoure le noyau du systeme d’exploitation. Les commandes de l’usager sontinterpretees par Unix par l’intermediaire du Shell. Il existe differentes sortes de Shell. Les plusconnus sont les suivants :

¤ Bourne Shell (Bourne Again Shell),¤ C Shell,¤ TC Shell,¤ Korn Shell.

3.5.2 Le Mac OS

Il a ete introduit en 1984. Ses principales caracteristiques sont les suivantes :¤ Ce fut le premier ordinateur personnel grand public avec une interface graphique (exclu-

sivement).¤ Contrairement a Windows, ou a X-Windows, l’environnement graphique n’est pas un

shell du Mac OS, mais fait partie integrante du SE.¤ Il s’agit d’un systeme mono-utilisateur.¤ Son fonctionnement est multi-taches cooperatifs.

Yann MORERE

Page 41: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

3.5 Exemple de systemes d’exploitation 29 / 103

������������� ������ ������������ ��������������

�!#"%$ $'&�()+*�, -.)/1032&54%6�798�, : ;-<)+/�0�2&�)%-�4�=>�?�@�A�B�?�A�?�CED#F�B�G�HIB�A�H

J5K�L5M�NPO�QRJTSRLUNWV�L1XRYZNW[�V#\�]�L^N`_TJ5V1a#b5c%d�e�f f fg#h�i+j�kl�mnlPoZp qsrutUv�w#x j�yTj x�w#z|{W}W~+�

�+�<����� �+�����^���'���3�<�'�����.���+�<���'� �+�����U� �Z����.���� ���+���������<��.���Z���^���'��� �.�.���#�+�����<�'�%� � ����T��� 1¡�¢� T£¥¤ ¦#§�¨�©�ªU§�¨«<¬

­^®#¯�°�±�²³ ±�´µ ¶ ³ °�·�µ ¸�¹º ³ ¸.°�» ³ ¶'±¥µ ¼�½�º�¾R°�¿À²³ ¶'µ ¿�Á�¶'µ ¹+º ³ ¸.° ³ »'Â+à à Ã

Ä ÅÆ'Ç.È�É Ê%Ë3ÇZÌIÍ'Ê%Î+Ç.È

Ï ÐÑ'Ò.Ó�Ô Õ%Ö3ÒZ×1Ø Ù�Ó'Õ+Ø Ó�Ø ÒÚ Û�Ü�Ý.Þ'ß à+á3ÝUâ�Ý<ãà�ä�ä�Ý<å ãÀã�æ�ã�Ü.çÝ.è�Ý<ã éëê�ì�íUîIï'ð%ñ+í.ò

óëô�õ�öZ÷ø�ù�ú.ûö.ü�öý�ö.þ�ÿ�ö��

Fig. 3.6 – L’architecture en couche Unix

¤ Il ne possede pas de vraie structure de niveaux. Il n’a pas non plus de kernel, le systemeest compose d’un ensemble de managers :. Event Manager, Manu Manager, Window Manager, Dialog Manager, Control Manager,

Help Manager, ..... Ressource Manager, Component Manager.... File Manager, Memory Manager.... Image Compression Manager.

Contrairement a Unix, les processus Mac OS sont toujours lies a une application. Une appli-cation est en avant-plan (foreground), et toutes les autres en arriere-plan (background). Lagestion des processus est basee sur la notion d’evenement.

Dans le Mac OS, il existe trois types d’evenements :¤ evenements de bas niveau (internes a une application) : activation ou remise a jour d’une

fenetre suite a une pression ou un deplacement de la souris, l’insertion d’une disquette...¤ evenements du systeme d’exploitation, relatifs au changement d’application en avant-

plan.¤ evenements de haut niveau, relatifs aux communications entre applications.

Cours de Systemes d’Exploitation

Page 42: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 43: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

31 / 103

Chapitre 4Les Processus

Les premiers systemes informatiques permettaient l’execution d’un seul programme a lafois. Ce dernier possedait le controle total de toutes les ressources du systeme. De nos jours, lessystemes informatiques actuels permettent de charger plusieurs programme en memoire et de lesexecuter en concurrence. Cette evolution a conduit a un controle plus ferme des programmes.Ces besoins ont abouti a la notion de processus, qui est un programme en execution. Unprocessus aura besoin de certaines ressources, comme le temps processeur, la memoire, lesfichiers et les peripheriques d’entrees/sorties.

On peut considerer le processus comme l’unite de travail elementaire dans les systemes entemps partage. Les processus peuvent etre separes en deux classes : ceux du systeme d’exploi-tation executant du code systeme, et ceux des utilisateurs qui executent du code utilisateur.

Le systeme d’exploitation est alors responsable des activites de creation, suppression, ordo-nancement, par rapport a la gestion des processus.

4.1 Concepts elementaires

4.1.1 Le processus et son espace adresse

Dans une systeme multiprogramme, les differents processus doivent se partager l’acces auxressources : UCT, memoire et peripheriques. Par exemple, un processus ayant besoin d’uneressource qui est occupee devra etre bloque en attendant qu’elle se libere.

Dans le cas d’un systeme a temps partage, l’execution des processus doit etre en apparenceconcurrente : une fraction de temps UCT doit etre accordee a chacun des processus.

Un processus execute une sequence d’instructions dans un espace d’adresse comprenantl’ensemble des locations en memoire auxquelles le processus est autorise a acceder.

Cette espace d’adresse est a priori virtuel (il ne correspond pas forcement a la memoirephysique et peut etre sur un disque dur en attente d’etre charge). Il correspond au texte (code)et aux donnees utilisees par le processus.

A chaque processus correspond un ensemble de registres et compteurs, comme le compteurprogramme qui pointe sur l’instruction a executer (compteur d’instructions).

4.1.2 Le kernel (noyau)

On peut definir le kernel comme un programme special qui implante le modele de processuset les autres services du systeme.

Le kernel est charge a partir du disque, lors du demarrage du systeme par l’operation debootstrapping. Il initialise le systeme et definit l’environnement pour executer des processus. Il

Page 44: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

32 / 103 Chapitre 4 : Les Processus

demeure en memoire jusqu’a l’extinction du systeme.Les interactions entre le kernel et les programmes des usagers est definie par son interface

de programmation des applications (Application Programming Interface ou API).Un processus interagit avec le kernel par des appels systeme (system calls). Le kernel execute

des demandes pour le compte des processus appelant.Le kernel doit aussi intervenir lorsqu’un processus effectue une erreur (une division par

zero par exemple, ou encore un essai de debordement de pile/stack) qui cause une exceptionmaterielle (hardware execption) que le kernel traite aussi pour le compte du processus.

4.1.3 Mode, espace et contexte

Mode : on distingue souvent sous Unix deux modes d’execution :

¤ le mode systeme (systeme mode ou kernel mode), privilegie,¤ le mode usager (user mode), moins privilegie.

Certains types de processeurs reconnaissent plus de deux modes d’execution. Par exemple l’ar-chitecture 80x086 d’Intel autorise quatre anneaux d’execution (execution rings). Unix n’utiliseque 2 de ces anneaux.

Espace usager et espace systeme : (user space et kernel space)une partie de l’espace d’adresse de chaque processus correspond a du code et des structuresde donnees kernel. Cette portion de code est appelee espace systeme (system space oukernel space) et contient des structures de donnees globales et des objets relatifs auxprocessus.

Il n’existe qu’une instance du kernel dans le systeme, et donc chaque processus pointe vers unseul espace systeme.

L’acces a cette espace systeme ne peut se faire qu’en mode systeme : un processus accede al’information de l’espace systeme en effectuant un appel systeme. Le controle est alors transfereapres un changement de mode (mode switch) au kernel qui effectue l’acces pour le compte duprocessus. A la fin de l’execution, le controle est alors retourne au processus ; apres un autrechangement de mode.

Chaque processus possede deux objets specifiques particulierement importants qui sont gerespar le kernel :

¤ l’espace usager (user area ou u area) : qui contient des informations sur le processus quisont utiles au kernel (liste de fichiers ouverts, valeurs des registres lorsque le processusest interrompu). L’espace usager n’est pas accessible (en ecriture) au processus, meme siil est parfois implante dans son espace d’adresse.

¤ la pile du kernel (kernel stack) : dans le cas d’un kernel reentrant comme celui d’Unix (c-a-d autorisant plusieurs processus a etre engages concurrement dans des appels systeme),il faut maintenir pour chaque processus la liste des sequences d’appels de fonctions.

Contexte processus et contexte systeme (process context et system context)Le kernel peut operer en contexte processus, c’est a dire pour le compte d’un processus(en executant un appel systeme ou en traitant une exception). Il peut aussi operer encontexte systeme pour gerer les interruptions en provenance des peripheriques.

4.1.4 Etats d’un processus

Un processus est une instance d’un programme en execution. Mais pointons le fait qu’unprogramme en lui-meme n’est pas un processus. c’est une entite passive.

Yann MORERE

Page 45: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.1 Concepts elementaires 33 / 103

Resume des modes, espaces et contextes :

���������������� ������������

������������������ �"!�$#%�

&(')*,+.-�/10�*"2 3(456,7�8:9�;"<6"=%6>@?BADCFEDG HJIKCMLN HPODODQ R >JHJS R ?PTVU

W X Y�ZP[@W�YV\ ]B[@W X X@^PX�XMWJ^P_ W `W aVb

cJdedef@g h"h iBh jMkfMl�ffMmDnMfMdej o pKqDh

r s t uPv@r�tVwMxBvMr s sJyJsFr@zs {Ds@zP|r }~r� � � �P�@�"� �D�M�K�� ��"� �P�J� � �� �V�

� �B� �@� � �e�D� � �P�D��J��P� � �@���D�:� �B� �M��M���

�e�P�$�J�D  ¡P¢ £ �D¤¥

Fig. 4.1 – Modes et contextes d’operation

Un processus est une entite active (dynamique), dont on peut etudier l’etat au cours dutemps.

Un processus peut etre dans 5 etats differents (Cf. figure 4.2) :

¤ nouveau, le processus est en cours de creation,¤ pret, le processus attend d’etre affecte a un processeur,¤ elu, les instructions sont en cours d’execution,¤ en attente (bloque), le processus attend qu’un evenement se produise (comme l’acheve-

ment d’une entree/sortie ou la reception d’un signal),¤ fini, le processus a fini l’execution.

�����������

� ������ �� ���

�������

� ���! " $#�� $#

%'&)(+* , - .�/10"21243�57698 :<;)= >

?)@ A1BDC"EGFIH�?)J!AGFIHK"?)J)L K"J)MN1O"P1Q7R S9T'R U1V�S!W�X Y)S[ZOI\]ZO"SO"Q^O"S_N

V�Y�W�X Y9SOa`]b_c dfehgijid"eidk�l m

endIondfe)dfp7dfe

iq m�k�l m ed

r]s_t

Fig. 4.2 – Diagramme d’etats de processus

4.1.5 Mecanismes de gestion de processus

Le cycle de vie d’un processus est constitue d’une alternance de sections durant lesquellesil est actif, en controle de l’UCT ( giclees d’UCT ou CPU bursts), en attente d’E/S commemontre a la figure 4.3.

Cours de Systemes d’Exploitation

Page 46: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

34 / 103 Chapitre 4 : Les Processus

���������� ������ ������������ ������������ �"!#"$%#'&)( #+*-,/. 0�1 �+2"� 1 0�3

4 5"687�9:98;=<>68? @5A@;CB�<=<D7 E�F:GHF:6 I7 J�7

K8L�M=NO�PRQ SUTO�V�L+VXW=O�Y�ZRW>L+[�KR\)]_^)Z

`8a�b�c:de�cXf gUhe�i�b�iRjHe�kmlonb�p>b�c8i8q cRjHesrutuvRl

w x+y8z:{ w |} ~+�U�� {D��� � x�y8{ { � x�{ ���

� �"�8���:�8�=�>�8� ��A��C���=�D� ���:�H�:� �� ���

�8���=����R� �U������+�X�=���/ u�>�+¡��R¢)£_¤_ 

¥8¦�§�¨:©ª�¨X« ¬U­ª�®�§�®R¯Hª�°-±�²§�³>§�¨8®8´ ¨R¯Hªsµu¶u·u±

¸ ¹+º8»:¼ ¸ ½¾ ¿+ÀUÁ ¼DÃ�Ä Â ¹�º8¼ ¼  ¹�¼ Â�Å

Æ Ç+È8É:Ê Æ ËÌ Í+ÎUÏÐ ÊDÑ�Ò Ð Ç�È8Ê Ê Ð Ç�Ê Ð�Ó

ÔÕ:Ö ×sØ ÕUÙ ÔÕUÚ:× Û Õ�Ü

ÝÞ:ß àsá ÞUâ ÝÞUã:à ä Þ�å

æç:è ésê çUë æçUì:é í ç�î

Fig. 4.3 – Deroulement d’un changement de contexte

Il est important de comprendre que l’execution de ces transitions consomme du temps deprocesseur physique qui n’est pas utilise par les processus eux-memes. C’est ce q’on appelle ladeperdition (overhead) resultant de la gestion des processus. Tous les systemes visent donc areduire celle-ci.

Deux mecanismes de gestion de processus seront vus en detail :

¤ Ordonnancement (Scheduling)effectue par un ordonnanceur ou repartiteur (Scheduler) qui decide quel processusdoivent etre admis, lequel doit etre active...

¤ Synchronisationcertains processus peuvent avoir a acceder aux memes ressources et il faut alors gerer lesdroits d’acces.

Le dernier mecanisme concerne la gestion des interruptions/activation a proprement parle, et lemaintien a jour des tables de processus et des blocs de controle de processus (Processus ControlBlock ou PCB).

Ce dernier represente chaque processus dans le systeme d’exploitation. Ce PCB contientplusieurs informations concernant un processus specifique :

¤ L’etat du processus : nouveau, pret, elu, bloque, termine,¤ Le compteur d’instructions : il indique l’adresse de l’instruction suivante a executer,¤ Les registres de L’UCT : les informations des registres doivent etre sauvegardees, quand

il se produit une interruption, afin de pouvoir reprendre correctement la suite,¤ Informations sur le scheduling de l’UCT : elles comprennent la priorite du processus, des

pointeurs sur le file d’attente de scheduling,¤ Informations sur la gestion memoire : valeurs des registres de base, limites, les tables de

pages, les tables de segment,¤ Information de comptabilisation : elles tiennent en compte la quantite de temps proces-

seur, et temps reel utilise, les limites de temps, les numeros de compte, de travaux, deprocessus,

Yann MORERE

Page 47: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.2 Ordonnancement (Scheduling) de processus 35 / 103

¤ Informations sur l’etat des entrees/sorties : la liste des peripheriques d’entrees/sortiesalloues a ce processus, liste des fichiers ouverts.

Le tableau suivant montre un bloc de controle (PCB) generique dans un systeme Unix.

Gestion de processus Gestion de la memoire Gestion des fichiers

registres pointeur sur segment de code masque UMASK

compteur programme pointeur sur segment de donnees repertoire racine

descripteur d’etat du prog. etat de sortie repertoire de travail

pointeur de pile id du processus descripteurs de fichiers

etat du processus processus parent uid effective

instant de debut du processus groupe du processus gid effective

temps UCT utilise uid reelle parametres d’appel systeme

temps UCT des enfants uid effective drapeaux (flags) divers

instant de la prochaine alarme gid reelle etc.

id du processus gid effective

drapeaux (flags) divers drapeaux (flags) divers

etc. etc.

Tab. 4.1 – Bloc de controle de processus generique pour Unix

4.2 Ordonnancement (Scheduling) de processus

Nous allons tout d’abord definir quelques termes :

¤ la multiprogrammation consiste a disposer de quelques programmes en execution a toutmoment,

¤ le temps partage consiste a faire commuter l’UCT entre les processus de maniere a ce queles utilisateurs puissent interagir avec les differents programmes en cours d’execution.

4.2.1 Roles des ordonnanceurs (repartiteurs, Schedulers)

Les repartiteurs ou ordonnanceurs choisissent les travaux (jobs) ou processus qui vont pou-voir acceder a l’UCT. On peut considerer qu’il y a deux types de repartiteurs :

¤ Dans un environnement de traitement par lots (batch processing) le repartiteur de hautniveau (a long terme) selectionne le prochain travail a charger en memoire.

Cours de Systemes d’Exploitation

Page 48: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

36 / 103 Chapitre 4 : Les Processus

¤ Dans un environnement multiprogramme, et en particulier dans un systeme a tempspartage, le repartiteur de bas niveau (a court terme) selectionne a chaque fois que l’UCTdevient inactive, un processus parmi tous ceux presents en memoire (prets). Ce processusdevient le nouveau processus elu. Cette intervention du repartiteur de bas niveau seproduit aussi lorsque la fraction de temps de l’UCT allouee au processus est expiree.

Execution Performance demandee

repartiteur de bas niveau frequente excellente

repartiteur de haut niveau occasionnelle bonne

Tab. 4.2 – Contraintes d’operations des repartiteurs de bas et haut niveau

Sur la plupart des systemes modernes, le role du repartiteur de haut niveau se resume surtouta accepter ou refuser une demande de chargement de processus en memoire (espace memoireoccupe, quota de processus atteint, charge courante du systeme est trop importante).

Dans un environnement a temps partage et a memoire virtuelle ; deux repartiteurs doiventcohabiter : le repartiteur de bas niveau qui gere le temps partage et un repartiteur de hautniveau qui gere les transferts entre disque et memoire (swap in et swap out).

4.2.2 Files d’ordonnancement

Le diagramme de transition de la figure 4.3 ne concernait qu’un seul processus. Il est main-tenant necessaire de faire l’etude avec n processus P0, P1, . . . , Pn, sachant que :

¤ un seul au plus de ces processus peut etre elu par l’UCT,¤ plusieurs processus pourront etre en attente d’E/S,¤ d’autres seront pret a occuper l’UCT.

Le mecanisme le plus commun pour traiter ces processus est celui de la file d’attente :

¤ une file d’attente pour tous les processus prets,¤ une file d’attente pour chaque peripherique et type d’E/S

Il s’agit maintenant de savoir :

¤ dans quel ordre les processus seront inseres dans la file d’attente,¤ comment s’effectue le passage entre les files et l’UCT.

4.2.2.1 Traitements par lots (batch)

Ce style de file d’ordonnancement n’a pas de repartiteur de bas niveau : l’UCT reste inactivependant que le processus courant traite sa demande d’E/S.

4.2.2.2 Multiprogrammation sans temps partage

Dans ce cas les processus ne sont suspendus que s’ils font une demandes d’E/S.

4.2.2.3 Repartiteur pour le temps partage

Dans ce cas, on ajoute la notion de quantum de temps apres lequel le processus elu perd lecontrole de l’UCT et repasse a l’etat pret.

Yann MORERE

Page 49: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.2 Ordonnancement (Scheduling) de processus 37 / 103

��� ����� ����� �������� ����� �� �������

����������! #" ���$%�'&��( ��$� �)�" *�����$+ , -�.�/10!2�3!412#5

6!7�8:9<;�=�>�=�?@A=�?�>CB=�>�D�E 9<=F�G H�I�J KL�L�H�M�L�H�I�HN K�O1M�P Q�H�K�R

SUT�VXW�Y H�O�O�R�O T�V:ZH#L�O#[

\�]^�_�`�\!a#b a�^�c%\'d�^e `�f1g�b h�^�`�ci j:k c�\Xala�^�\�mn^�o

prqts

unvxw

ynzx{

|n}x~

Fig. 4.4 – Ordonnancement pour le traitement par lot (batch)

��� ����� ����� �������� ����� �� �������

����������! #" ���$%�'&��( ��$� �)�" *�����$+ , -�.�/10!2�3!412#5

6!7�8:9<;�=�>�=�?@A=�?�>CB=�>�D�E 9<=F�G H�I�J KL�L�H�M�L�H�I�HN K�O1M�P Q�H�K�R

SUT�VXW�Y H�O�O�R�O T�V:ZH#L�O#[

\�]^�_�`�\!a#b a�^�c%\'d�^e `�f1g�b h�^�`�ci j:k c�\Xala�^�\�mn^�o

prqts

unvxw

ynzx{

|n}x~

��� ���1��� �����

��� ���1��� �����

��� ���1��� �����

Fig. 4.5 – Ordonnancement pour la multiprogrammation sans temps partage

����������� ���������������� ��

��� ��� � !�"#"$��%�"#�&�'�( !*)+%�, -��*!�.

/10�2�3'4 ��)#)$.') 0�265��"$)�7

8�9:�;=<�8?>�@ >$:�A�8CB':D <*E+F�@ G�:*<�AH I6J A�8�>K>$:�8#L�:*M

NPORQ

S�TVU

W�XVY

Z�[ \�]+^ _ `bac

d�e f�g+h i jbkl

mnpo*qKr�s�t�n*uvsw

x'y�zR{�|�x'y&x } y6~C�y�������� ��| ������������ ������'���6����$�6���#�

Fig. 4.6 – Ordonnancement avec temps partage

Cours de Systemes d’Exploitation

Page 50: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

38 / 103 Chapitre 4 : Les Processus

4.2.2.4 Temps partage avec gestion de la memoire virtuelle

Ici on rajoute les problemes relatifs a la gestion des transferts entre la memoire principaleet la memoire virtuelle.

���������� ����������������� ��� �����

�� "!

#�$"%

&�' ()+*-, .0/21

3�4 56+7-8 90:2;

<2=?>A@CB�D�EF=AGHD2I

J�K�L�MONPJ�KQJ-R K�SUTK�VW�XFY Z�N

[F\P]O^�_2`ab`�^2c�d�`e[�f�^2c `�g�c�`

h�i�j�k�lm�m n�m+h�i�olFp m

qAr�s�tvuPwyx

zA{�|�}�~ �

�����y�O���F� � ��P�U���� �A�+��� ���A�O�� ��� �����C� ������A�

Fig. 4.7 – Ordonnancement avec gestion de la memoire virtuelle

4.2.3 Algorithmes d’ordonnancement

Ils existent plusieurs criteres, parfois mutuellement contradictoires, que l’on peut pendreen compte dans le choix d’un algorithme d’ordonnancement. On peut aussi s’interesser a lamoyenne, variance, minima, maxima de ces criteres afin de choisir le repartiteur (ordonnanceur).Tout d’abord, on distinguera deux grandes classes de repartiteurs :

¤ repartiteurs non preemptif, sans requisition, (non-preemptive). Quand un processus prendle controle de l’UCT, il ne le relache que lorsqu’il a termine son execution ou lorqu’ilbloque sur une attente d’E/S.

¤ repartiteurs preemptifs, a requisition (preemptive). Un processus qui a pris le controle del’UCT, le relache lorsqu’il a termine son execution ; ou lorsqu’il bloque sur une attenteE/S, mais aussi quand le repartiteur le suspend, lorsque le quantum de temps qui luiavait ete aloue est termine.

On notera par exemple que les repartiteurs d’UNIX, OS/2, Win NT et BeOS sont preemptifs,et que ceux de MacOS, Windows 3.x/9x/Millenium sont non-preemptifs.

Maintenant il est possible de distinguer les differents repartiteurs, par rapport a la manieredont ils gerent la liste des processus prets.

4.2.3.1 Premier Arrive, Premier Servi ou PAPS

(First Come, First Served ou FCFS )

Lorsque l’UCT se libere (soit parce que le processus elu a termine, soit parce qu’il a fait unedemande d’E/S), le processus en tete de la file des processus prets devient le nouvel elu.

Exemple de PAPS pour un repartiteur de bas niveau : Soit 3 processus, A, B et C quisont composes d’une repetition de giclees d’UCT et d’operations d’E/S de longueurconstante. On suppose ici que les processus n’attendent pas pour les E/S (chacun leurperipherique). Pour A, nous avons 5 unites de temps d’acces a l’UCT puis 2 temps d’accesaux E/S. Pour B, 4 UCT, 4 E/S, 4 UCT .... Enfin pour C, 1 UCT, 8 E/S, 1 UCT ....

Yann MORERE

Page 51: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.2 Ordonnancement (Scheduling) de processus 39 / 103

taux d’utilisation de l’UCT (en %tage de tempsecoule)

a maximiser

debit (throughput) : le nombre total de processus traitespar unite de temps

a maximiser

predictabilite : une tache donnee devrait toujours avoirles memes temps de reponse et de virement

a maximiser

justice : en particulier aucun processus ne devrait souf-frir de famine (starvation)

a maximiser

temps de virement (turnaround time) : temps ecouleentre la soumission et la fin de l’execution

a minimiser

temps d’attente (passe dans la file de bas niveau)

a minimiser

temps de reponse (pour un processus interactif, avantla premiere sortie vers l’usager)

a minimiser

������������������� ������������������� ���� ���������� ����!�#" ���$�%�&�'�()&*�+ %�,�(- -.&�-/10 2�3 415617 819:�; <�=

>@?BA

CED F�G HJI�K�LM L�NOF�K M L MQP RTSU V1W X�Y Z1[\1] ^�_ `�a

b@cBd

e�f�g�h�ijlkij g

m1n o p qQrs�t�s o u vxwTy

z1{ |�} ~1� ��� �1�

�@�B�

����1��#������1���!���������1�T��

Fig. 4.8 – Fonctionnement d’un repartiteur PAPS

Cours de Systemes d’Exploitation

Page 52: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

40 / 103 Chapitre 4 : Les Processus

En supposant que A arrive en premier suivi de B, une unite de temps plus tard, puis C uneunite de temps encore apres. Comment les 3 processus vont-ils utiliser l’UCT dans les 30 unitesa venir ?

������� �� ����������������������� ��! �"� ����#�$�%&�')(*,+

Fig. 4.9 – Execution des processus par un repartiteur PAPS

4.2.3.2 Plus court d’abord

(Shortest Job First ou SJF )

On fait d’abord passer le processus ayant la plus petite giclee d’UCT. Dans la cas d’ex æquol’arbitrage est regle par PAPS. Le probleme est maintenant de connaıtre la longueur des gicleesd’UCT des processus. Ceci peut etre realise de deux manieres :

¤ demande a l’usager,¤ estimation a partir des temps de service passes :

τn+1 = α · tn + (1− α) · τn

ou tn est le temps de service du dernier passage par l’UCT, τn est la prediction qui avaitete faite avant ce passage, et τn+1 est la prediction (corrigee) qui est faite pour la dureede la prochaine giclee d’UCT du processus. Le parametre α indique le poids que l’on veutdonner a l’historique.

4.2.3.3 Priorite

Il s’agit d’une forme generale du SJF, mais le critere de choix n’est plus simplement le temps.On associe a chaque processus une priorite, et l’UCT est allouee au processus de plus hautepriorite. De meme que pour le FJS, les processus de meme priorite sont arbitres par PAPS. Cetype d’ordonnancement peut etre fait avec ou sans requisition.

Un des problemes majeures de ce type de repartiteur est le blocage indefini ou famine. Eneffet, il peut laisser des processus de basses priorites attendre indefiniment l’UCT. La solution ace type de probleme est le vieillissement automatiques des processus. Cette technique consistea augmenter graduellement la priorite des processus attendant dans le systeme.

Yann MORERE

Page 53: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.2 Ordonnancement (Scheduling) de processus 41 / 103

4.2.3.4 Le tourniquet (Round Robin)

C’est un algorithme d’ordonnancement avec requisition specialement concu pour les systemesa temps partage.

Le tourniquet ajoute juste a l’algorithme de PAPS un quantum de temps limitant la dureedes giclees de l’UCT. Avec ce type d’algorithme, un processus peut perdre le controle de l’UCTde deux manieres :

1. volontairement (similaire a PAPS sans requisition) :

(a) parce que son execution est terminee,

(b) parce qu’il a fait une demande d’E/S.

2. par requisition :

(a) parce que son quantum de temps a expire.

Un probleme majeur a ce type d’ordonnancement est la choix du quatum de temps. En effet sile quantum est trop long , on penalise les processus courts. A la limite, si le quantum est infini,on se retrouve avec un PAPS standard.

De meme si le quantum est trop court, une fraction trop importante du temps UCT estoccupe a realiser les changements de contexte.

En general, dans un systeme Unix, le quantum est fixe aux alentours de 100 ms.

Exemple : on reprend l’exemple precede, mais maintenant en imposant un quantum de 3unites. Il est a noter que l’on n’attend pas la fin du quantum (temps maximal accorde)

������� �� ����������������������� ��! �"� ����#�$�%&�')(*,+

-/.�021 3,465�781 96: ;=<8>@?BA6C8CD>E F<8>HG�I8>@JK>@L�IM

AKN ODP>HI8AQIRP>HN S

T8U V�W XRYQZD[,W \8Z8Y6W ZD]^ ]@\�W _Q`DaBbD\D]Qc]@_�\8ZD]ed=]@\�f

gHhji�k lHmjn�o pHqjr�s tHujv�w xHyjz�{ |H}j~�� �H�j���

Fig. 4.10 – Execution de la sequence par un repartiteur tourniquet

de C pour activer un nouveau processus. Les mecanismes de changement de contextevolontaires sont toujours actifs.

Cours de Systemes d’Exploitation

Page 54: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

42 / 103 Chapitre 4 : Les Processus

4.2.3.5 Ordonnancement a listes multiples

Les processus presents sur un systeme ne partagent pas tous les memes caracteristiques(calculs scientifiques, applications interactives, multimedia, etc...). Ils peuvent avoir des besoinsde repartition differents. On organise alors un ordonnancement de priorite avec requisition entrefiles d’attente. Chaque file d’attente peut avoir son propre algorithme d’ordonnancement.

������������������� ������������������� ���� ���������� ����!�#" ���

$&% '&(�)*,+ -�./,0 1�2

35476

8 9:<;�=�>�?�9�:�:�@�:<A�9�?�9�B B�9DC�8 9E 9D;�>�@�= =�> E B�F9�B =�9�G�?�BIH JLK9:NM�@�9�8 >�=I:�M#@�98 G!C�8 9�A�9 E H J�9G@&OD:P9= G!J�H A�9

Q&RSUT,V

W�X

Y�Z

[&\�\

]&^_ `�a,b c deP`�f�g hjidkb dl b h�mnc dg g�h�a�g�hm�hoqp�r�`�s�ho o�f�om�htoP`�a�a�u v�hdf

w�x y�z�yD{�| }y�~��,x yD��x ���<���I| ��� | � ~�| ��y���qy�q��������y��������q��~�� �Py�� ��{#�Ny�{���� y��k| y��

� ��yx ��{������q�j���,�N���

�&����&��� ����&��� �&��� � <¡�¢�£�¤��� � �¥� <¦���¤���§ §��D¨�� �

© �D¡�£�¥�¢ ¢�£ © §�ª��§ ¢���«�¤�§I¬ ­L®� N¯�¥���� £�¢I �¯#¥��� «t¨�� ��¦�� © ¬ ­��«¥±°���§�²t ���¢ £ © §N­�¬ ¦��� 

Fig. 4.11 – Ordonnancement a listes multiples

4.2.3.6 Ordonnancement temps reel

Quelles seront les fonctions qui permettront d’assurer un ordonnancement temps reel ?¤ les systemes temps reel rigides, qui necessite de realiser une tache critique dans une

quantite de temps garantie. La plupart du temps le processus est soumis avec la quantitede temps dont il a besoin pour se terminer, ou faire une action d’E/S. Ensuite soitl’ordonnanceur accepte le processus en garantissant qu’il se terminera a temps, soit il lerejette. On appelle cela aussi la reservation de ressources. Avec ce type d’ordonnancement,il est imperatif que l’ordonnanceur connaisse exactement les travaux a effectuer.

¤ les systemes temps reel souples, sont beaucoup moins restrictifs. Dans ce cas l’ajout defonctionnalites temps reel peut provoquer une allocation injuste de ressources et produiredes delais plus longs, voir meme un etat de famine. Dans ce cadre la conception del’ordonnanceur demande une attention toute particuliere. Il faut en effet concilier lespriorites hautes des processus temps reel, sans pour autant leser les autres processus.

4.2.4 Evaluation des algorithmes d’ordonnancement

La question qui se pose a present est : quel est le meilleur algorithme pour un environnementdonne ? Comment ajuster ses parametres (α pour SJF, vitesse de vieillissement pour la priorite,quantum pour le tourniquet, etc...) ? On peut repondre a cela en 3 points :

4.2.4.1 Essais sur le systeme en fonctionnement reel

Ceci permet de faire ensuite l’analyse des resultats (statistiques, reactions des usagers, cout,etc...), pour ensuite modifier les parametres et obtenir de meilleurs resultats.

Yann MORERE

Page 55: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.3 Creation de processus 43 / 103

4.2.4.2 Analyse deterministe

Dans ce cadre, on fixe une charge de travail typique et on compare les resultats desalgorithmes. Le choix de cette charge typique est bien entendu crucial (et subjectif).

4.2.4.3 Modeles de files d’attente

Il est possible de construire des modeles probabilistes de l’arrivee des processus dans unefile d’attente, de durees de giclees d’UCT et de traitements d’E/S, de probleme requerantl’intervention du kernel, etc... Ceci permet de deriver des expressions mathematiques (modeliser)pour chacun des criteres d’evaluation de performance, et de juger de l’influence de chacun desparametres.

4.2.4.4 Simulation

A partir des modeles probabilistes determines precedement.

Exemple d’evaluation : temps d’attente moyen (TAM)La file d’attente des processus prets contient quatre processus, A, B, C et D (arrives danscette ordre), dont les temps d’execution respectifs sont 16, 2, 8 et 12 unites de temps.Quel est le TAM pour PAPS ? Pour SJF ?

Cas de PAPS : TAM = [0 + 16 + (16 + 2) + (16 + 2 + 8)]/4 = 15.

� � � �

� ������ � ����� ��� �

Fig. 4.12 – Evaluation du temps d’attente moyen sous PAPS

Cas de SJF : TAM = [0 + 2 + (2 + 8) + (2 + 8 + 12)]/4 = 8, 5. On calcule en general ce

�� � �

� ���� ��� ������

Fig. 4.13 – Evaluation du temps d’attente moyen sous SJF

temps d’attente moyen sur une longue periode de temps, en utilisant les temps d’attentedes processus tout au long de leur duree de vie.

4.3 Creation de processus

Afin de ne pas gaspiller de l’espace memoire, les processus sont crees de maniere dynamique.Des operateurs de creation et de destruction de processus sont disponibles sur le systeme d’ex-ploitation. L’operation de creation doit aussi permettre d’initialiser l’etat du nouveau processus.

Cours de Systemes d’Exploitation

Page 56: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

44 / 103 Chapitre 4 : Les Processus

C’est a dire, definir d’une part le programme (ou suite d’instructions) decrivant l’activite duprocessus, ainsi que l’etat initial de ces donnees, de ses variables et des registres du processeur.

La plupart des sytemes permettent cette creation dynamique des processus. De plus la rela-tion entre le processus createur et le processus cree est importante, ce qui conduit a structurerl’ensemble des processus sous la forme d’un arbre et a maintenir cette structure.

Lors de la creation de processus, le processus cree est relie automatiquement comme fils duprocessus createur (pere).

Lors de la fin d’execution normale d’un processus P , deux solutions sont possibles :

¤ le destruction de P n’est effective que lorque tous ses fils sont eux-memes acheves. Ceciest necessaire lorsque le contexte initial du fils est inclus dans celui du pere P . En effetla destruction de celui-ci entrainerai la perte d’une partie du contexte du fils et donc underoulement anormal s’il pouvait survivre a son pere.

¤ la destruction de P entraıne le rattachement de ses fils a l’un de ses ancetres. Cependantcomme l’ascendance du processus P n’a pas connaissance des actions de ce dernier, onrattache les fils au processus qui a initialise le travail (login), soit a la racine qui est unprocessus standard et eternel.

4.4 Exemple du systeme Unix

Dans le systeme Unix, la creation dynamique de processus est simplifiee a l’extreme. Eneffet le processus fils cree est une copie exacte du createur le pere. Il n’est donc pas necessairede passer en parametre le programme, les donnees, variables et les registres du processeur. Lesysteme realise les copies de ces differentes parties.

La seule distinction entre le processus pere et le processus fils reside dans la valeur queretourne la fonction fork() dans les deux processus (le pere et le fils). La fonction de creationretourne l’identificateur du processus cree dans le cas d’un processus pere, et la valeur 0 dansle cas d’un processus fils.

���������� ���������� �������

��������� �"!#%$

&�&�&�&�&�&�&�&�&'�'�'�'�'�'�'�'�'

(�(�(�(�(�(�(�(�()�)�)�)�)�)�)�)�)*�*�*�*�*�*�*�*�*

+-,.+�/

0�1

2-3.2�4

5�6�7�8�9:�: ;�:�5�<�5�= >�?A@CB

D�E�F�G�H I"JK%L

M�M�M�M�M�M�M�M�MN�N�N�N�N�N�N�N�N

O�O�O�O�O�O�O�O�OP�P�P�P�P�P�P�P�PQ�Q�Q�Q�Q�Q�Q�Q�Q

R�S�TCU V�W�X

Y�Z�[\

Fig. 4.14 – Valeur retournee par fork() pour le pere et le fils

Sous Unix la fonction de creation de processus est la fonction fork(). fork() dupliquel’espace d’adresse du processus original (code, variables, contenu des registres).

4.4.1 Fonctionnement de fork()

Un appel a fork() est transmis au kernel qui cherche une place disponible dans la tabledes processus. S’il en trouve une, il copie toutes les informations sur le pere dans le block decontrole du fils. Comme nous l’avons deja dit plus haut, les seules differences entre ces deuxblocks de controle concernent le retour de la fonction fork dans le processus pere et le processusfils. Le processus fils herite en particulier des uid et gid reels et relatifs de son pere.

Yann MORERE

Page 57: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.4 Exemple du systeme Unix 45 / 103

� ��������� ��� ����������������

� ���������! "$#�%$&�'�(�)�*�+�+�%�+,&!-*.'�*

/ /�0�132�465 7�8�9.:�;,<=9.;?>,@ 9A2!B9.;�9

C D�C6E�FHG�I6J K6L�M.N�OQP=M.O�RQS MAT�S RQU=J KWVM

X Y�Z�X�[�\3]�^6_ `6a�b.c�d,e=b.d?fQg bAh d�ib.d�bA]�g c�fkjlb.c�`�bmf�c�_ e�n�`6a

o p�q�o�r�s3t�u6v w6x�y.z�{,|=y.{?}Q~ yA� {��y.{�yAt�~ z�}Q���k�y�}lz�v |���w�x

� ������������ �����������6���� �6������ ���������� �����6�� ¡�¢ £�¤�¢6¥�¦

§ §�¨�©�ª�«�¬­ ­�­�®�¯�°�±6²³�´ ´6µ�¶·�¸ ¹�¸�º�»�¼�½¾�¿ À�Á�¿6Â�ÃÄ�Å Æ�Ç�Å6È�É

Ê Ê�Ë�Ì�Í�Î6Ï

Ð�Ñ Ñ6Ò�Ó

Ô�Õ Ö�×�Õ6Ø�ÙÚ�Û Ü�Ý�Û6Þ�ß

à à�á�â�ã�ä�å

æ�ç ç6è�é

ê�ë ì�í�ë6î�ïð�ñ ò�ó�ñ6ô�õ

ö ö�ö�÷�ø�ù�ú6ûü ü�ü�ý�þ�ÿ����

��� ���� ��� ��� ����� ���

Fig. 4.15 – Exemple de hierarchie de processus Unix

Il est important de comprendre que les zones de donnees, de variables sont identiques a lacreation du nouveau processus. Par contre par la suite les deux processus sont completementindependants et n’ont pas de donnees communes.

Si le processus pere se termine avant le processus fils, le fils est rattache au processus racine demaniere a conserver la structure d’arbre. Le processus pere peut aussi attendre la terminaisonde l’un de ses fils par la fonction id_fils = wait(&status). Cette fonction retourne dansid_fils, le numero d’un processus fils qui s’est termine, et la variable status contient un codeindiquant la maniere dont le processus s’est termine. Si aucun fils ne s’est termine et qu’il y ena encore d’actifs, le processus pere est mis en attente d’une terminaison de l’un de ses fils.

Par ailleurs le systeme Unix fourni une fonction exec qui permet a un processus de changerde programme en cours d’execution. Elle remplace les anciennes donnees par celle du nouveauprogramme.

4.4.2 La notion de ressources

On appelle ressource, toute entite dont a besoin un processus pour s’executer (processeur,memoire, peripheriques). Il en est aussi des donnees dont le processus a besoin et qui seraientmomentanement indisponibles. Une des caracteristiques importantes des ressources, est la quan-tite de processus qui peuvent l’utiliser en meme temps.

¤ Il peut y en avoir un nombre quelconque et alors il n’y a pas de controle a mettre enœuvre.

¤ Il peut y en avoir plusieurs mais en nombre limite, il est alors necessaire de controler lorsdes allocations que ce nombre n’est pas depasse.

¤ Il peut y avoir au plus un processus qui utilise la ressource. On dit alors que la ressourceest une ressource critique. On dit alors que les processus sont en exclusion mutuelle pourl’acces a cette ressource critique (processeur, imprimante...).

Cours de Systemes d’Exploitation

Page 58: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

46 / 103 Chapitre 4 : Les Processus

4.5 Synchronisation de processus

Les processus etant des entites independantes et autonomes, ils peuvent se trouver en conflitpour l’acces a certaines ressources communes. Il est donc necessaires de mettre en œuvre desmecanismes dits de synchronisation pour gerer ces conflits.

4.5.1 Conditions de course (race condition)

Il s’agit de la situation ou deux processus ou plus doivent acceder a la meme ressource.Par exemple, deux instances d’un meme programme qui utilisent un pointeur commun pouracceder a la zone de memoire partagee. Il est alors possible qu’un instance A du programme soitsuspendue au moment ou elle doit acceder a la ressource critique. C’est donc l’autre instanceB qui va utiliser cette ressource, et a la fin de l’execution de cette instance rendre la main aA qui pense retrouver la memoire dans l’etat ou elle l’a laissee. Bien sur il y a eu modificationpar l’instance B.

Il nous faut donc un mecanisme d’exclusion mutuelle pour eviter que plus d’un processuslise ou ecrive dans la memoire partagee au meme moment.

La section critique est la partie de programme ou des acces a la ressource partagee ont lieupour un processus et une ressources partagee donnes.

Objectifs d’une bonne solution a un probleme de conditions de course :

¤ A tout moment, au plus 1 processus doit etre dans sa section critique ;¤ Aucune hypothese ne doit etre faite sur la vitesse ou le nombre d’UCT ;¤ Aucun processus executant en dehors de sa section critique ne doit pouvoir bloquer

d’autres processus ;¤ Aucun processus ne devrait avoir a attendre indefiniment avant de pouvoir entrer en

section critique.

On suppose que les processus ne trichent pas (n’abusent pas de leur droit d’acces, qu’ilssignalent lorsqu’ils entrent dans leur section critique et lorsqu’ils la quittent).

4.5.2 Exclusion mutuelle avec attente active (busy wait)

4.5.2.1 Variable de blocage (lock variable)

La premiere technique a laquelle on pense, consiste, pour chaque processus, a attendre que laressource dont il a besoin soit disponible, en verifiant le contenu d’une variable verrou associeea la ressource qui possede deux etats libre ou occupe.

...

code generique

tant que (etat_verrou == occupe) ; //test de la variable verrou

//(busy wait)

etat_verrou = occupe ; //entree en section critique

(... acces a la ressource partagee ...) //section critique

etat_verrou = libre ; //sortie de la section critique

...

Probleme 1 : Cette solution ne resoud pas le probleme de la condition de course : elle ne faitque le reporter sur le verrou, qui devient une autre ressource partagee.

Probleme 2 : Si le repartiteur est a requisition, le processus peut etre interrompu entre le testdu verrou et l’acce a la ressource partagee.

Yann MORERE

Page 59: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.5 Synchronisation de processus 47 / 103

���

���

��� ��� �� ��� �

����� ��� � ��� ��� � ! " � #�� �%$&� �%! ��� � ')(�! *+���+� �,� " #-! �

.�/�0�1 2,3 452 0�6 6 7 8:9�;=< 1 7 4?>5;-@ 2 ;�8BA�0C2 0�8:9�1�D�0�E�9�3 6 FHGI�J�K L�M-K L�N-OQP R N?L S�T�U+V�W X R NQY Z�R [?L�Y Y LC\+] \HX W,T�W TX N5W L�K K R ^:M�V�L%_&X Y�\ U�U+`�O�L�Z�Y \%K L+P P R V�K U�LCM-\HK W \Ha)T�L

b�ced�fQg:hjikh,f:lnmehpo,q%f%l&h&rQl&h

s�t�u�v w�x�y�z{�| }

~��,� ��� � ��� ��� � � � � ��� �%�&� �%� ��� � �)��� �+���+� �,� � �-� ����j�H���+��������� ��� �+� � � �-� ������� ��� �+� � � �-� ���C�-�H� � �H�)���:� � �+���   � ¡Q���   �   ¢5���H£

¤�¥,¦�§ ¨,© ª5¨ ¦�« « ¬ ­:®�¯=° § ¬ ª?±5¯-² ¨ ¯�­B³�¦C¨ ¦�­:®�§�´�¦�µ�®�© « ¶H·

Tab. 4.3 – Exemple ou la variable verrou ne protege pas l’acces a la ressource partagee

Sur cette exemple, on remarque que ce probleme pourrait etre eviter si la commande qui permetde tester la ressource et de la reserver se faisait en une seul fois. Il s’agit de la notion decommande atomique.

4.5.2.2 Desactivation des interruptions

Afin d’empecher qu’un processus soit interrompu a n’importe quel point de son execution,une solution serait de desactiver les interruptions quand on se prepare a entrer en sectioncritique et de les reactiver en sortant.

Probleme : generalement il est tres dangereux d’autoriser les utilisateurs (programmes utilisa-teurs) a desactiver les interruptions. En cas d’erreur un processus pourrait completementbloquer l’ordinateur.

4.5.2.3 Solution materielle : TSL (Test and Set Lock)

Certains processeurs disposent d’instructions permettant d’effectuer directement le test dela valeur d’un registre ou le contenu d’une location en memoire et d’assigner une nouvelle valeursi la valeur courante etait nulle.

De cette maniere un processus ne peut plus etre interrompu entre le test de la variableverrou et le blocage du verrou.

4.5.2.4 Alternance stricte

Exemple entre deux processus 0 et 1.

Probleme avec l’alternance stricte

¤ le nombre de processus qui partagent la ressource apparaıt directement dans le code,¤ a chacun son tour n’est pas necessairement la maniere la plus efficace et la plus

equitable de partager une ressource,

Cours de Systemes d’Exploitation

Page 60: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

48 / 103 Chapitre 4 : Les Processus

������������ �� �������������� ���

�������� �"!�#$&%(')�*�+����� �-,�.�/�0+��.*��*.21(320547698;:5'*'=<> �*?�1��23�@&.*?4(�A1���/�0(�B�A'=<,*./�0��2.5���.�1&320&4C8ED�<> �*?�1��23�@&.2@(32@&.5?�4(��1+�2/�0&� �F'=<

G

H�I�J�KL M"N�OP&Q(RSH*I+J�K�L M-T�U�V�W+J�U*KL*U2X(Y2W5Z7[9\E]�R*R=^_ L*`�X�J2Y�a&U*`Z(JAX�J�V�W(LBMAR=^T*UV�W�J2U5KL�U�X&Y2W&ZC\;bc^_ L*`�X�J2Y�a&U2a(Y2a&U5`�Z(J�X+J2V�W&L MFR=^

d

Fig. 4.16 – Exemple avec deux processus 0 et 1

¤ de plus un processus qui a une tres longue section non critique peut en bloquer un autrequi attend que sont tour vienne. En effet l’algorithme requiert une alternance stricte deprocessus dans l’execution de leurs sections critiques. Par exemple si le processus P1 estpret a entrer dans sa section critique apres une premiere execution de son programme(le tour est donc au processus P0), donc a_qui_le_tour vaut 0, et ce dernier n’apas encore fini sa section non critique, il bloque donc le processus P0 en section noncritique.

Probleme generaux avec l’alternance stricte

¤ L’attente active gaspille du temps UCT. Il faut reactiver regulierement tous les pro-cessus qui veulent entrer dans leur section critique afin qu’ils puissent verifier si leurtour est enfin arrive.

¤ En regle generale, l’alternance stricte ne peut pas garantir qu’un processus n’attendeindefiniment, ou qu’un processus bloque d’autres processus en dehors de sa sectioncritique.

Exemple : inversion de prioritesSoit deux processus, H (haute priorite) et B (basse priorite). La regle a suivre est lasuivante : si H est pret, alors il doit etre active (elu). Il faut donc trouver une solution

���� � ���������� ������ � ��� ��� � ����� � ��� � �!�"$#�� "$#%�'&("$� �)!�"

* �%!,+-��. /0 �!�#%!1���)��!324 �� .5"�2'/�� 4� * �%!

6�798�: ; 7$7<8=; 7<> > ?A@�; B97$B<; C : C D�@�7

EF�G HI$J�K4L

M�N9O P5Q R�P N9S S TAU�V�W=N<PX1N<O P%Y[Z<P Q \0]

Fig. 4.17 – Inversion de priorites

qui combine la notion de commande atomique (commande tres courte qui ne peut pasetre interrompue) avec un mecanisme de blocage/reactivation qui ne gaspille pas l’UCTcomme le fait l’attente active.

Yann MORERE

Page 61: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.5 Synchronisation de processus 49 / 103

Une des solutions est l’utilisation des semaphores.

4.5.3 Problemes classiques de synchronisation de processus

Les problemes suivants sont des representations theoriques de problemes reels d’acces a uneou plusieurs ressources partagees. Tout nouvel algorithme (methode, solution) de synchronisa-tion doit etre confronte a ces problemes.

4.5.3.1 Le probleme des producteurs et des consommateurs (le buffer limite)

La ressource partagee est constituee d’un buffer de taille limitee N .

Les processus sont separes en 2 types :

¤ un ou plusieurs producteurs qui produisent des items. Chaque producteur ayant fini deproduire (calculer) un item vient l’ajouter au buffer si celui-ci n’est pas plein. S’il estplein, il s’endort (il attend que le buffer ne soit plus plein pour pouvoir ajouter sontitem).

¤ un ou plusieurs consommateurs qui viennent retirer des items du buffer. Si un consom-mateur venant retirer un item du buffer, trouve ce dernier vide, il s’endort en attendantqu’un item soit ajoute au buffer.

Le probleme est de regler la condition de course sur l’acce au buffer partage.

4.5.3.2 Le probleme des philosophes dineurs

N philosophes passent leurs temps soit a manger, soit a penser. Afin de manger, un phi-losophe doit utiliser 2 fourchettes. Malheureusement, il y a exactement autant de fourchettesque de philisophes. Des qu’un philosophe a fini de manger, il repose ses fourchettes et pense.

Fig. 4.18 – Le probleme des philosophes dineurs

Le probleme est de synchroniser les actions des philosophes de maniere a ce qu’ils parviennenta manger et a penser.

Cours de Systemes d’Exploitation

Page 62: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

50 / 103 Chapitre 4 : Les Processus

4.5.3.3 Le probleme du barbier endormi (sleeping barber)

Dans ce cas la ressource est un barbier (pouvant modeliser l’UCT d’un systeme multipro-gramme) et N chaises d’attente. Des clients viennent et demandent a etre servis ; ils peuventdonc modeliser des processus cherchant a acceder a l’UCT.

Tache du barbier :¤ Si au moins un client est present, il en prend un et lui coupe les cheveux ;¤ Si aucun client n’est present, il s’assied dans son fauteuil et s’endort.

Tache d’un client :¤ Si le barbier est endormi, le client le reveille et se fait servir ;¤ Si le barbier est occupe et qu’il reste au moins une chaise disponible, le client s’assied et

attend son tour ;¤ S’il n’y a aucune chaise disponible, le client s’en va.

Le probleme est donc de faire en sorte que le barbier puisse traiter de maniere juste lesclients qui se presentent.

4.5.4 Les Semaphores

Un semaphores est un mecanisme propose par E.W. Dijkstra en 1965 plus general que leverrou (variable de blocage). Il se represente comme un distributeur de jetons, mais le nombrede jeton est fixe et non renouvelable : les processus doivent restituer leur jeton apres utilisation.

Le but de cette nouvelle approche est d’eviter l’attente active engendree par l’utilisation duverrou.

4.5.4.1 Definition d’un semaphore

Afin de regler les problemes de condition de courses, il est necessaire de rendre les fonctionsd’appel aux semaphores atomiques. Une commande atomique ne peut pas etre interrompue,meme si le quantum de temps du processus appelant a expire. Par consequent :

¤ Son temps d’execution doit etre tres court.¤ Comme les interruptions sont bloquees pendant l’execution de la commande, celle ci doit

se faire en mode systeme.En resume, un semaphore est une variable qui controle l’acces a une ressource partagee etindique le nombre d’elements de la ressource qui sont disponibles et maintient une liste desprocessus bloques en attente de cette ressource (s’il y en a).

Quand un semaphore ne peut pas prendre de valeur plus grande que 1, on parle de semaphorebinaire.

4.5.4.2 Exemple d’implantation de semaphores

type semaphore =

record

valeur : int ;

L : list of process ID ;

end

ou L est une liste de processus qui va etre utilisee pour conserver les processus bloques enattente de la ressource partagee.

Quand le semaphore est ≥ 0, il indique un nombre d’unites de la ressource qui sont dispo-nibles. Quand il est < 0, il indique generalement le nombre de processus qui sont bloques enattente de la ressource.

Yann MORERE

Page 63: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.5 Synchronisation de processus 51 / 103

Remarque : Il existe d’autres manieres d’implementer un semaphore. En particulier certainesimplantations ne permettent pas a la valeur du compteur d’etre negative.

Il faut maintenant definir les deux operations atomiques qui vont permettre de modifier l’etat(la valeur d’un semaphore) S :

¤ DOWN(S) (ou Wait(S)) decremente le semaphore, puis verifie s’il est toujours ≥ 0,. dans ce cas tout va bien (la ressource etait disponible),. sinon, on bloque le processus : SLEEP(), sera reveille quand la ressource sera libre.

¤ UP(S) (ou Signal(S)) incremente le semaphore. Si celui ci etait < 0, il reveille le pro-cessus endormi WAKEUP(proc).

4.5.4.3 Une solution au probleme des producteurs et consommateurs

Cette solution utilise 3 semaphores :¤ un semaphore binaire initialise a 1, mutex, qui controle l’entree et la sortie des processus

de la section critique,¤ un semaphore full initialise a 0 avec une liste vide, qui controle le nombre d’items

contenus dans le buffer, et donc les processus consommateurs,¤ un semaphore empty initialise a N (dimension du buffer) avec une liste vide qui controle

le nombre de cases vides demeurant dans le buffer, et donc les processus producteurs.Cette initialisation des semaphores ne peut pas etre effectuee par les processus producteurs etconsommateurs eux-memes puisqu’elle est commune a tous. De plus on ne peut pas laisser unprocessus usager manipuler directement le contenu d’un semaphore.

L’initialisation est effectuee avant la creation des processus producteurs et comsommateurspar leur processus parent qui cree et initialise les semaphores par des appels systeme.

Code Producteur

void producteur(void)

{

objet item ;

while(TRUE)

{

produire_item(&item) ;

down(&empty) ;

down(&mutex) ;

ajouter_item(&item) ; //section critique

up(&mutex) ;

up(&full) ;

}

}

Code Consommateur

void consommateur(void)

{

objet item ;

while(TRUE)

{

down(&full) ;

down(&mutex) ;

retirer_item(&item) ; //section critique

up(&mutex) ;

up(&empty) ;

Cours de Systemes d’Exploitation

Page 64: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

52 / 103 Chapitre 4 : Les Processus

consommer_item(&item) ;

}

}

4.5.4.4 Une solution au probleme des philosophes dineurs

Cette solution est ecrite pour N philosophes et utilise :¤ un semaphore binaire initialise a 1, mutex, qui controle l’entree et la sortie des processus

de la section critique,¤ un tableau de semaphores S[N] initialises a 0 avec une liste vide, qui controle l’acces de

de chaque philosophe a ses fourchettes,¤ un tableau de semaphores etat[N] permettant de representer l’etat de nos philosophes.

Les etats decrits par le probleme sont pense et mange. La solution decrite ici doit leurajouter un troisieme etat intermediaire faim. Tous les philosophes sont initialement dansl’etat pense.

On peut noter que l’on ne represente pas l’etat de chaque fourchette explicitement. L’accent estporte sur l’etat de chaque philosophe. Si un philosophe desire prendre sa fourchette gauche, ilne verifie pas si elle est libre, mais si son voisin de gauche est dans l’etat mange. Le philosophese bloque alors en attente de cette fourchette en etat faim.

Ici encore l’initialisation est effectuee avant la creation des processus representant chaquephilosophes et elle est effectuee par des appels systeme.

On numerote alors les philosophes de 0 a N et le iemephilosophe est donc une instance dela fonction philosophe(int i). On definit aussi les macros suivantes :

¤ #define GAUCHE (i-1)%N

¤ #define DROITE (i+1)%N

Voici le codage :

void philosophe(int i)

{

while(TRUE)

{

pense() ;

prendre_fourchettes(i) ; //acces aux ressources partagees

manger() ; ;

poser_fourchettes(i) ; //acces aux ressources partagees

}

}

void prendre_fourchettes(int i)

{

down(&mutex) ;

etat[i]=faim ;

test(i) ; //si les f. sont libres, s[i].valeur incrementee a 1...

up(&mutex) ;

down(s+i) ; //... et est ra-

mene ici a 0. Si les f. n’etaient pas libres

//s[i]<0 et on bloque sur l’appel a down()

}

}

void poser_fourchettes(int i)

{

down(&mutex) ; //entree en section critique

Yann MORERE

Page 65: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.5 Synchronisation de processus 53 / 103

etat[i]=pense ;

test(GAUCHE) ; //si les phil. gauche attendait sa f.d. on le re-

veille

test(DROITE) ; //si les phil. droit attendait sa f.g. on le re-

veille

up(&mutex) ;

}

}

void test(int i) //on verifie que les 2 fourchettes sont libres

{

if (etat[i] == faim && etat[GAUCHE] != mange && etat[DROITE] != mange)

{

etat[i]=mange ;

up(s+i) ; //permet de reveiller le voisin

}

}

4.5.4.5 Une solution au probleme du barbier endormi

Cette solution utilise trois semaphores :

1. un semaphore a n jetons pour les clients (qui compte les clients qui attendent),

2. un semaphore binaire pour le barbier (endormi 0 ou actif 1),

3. et un semaphore d’exclusion mutuelle.

Lorsque le barbier arrive au travail, sa procedure est executee et se bloque sur le semaphore desclients jusqu’a ce qu’un client arrive. Quand un client arrive, sa procedure est executee et il faitl’acquisition de mutex afin d’entrer en section critique. Les clients suivants doivent attendre quecelui-ci aie rendu le jeton de mutex. After avoir fait l’acquisition de mutex, le client regarde si lenombre de personne en attente est inferieur au nombre de chaise. Si ce n’est pas le cas, le jetonde mutex est restitue et le client s’en va sans etre servi. S’il y a une place assise, le compteurde personne en attente est incremente, la barbier est reveille, et le client restitue le jeton dumutex. La barbier prend alors le jeton du mutex et commence la coupe. Lorsque le client a lescheveux coupes, il s’en va. La barbier verifie alors s’il n’y a pas un autre client, sinon il s’endort.

#define CHAIRS 5

typedef int semaphore ;

semaphore customers = 0 ;

semaphore barbers=0 ;

semaphore mutex=1 ;

int waiting=0 ;

void barber(void)

{

while (TRUE)

{

DOWN(customers) ; /*go to sleep if no customers*/

DOWN(mutex) ;

waiting=waiting-1 ;

Cours de Systemes d’Exploitation

Page 66: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

54 / 103 Chapitre 4 : Les Processus

UP(barbers) ;

UP(mutex) ;

cut_hair() ;

}

}

void customer(void)

{

DOWN(mutex) ;

if (waiting lessthan CHAIRS)

{

waiting=waiting+1 ;

UP(customers) ;

UP(mutex) ;

DOWN(barbers) ;

get_haircut() ;

}

else

{

UP(mutex) ;

}

}

Meme en utilisant des semaphores, il est possible que se posent d’autres problemes de synchro-nisation :

¤ difficulte de programmation,¤ interblocage

4.6 Processus poids-legers et threads

4.6.1 Introduction

Selon le modele classique, les notions d’application, de tache, de job, et de processus sont apeu pres equivalentes. Une application en cours d’execution est modelisee, du point de vue duSE, par un processus. Chaque processus a son espace d’adresse propre. Le systeme d’exploitationa connaissance de l’existence des processus et le repartiteur accorde une fraction de tempsde l’UCT a chacun d’entre eux.

Mais ce modeles possede des inconvenients :¤ tres souvent certaines parties d’une application pourraient etre executees de maniere

concurrente, en parallele , mais elles ne peuvent etre executees que de maniere serielle,¤ le modele de processus classique n’exploite pas de maniere satisfaisante les architectures

multi-processeurs.On peut rappeller les definitions de concurrence et parallelisme :

¤ le parallelisme d’une application multiprocesseurs est son degre reel d’execution parallele,et il est donc limite par le nombre de processeurs,

¤ le degre de concurrence (concurrency) de cette application est le parallelisme maximalqu’elle pourrait atteindre avec un nombre illimite de processeurs.

Premier essai de modification de modele de processus il pourrait paraıtre interessantde s’attaque a l’equivalence application-processus en autorisant une application a etrecomposee de plusieurs processus, mais ce modele ainsi modifie pose des problemes :

Yann MORERE

Page 67: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.6 Processus poids-legers et threads 55 / 103

����

��� ��������� ����������� �����! #"

Fig. 4.19 – Le modele classique tache = processus

¤ chaque processus ayant toujours son espace d’adresse propre, on multiplie le nombred’espaces d’adresse a charger en memoire. En particulier, si l’application fait appel aplusieurs instances d’un meme processus, on retrouvera plusieurs copies quasi-identiquesdu meme espace d’adresse (le code en particulier) en memoire.

¤ l’execution de l’application impose la resolution d’un complexe probleme de communica-tion entre processus.

L’idee est de conserver la notion de plusieurs chaınes d’execution a l’interieur d’une memeapplication, tout en limitant les problemes de communications.

4.6.2 Notion de thread

Selon ce nouveau modele, une application correspond toujours a un seul processus, mais ceprocessus est compose de plusieurs chaınes de controle, ou threads partageant le meme espaced’adresse (et en particulier les memes variables globales).

Chaque thread s’execute de maniere sequentielle (serielle) et dispose pour cela de son proprecompteur programme, de ses registres et de sa propre pile.

Les threads d’un meme processus partagent le meme espace d’adresse, ce qui signifie qu’iln’y a pas de protection entre threads. Un thread peut donc par exemple completement detruirela pile d’un autre thread du meme processus.

Selon ce nouveau modele, on voit que les differents threads d’un meme processus peuventprogresser a des vitesses differentes. Un thread peut etre dans l’un des etats suivants :

¤ nouveau, quand il vient d’etre cree,¤ elu ou actif, quand il a acces a un processeur,¤ bloque ou en attente (d’entree/sortie),¤ termine.

Le modele de thread permet d’exploiter de maniere bien plus efficace les architectures multi-processeurs.

4.6.3 Abstraction fondamentales

4.6.3.1 Le point de vue du kernel

La concurence peut etre offerte par les threads a deux niveaux ; au niveau du systeme ouau niveau de l’application.

Cours de Systemes d’Exploitation

Page 68: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

56 / 103 Chapitre 4 : Les Processus

�����

����� ������� ���������� ���������

�! �"$#�%'&

Fig. 4.20 – Nouveau modele : un processus peut comprendre plusieurs chaınes de controle, outhreads

�����

����� ������� ����������

�����������

�!�"

#�$�%

&�'�(

)�*�+,.-0/ 132�4�5.,

6.708 93:�;�<.6

Fig. 4.21 – Une des chaınes de controle (threads) d’un processus peut bloquer sans que celaaffecte les autres threads de ce processus

Yann MORERE

Page 69: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.6 Processus poids-legers et threads 57 / 103

Concurrence systeme Le kernel offre la possibilite de concurrence systeme (system concur-rency) en reconnaissant des chaınes de controles multiples a l’interieur d’un processus, eten ordonnancant ces chaınes de controle (souvent appelees hot threads) independamment.Dans le cas d’un systeme multiprocesseurs, plusieurs threads peuvent etre simultanementactives : le repartiteur les multiplexe sur les differentes UCT disponibles.Meme un systeme monoprocesseur peut beneficier de la concurrence systeme ; car si l’undes threads bloque, d’autres peuvent poursuivre leur execution.

Concurrence usager Il est aussi possible d’offrir la possibilite de concurrence par le biaisde librairies de threads qui peuvent etre appelees par l’application. Ce type de threads,communement appeles cold threads ou coroutines, ne sont pas reconnues par le kernel. Lerepartiteur continue donc a partager le temps de calcul diponible entre des processus, etnon entre leurs threads.Chaque application est donc en charge des ses propres threads, et en particulier leur alloueleur temps d’acces a l’UCT a l’interieur du segment de temps qui lui a ete alloue par lerepartiteur.C’est de cette maniere que les versions classiques d’Unix et MacOS implantent le conceptde thread.

4.6.3.2 Thread du kernel

Un thread du kernel n’est pas necessairement associe a un processus usager. Il est cree etdetruit, selon les besoins, de maniere interne par le kernel et est charge de l’execution d’unefonction particuliere. Il partage le texte et les donnees globales du kernel, mais il a sa proprepile. Il peut etre ordonnance independamment et utilise les mecanismes de synchronisationstandards du kernel, tels que SLEEP() ou WAKEUP().

Les threads du kernel sont utilises par exemple pour des operations d’E/S asynchrones.La requete est geree de maniere synchrone a l’interieur de la chaıne de controle, mais paraıtasynchrone au reste du kernel.

Les threads du kernel sont peu couteux a creer et a utiliser. En particulier, les changementsde contexte entre threads du kernel sont rapides.

4.6.3.3 Processus poids-leger (lightweight process ou LWP)

Un processus poids-leger est un thread usager supporte par le kernel. C’est une abstractionde haut niveau basee sur la notion de thread du kernel. Les PPL (processus poids-leger) sontordonnances independamment et partage l’espace d’adresse et les ressources du processus. Ilspeuvent faire des appels systeme et bloquer en attente d’E/S, ou, plus generalement, d’uneressource.

Un PPL doit maintenir une pile kernel et le contexte des registres relatifs au kernel. maisils doivent aussi conserver l’etat usager (en particulier le contexte des registres).

Pratiquement toutes les operations sur les PPL (creation, destruction, synchronisation) de-mandent l’execution d’appels systeme, c’est a dire a chaque fois deux changement de mode :usager a kernel, puis kernel a usager, avec a chaque fois le passage d’une frontiere de protectionet la copie d’information entre l’espace kernel et l’espace usager.

4.6.3.4 Threads au niveau de l’usager

Il est aussi possible de presenter l’abstraction de thread entierement au niveau de l’usa-ger, sans que le kernel aie connaissance de leur existence. Ceci est accompli par des librairiestelles que C-threads de Mach et pthreads de POSIX. Dans ce cas, les interactions entre threadsn’impliquent pas le kernel et sont donc par consequent tres rapides.

Cours de Systemes d’Exploitation

Page 70: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

58 / 103 Chapitre 4 : Les Processus

� � �

� � � �

������� ���� ������ ���� �"!�#�$&%('()

* +-,�.�/&021�1�3�1

4 5-6�7�8&92:�:�;�:< 7(= >�:@?@A B�CD926FEG5H5HIKJ

L MON�P&Q�R(SUTWVYXZQ�P�[\Q�]

^-_�`�aDb�cFaDd�e�c�_�_�c

fhgji khljmnhojpqhrjs thujv

Fig. 4.22 – Les processus poids-leger (lightweight process) sont vus par le kernel et en particulierpar le repartiteur qui leur offre l’acces au(x) processeur(s) disponible(s)

temps de creation (en mi-crosecondes)

temps de synchronisationutilisant des semaphore (enmicrosecondes)

Thread usager 52 66

PPL 350 390

Processus classique 1700 200

L’inconvenient majeur de ce type de thread est qu’ils ne permettent pas de tirer parti desarchitectures multi-processeurs : quel que soit le nombre d’UCT, au plus un thread de chaqueprocessus peut etre elu a un instant donne. Si on utilise ensemble les deux types de threadsusager (supportes par le kernel ou pas), on obtient des structures de threads plus sophistiquees.

Yann MORERE

Page 71: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

4.6 Processus poids-legers et threads 59 / 103

����������� � ����

� �����������������

������ �!#"%$�&�')(#*�+

,�-�.�/10�23/14�5�2�-�-�2

687:9 ;8<:=>8?:@A8B:C D8E:F

G

H I J

K

L M

N

O P Q

Fig. 4.23 – Cas des threads implantes par des librairies comme C-threads ou pthreads : lerepartiteur ne voit que les processus

����������� ���� ��

� ������������������ ��� ��� � ! "�#$���&%'�(�()+*

,.-�/�0�1�243�5�687�9�:

;�<�=�>$?�@&>$A�B�@�<�<�@

CEDGF HEIGJKELGMNEOGP QERGS

T

U V W X Y Z [ \

]^_ `

Fig. 4.24 – Structure complexe combinant les deux types de threads usager : processus poidsleger et threads non supportes par le kernel

Cours de Systemes d’Exploitation

Page 72: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 73: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

61 / 103

Chapitre 5Gestion de la memoire

5.1 Introduction

Il existe dans un systeme informatique plusieurs supports de conservation de l’information.Ces supports ou types de memoire sont organises selon une hierarchie en couche comme on l’avu dans le chapitre 2. Au sommet se trouve les registres (petite capacite, grande vitesse, couteleve). En bas de la pyramide on retrouve les supports magnetiques et optiques de memoiresecondaire (grande capacite, faible cout, lents).

Afin d’obtenir une bonne performance du systeme informatique, il est important de tirer lemeilleur parti des types de memoires les plus rapides pour pallier les limitations des plus lentset a l’inverse d’exploiter au maximum les types de memoire les plus abondants pour simuler lestypes plus rapides disponibles en quantites limitees.

Nous nous concentrerons sur deux points :

¤ l’utilisation de la memoire secondaire pour emuler la memoire reelle, que l’on appelleaussi les techniques de memoire virtuelle,

¤ l’utilisation de la memoire principale (RAM) pour tirer une meilleure performance dessystemes d’entrees/sorties appellee aussi technique de cache disque.

5.2 Monoprogrammation

5.2.1 Introduction

Nous nous interesserons dans un premier temps au cas d’un seul processus charge en me-moire. La plupart des concepts que nous allons voir s’appliquent au cas de la multi-programmation.

5.2.2 La liaison entre noms et adresses (address binding)

Un programme ecrit dans un langage de haut niveau, ou meme en langage d’assemblage,fait appel a des noms, ou codes ou mnemoniques, pour acceder aux donnees qu’il doit mani-puler. Le programme en langage machine qui est effectivement execute n’utilise plus ces nomssymboliques, mais des adresses par lesquelles il accede aux donnees.

Probleme : A quel moment se fait ce passage des adresses symboliques aux adresses systeme ?

1. Lors de la compilation ou de l’assemblage du programme (code absolu)C’est une solution qui est surtout appliquable pour les systemes tres specialises et le plussouvent monoprogrammes, en particulier les systemes temps reels.

Page 74: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

62 / 103 Chapitre 5 : Gestion de la memoire

������������ �����������

���������������� � �"!$#&%�'(� )*��'&%�+

��+-,/.10 2�3"2�2425�5

6�7�8�848:9�9 ;<�=�>�?�@�A

B�C A D"E$F&G�H(> I*>�H&G�JA�J-KMLON

P�Q�R�S�Q�TU�U VW�X�TS�V�Q

Y�Z&[&\]�^�_M`"^acbed Z a$f$b�d Z&g4h$^�_

^�i-jMkOlm�n�o�p�n�qr�r s

t�u�qp�s�nv�w�x�y�z�{�|

}�~ | �"�$�&���(y �*y��&���|��-�/�1�

Fig. 5.1 – Organisation de la memoire avec un SE et un programme usager

2. Lorsque le programme est charge en memoire (code relogeable)S’il n’est pas possible de savoir lors de la compilation a quelle adresse le programme seracharge, alors il est necessaire de generer du code machine relogeable. Les adresses sonttoutes relatives a l’adresse de debut de la partition.

3. A l’execution du programmePar exemple, dans le cas de la figure precedente, si le SE est partiellement resident enmemoire, la frontiere entre l’espace du SE et l’espace Usager peut varier. La liaison al’execution est alors necessaire.

5.2.3 Espace adresse logique et espace adresse physique

Dans le cas d’un lien effectue au chargement ou a l’execution, l’UCT emet des adresseslogiques qui doivent etre converties en adresses physiques. correspondant a une location enmemoire. Ceci est fait a l’aide de deux registres :

¤ le registre de base, ou registre de relocation, contient l’adresse du debut de la partitionmemoire du programme usager,

¤ le registre limite correspond a la taille de la partition memoire du programme usageret permet de verifier si la demande d’acces en memoire est permise ou non (protectionmemoire par registre).

���������� ��������������� �

����������� � !���"#� � $#% &�'�(#)�$�%+*%$#% ,�-/.102)�'�-�3

4 576/598;:=< >?�@A�B C�C�BDEGF C�H�I�JKB

LM�L

N�OP

Q�R�S�TTVU�WXQ�R�S�Y�Q�U Z�U\[GQ^]U`_ba U R�R�U cRd];a S�]R�U e�e�S�f�U

Fig. 5.2 – transformation de l’adresse physique en adresse logique

Yann MORERE

Page 75: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.3 Multiprogrammation 63 / 103

5.3 Multiprogrammation

5.3.1 Multiprogrammation et utilisation de l’UCT et de la memoire

Un des objectifs de la multiprogrammation est une meilleure utilisation de l’UCT. Si l’onconsidere le modele simpliste d’un systeme sur lequel n processus s’executent en concurrence, nest alors appele le degres de multiprogrammation du systeme. Si l’on suppose que les n processuspasse tous une fraction p de leur temps a affectuer des E/S, on voit que le taux d’utilisation del’UCT est :

TUUCT = 1− pn.

0 1 2 3 4 5 6 7 8 9 100

10

20

30

40

50

60

70

80

90

100Taux d’utilisation de l’UCT

Degrés de multiprogrammation

Tau

x d’

utili

satio

n de

l’U

CT

20% E/S50% E/S80% E/S

Fig. 5.3 – Taux d’utilisation de l’UCT pour divers taux d’E/S et nombre de processus

5.3.2 Multiprogrammation a partitions fixes

Une maniere simple d’autoriser la multiprogrammation est de decomposer lors de l’initia-lisation du systeme) l’espace memoire usager en plusieurs partitions fixes. Le repartiteur dehaut niveau decide de l’attribution des partitions libres au processus qui en font la demande.La partition memoire demandee se fait sur la base de la taille du code du programme et d’uneestimation de la taille de la pile et du monceau requis pour l’execution du programme.

La multiprogrammation a partitions fixes etait surtout utilise sur les ordinateurs main-frame d’IBM.

Idealement on cherchera a avoir des partitions de tailles differentes de maniere a pouvoiraccommoder differents types de programme. Il sera alors possible d’avoir un file d’attente partype de partition : une file pour les petites partitions, une pour les partitions moyennes etc...De meme on cherchera a eviter ou a reduire les problemes suivants :

¤ fragmentation interne : une partition de grande taille est gaspillee par un petitprocessus (cas d’une file d’attente unique),

Cours de Systemes d’Exploitation

Page 76: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

64 / 103 Chapitre 5 : Gestion de la memoire

¤ fragmentation externe : un processus attend indefiniment qu’une partition correspondanta ses besoins memoire se libere, alors que l’espace libre est decompose en plusieurs petitespartitions,

¤ un processus attend indefiniment qu’une partition correspondant a ses besoins en me-moire se libere, alors qu’une partition de grande taille est disponible (dans le cas des filesd’attente multiples).

��������� ��� � � � ����� ���������� � � � � � �����

��� � � � � � � �"!

#�$ % & ' & ' ( )+*

,�- . / 0 / 0 1 2+3

4�5 6 7 8 7 8 9 :<;

=�> ?@

A�BCBD

E�FCFCFCG

H�I�JCJCK

LCM�NCNCO

PQCQCQCR S�T�U�V�W U�XY Z [ [ U�T�[ U\�] ^_^ S�T�U

`�a b c d c d e f"g

h�i j k l k l m n+o

p�q r s t s t u v+w

x�y z { | { | } ~<�

��� ��

���C��

���C�C�C�

�����C�C�

�C���C�C�

��C�C�C�

Fig. 5.4 – Deux types de repartiteurs de haut niveau : repartiteurs a files multiples (une parpartition) et repartiteur a file unique

5.3.3 Multiprogrammation a partitions variables

La principale difference entre les multiprogrammations a partitions fixes et a partitionsvariables est que, dans le cas de cette derniere, le nombre, la taille et la location des partitionschangent au cours du temps.

En multiprogrammation a partitions variables, un processus ne peut pas avoir de garantiesur la location de sa partition avant d’etre charge en memoire. En particulier un processus nepeut pas requerir un region particuliere de la memoire principale, vu que celle-ci pourrait nejamais se liberer. Par consequent, opter pour une strategie de multiprogrammation a partitionvariable impose que le code executable des programmes soit au minimum relogeable.

Exemple : d’evolution possible des partitions correspondant aux evenements suivants : (a) leprocessus A est charge en memoire, (b) B est charge en memoire, (c) C est charge enmemoire, (d) A termine (et libere la memoire), (e) D est charge en memoire, (f) B setermine, (g) E est charge en memoire, (h) D termine, (i) E termine, (j) F est charge enmemoire.

� �

� � �

����� ����� �� "! #�$&% '�(*) +-,/. 0-132 4�5&6 7�8 9 : ;/<

Fig. 5.5 – Occupation de la memoire pour la sequence d’execution des processus donnee dansle cas d’une gestion de la memoire a partitions variables

Yann MORERE

Page 77: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.3 Multiprogrammation 65 / 103

Observations

1. L’utilisation de partitions variables ne resoud pas le probleme de la fragmentation externe :si le processus F se presente avant que E ne se termine, il devra attendre faute de trou

memoire assez grand.

2. Afin d’eviter un fragmentation externe trop importante, on peut avoir a re-introduire leprobleme de la fragmentation interne : par exemple lors du passage de (f) en (g), plutotque de laisser un trou de tres petite taille entre C et D, on peut preferer donner toutl’espace libre a D.

Solutions pour 1 et 2

¤ Lorsque le niveau de fragmentation externe de la memoire devient trop important, oulorsqu’une demande d’allocation de memoire ne peut etre satisfaite, on effectue une com-paction de la memoire, de maniere a regrouper les trous isoles en trous plus importants :. un trou a une extremite de la memoire usager,. un trou au centre de la memoire usager,. un trou juste assez grand pour la demande recue.

¤ Le SE peut aussi effectuer une operation de ramasse-miettes (garbage collection) achaque fois que de la memoire est liberee dans le monceau (heap).

5.3.4 Allocation d’un trou libre

Il existe trois strategies communement employees :

1. Le premier trou disponible (First Fit). On effectue une recherche parmi les trousdisponibles. Le premier trou de taille suffisante qui est rencontre est choisi. Cette

technique est la plus rapide.

2. Le plus petit trou disponible (Best Fit). Le plus petit trou de taille suffisante estselectionne. Il faut donc tester tous les trous disponibles avant d’en choisir un.

3. Le plus grand trou disponible (Worst Fit). Sauf s’il existe un trou ayant exactementlayant exactement la taille la taille requise (auquel cas on le selectionne), le plus grandtrou disponible est selectionne. La raison est la suivante : on veut que le trou restant, unfois que l’espace demande a ete alloue, soit le plus grand possible.

Quelle que soit la srtategie choisie, il faudra une bonne representation de l’ensemble des trousdisponibles.

5.3.5 Representation de l’espace libre

Nous presentons ici les representations de l’espace libre utilisant des images de bits (bitmaps)ou des listes chaınees.

5.3.5.1 Bitmap

L’espace memoire adressable est decompose en blocs de taille 2n fixe. La partition allouee aun processus est composee d’un nombre entier de blocs.

On definit une table (conservee en memoire) dont chaque bit definit l’etat (libre=0, oc-cuppe=1) d’un bloc en memoire.

Une fraction 1/2n+3 de la memoire totale est donc occupee par la table.

Cours de Systemes d’Exploitation

Page 78: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

66 / 103 Chapitre 5 : Gestion de la memoire

� � � � �

����� ����� � ��������������

1 1 1 0 0 0 0 1

1 1 1 1 1 1 0 0

0 0 0 1 1 1 1 1

0 0 1 1 1 0 0 1

1 1 1 0 0 0 0 1

0 0 0 0 0 0 0 1

Fig. 5.6 – Representation de l’occupation memoire par une carte de bits

5.3.5.2 Liste chaınee

Une autre technique consiste a maintenir une liste chaınee des segments de memoire alloueeet de memoire libre, chaque segment correspondant soit a un processus, soit a un trou entre deuxpartitions de processus. Contrairement a la technique bitmap, la liste chaınee ne se contente

� � � � �

����� �������

P 0 3 T 3 4 P 7 5 P 12 3

T 15 5 P 20 5 T 25 2 P 27 4

���������������������! #"$������&%!' ��(*)+���,��"$%!��-.���&/!�0�1- 2 -32 �4�5 607 8 8 9;:<9*=?>�@ 59$5AB>4C?9*=?D!8 >�@$A E+F�9,8 6#G!60H�537 537 >4=IKJ4L M�N3O�P�QSR3P�QUT V#I!VWQ�N3L N L J4MXJ4P�T OYN3Q�J4P?R3PZL [0V�M�N

Fig. 5.7 – Representation de l’occupation de la memoire par une liste chaınee

pas de compter les blocs occupes et libres. Ainsi on trouvera plusieurs segments P contigus, laou le bitmap ne verra qu’un seul segment occupe.

5.3.5.3 Listes de trous de taille specifiques

Il est possible d’accelerer la recherche de aussi bien dans le cas d’un representation detype bitmap que de la liste chaınee. Pour cela on peut maintenir des listes de trous de taillesfrequemment demandees, le plus souvent des puissances de 2 en octets (16K, 32K, 64K).

5.3.6 Limitations de ces techniques

Le principal defaut de ces techniques, est qu’elles requierent que la taille des partitions soitdefinie de maniere statique. Lorsqu’un processus a obtenu une partition, il est tres difficile voirimpossible de lui allouer d’avantage de memoire en cours d’execution.

Yann MORERE

Page 79: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 67 / 103

5.4 La memoire virtuelle

5.4.1 Pallier le manque de memoire

Un processus peut avoir besoin de plus de memoire que ce qui est reellement disponibleen RAM. De maniere plus generale, l’espace total necessaire pour l’ensemble des processus ouapplications charges par les usagers pour etre executes depassent souvent (largement) lescapacites de la memoire primaire.

Il s’agit alors pour le concepteur de systemes d’exploitation de regler ce probleme de manquede memoire. Les solutions proposees reviennent toutes a decouper l’espace de memoire virtuelledont a besoin chaque processus en plusieurs morceaux, et a ne charger que quelques uns de cesmorceaux (ceux qui sont immediatement necessaires) en memoire. On pourra distinguer :

¤ les structures de chevauchement (overlay),¤ la segmentation,¤ la pagination.

5.4.1.1 Structures de chevauchement (overlays)

Cette solution, utilisee par exemple sous MS-DOS, permet a un programme en cours d’exe-cution de charger un fichier .exe ou .com en memoire (par un appel systeme) puis de reprendrele controle. Le programme peut alors appeler une procedure dans l’overlay. Quand celle-ci afini son execution, le programme reprend son execution et peut liberer la memoire utilisee parl’overlay.

L’idee des recouvrements (chevauchements) est de maintenir en memoire seulement les ins-tructions et les donnees necessaires a chaque moment donne. Quand on a besoin d’autres ins-tructions, elles sont chargees dans l’espace precedemment occupe par des instructions qui nesont plus necessaires.

Les recouvrements ne requierent aucun support special de la part du systeme d’exploitation.C’est au programmeur d’ecrire la structure de recouvrement adequate. Cette tache demandeune connaissance complete de la structure du programme, de son code et de ses structures dedonnees. C’est pour cette raison que ces structures de recouvrement ne s’utilisent que sur lesmicro-ordinateurs et sur d’autres systemes qui ne possedent pas beaucoup de memoire.

5.4.1.2 Segmentation

Comme dans le cas des structures de recouvrement, l’espace adresse du processus est expli-citement decompose par le programmeur en blocs logiques (donnees, code d’E/S, code d’initia-lisation, calculs numeriques, etc...) appeles segments. Il est important de noter que les segmentsne sont pas tous de la meme taille (contrairement a ce que nous verrons avec la pagination).

On identifie les elements dans un segment par leurs deplacements a partir du debut dusegment. Un espace d’adresse logique est un ensemble de segments. Chaque segment possedeun nom et une longueur. Les adresses specifient le nom du segment et le deplacement dansce segment. Chaque adresse est donc designee par deux quantites : un nom de segment et undeplacement. Pour des raisons de simplification les segments sont references par des numerosde segments. Au final un adresse logique est definie par le doublet :

<numero du segment, deplacement>

Un prerequis pour la segmentation est donc bien evidemment que le code genere soit (auminimum) relogeable.

La transformation des adresses logiques en adresses physiques s’effectuent a l’aide d’unetable des segments, comme montre sur la figure 5.9.

Cours de Systemes d’Exploitation

Page 80: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

68 / 103 Chapitre 5 : Gestion de la memoire

�������������

������ ��������������� �!"$#�%'&

(

)�*,+'-�./.'-10 2�3�4 5�6�-

Fig. 5.8 – Acces a un element d’un segment grace a son deplacement

����� �������� ��

����� �������������� �! !�

"$#�%'& (*)+�,�+�-�.

/10 230 4 5 687*9 :

;

< =

>�?�@ A�BB�A�CED1FGBH I1JGAK1LGM

N!O1N

P*Q�R'S�SUTWVEP*Q�R�X PT�Y�T�Z�P\[!T^] _ T�QQ�T�`GQ�[�_ R�[GQ�T�aa*R'b�T

ced!fhg8i j�klnm�o$p'i qsrEk

Fig. 5.9 – Transformation d’une adresse logique en adresse physique dans le cas de la memoiresegmentee

Yann MORERE

Page 81: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 69 / 103

Si le nombre de segments est faible, la table des segments sera le plus souvent conserveesdans des registres. Sinon, une partie de la RAM sera utilisee a cette effet. La table des segmentsfait bien entendu partie des informations sur un processus que le systeme d’exploitation doitpreserver lorsque le processus elu est desactive et retablir lorsqu’un nouveau processus prendle controle de l’UCT.

De maniere plus generale, contrairement au cas des structures de recouvrement, le systemed’exploitation est en charge des segments.

Les principaux avantages de la segmentation sont :

¤ elle elimine pratiquement le probleme de fragmentation interne et reduit le probleme dela fragmentation externe,

¤ elle permet une gestion fine et fonctionnelle de la gestion memoire,¤ elle permet de partager la totalite ou des parties du code entre plusieurs processus et de

proteger les acces a ces segments.

Les principaux inconvenients de la segmentation sont :

¤ les segments doivent etre definis explicitement par le programmeur,¤ elle n’elimine pas completement le probleme de la fragmentation externe,¤ les segments sont de taille variable et la gestion des allocations de trous reste aussi

complexe que dans le cas des partitions contigues.

5.4.1.3 Pagination

lespace adresse du processus est decoupe en morceaux de petite taille fixe (pour le systeme),ou pages qui occupent des cadres de page (frames) en memoire.

La taille des pages est un parametre d’environnement du systeme d’exploitation. Il est fixea l’initialisation du systeme et ne peut changer en cours dexecution. Typiquement, cette tailleest une puissance de 2 : p = 2n, (le plus souvent, de 512 octets a 8 K = 8192 octets). De cettefacon, si la taille de l’espace adressable est 2m, alors les mn premiers bits de l’adresse logiqueindiquent le numero de page et les n bits suivants indiquent le deplacement (offset) a l’interieurde cette page.

Cours de Systemes d’Exploitation

Page 82: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

70 / 103 Chapitre 5 : Gestion de la memoire

Fig. 5.10 – Pagination : decomposition de l’espace d’adresse d’un processus en pages de taillefixe

Les coupures entre deux pages consecutives peuvent se produire a des endroits arbitrairesdans l’espace adresse : au milieu dune instruction en langage machine, de donnees, etc.

En pratique, les frontieres entre blocs de types differents (code, donnees statiques, pile,monceau) sont toutefois generalement respectees.

Plusieurs solutions, chacune ayant ses avantages, ont ete proposees pour implanter la liaison(binding) entre les adresses logiques et les adresses en memoire paginee. La plus simple nutilisequ’une table de pages.

Fig. 5.11 – Implantation de la memoire paginee a l’aide d’une table de pages

Dans la mesure ou la taille des cadres est relativement reduite, un processus necessite ge-neralement un grand nombre de pages. Il est donc le plus souvent impossible de conserver latotalite de la table de pages dans des registres. Il en resulte un important ralentissement desacces a la memoire.

On peut combiner les avantages de rapidite d’acces et de grands nombres de pages (grandespartitions pour les processus) en utilisant des registres associatifs (translation look-aside buffersou TLBs).

Yann MORERE

Page 83: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 71 / 103

Fig. 5.12 – Pagination a l’aide des registres assocoatifs

Gain tire de l’utilisation de TLBs :

Supposons que le temps d’acces a un registre est de 10 ns tandis que le temps d’acces a lamemoire est de 60 ns, alors :

¤ Si on n’utilise qu’une table de pages, le temps d’acces moyen est T = 60 + 60ns = 120ns(acces a la table plus acces a l’information souhaitee en memoire), soit un ralentissementde 100%.

¤ Si on utilise un TLB et que dans 80% des cas l’un des registres associatifs contientl’adresse du cadre de page desire (80% hit ratio), alors T = 0.8 × (10 + 60) + 0.2 ×(10 + 60 + 60) = 82ns, soit un ralentissement de 37%.

¤ Si on utilise un TLB et que dans 95% des cas l’un des registres associatifs contientl’adresse du cadre de page desire (95% hit ratio), alors T = 0.95 × (10 + 60) + 0.05 ×(10 + 60 + 60) = 73ns, soit un ralentissement de 22%.

¤ Des taux de reussite (hit ratios) de lordre de 80% 98% sont communs pour les micropro-cesseurs actuel, qui utilisent de 8 a 2048 registres pour leur TLB.

La pagination a plusieurs niveaux (multilevel paging)

Les systemes informatiques d’aujourdhui supportent des espaces adresse logiques de tres grandetaille (232 a 264 octets). Si l’on considere un espace adresse de 232 octets et une taille de pagede 4 K = 212 octets, alors la table de pages devrait contenir 232-12 = 220 entrees, cest-a-direplus d’un million. Un bloc contigu de 4 MB en memoire devrait donc etre reserve pour la seuletable de pages !

Pour resoudre ce probleme on pourra avoir recours a une pagnation a plusieurs niveaux.Dans l’exemple precedent, le numero de page qui occupe 20 bit pourrait etre decompose ennumero de page de 10 bits et un decalage de page de 10 bits egalement

Fig. 5.13 – Pagination a l’aide des registres assocoatifs

On va utiliser une table principale (outer page table) pour acceder a la table de pages(elle-meme paginee) qui contient les numeros de cadres.

Cours de Systemes d’Exploitation

Page 84: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

72 / 103 Chapitre 5 : Gestion de la memoire

La premiere moitie du numero de page, p1, est utilisee pour trouver dans la table principalele numero de la page dans la page de tables qui contient lentree pour p2, cest-a-dire le numerode cadre en memoire physique. Finalement, le deplacement d est applique.

Fig. 5.14 – Implementation de la pagination a deux niveaux

Avantage de cette technique : Comme la page de tables est elle-meme paginee, elle n’aplus besoin d’occuper un bloc contigu en memoire.

De nos jours, la plupart des microprocesseurs supportent trois voire quatre niveaux de pagi-nation. Afin de ne pas trop degrader les temps dacces a la memoire, la pagination a plusieursniveaux est toujours utilisee en conjonction avec des registres associatifs (TLB). Les calculs quenous avons faits pour un niveau de pagination se generalisent sans peine a plusieurs niveaux.

Les principaux avantages de la pagination sont que :

¤ Elle est completement transparente pour le programmeur qui n’a pas besoin de definirexplicitement la decomposition et peut ne se soucier que de son espace memoire logiquecontigu.

¤ Elle permet de partager du code re-entrant entre plusieurs processus (en particulier apresun fork()).

¤ Elle permet un bon niveau de protection de la memoire.

Elle elimine pratiquement les probleme de fragmentation interne et de fragmentation externe.

Les principaux inconvenient de la pagination sont que :

¤ Comme elle est effectuee de maniere aveugle, selon une taille de page fixe, les coupuresentre pages ne sont pas toujours judicieuses.

¤ Le programmeur qui souhaite un degre de controle tres fin de l’execution de son codeaura beaucoup plus de mal a le faire que dans le cas de la segmentation.

¤ Contrairement a la segmentation, il nest pas possible de distinguer differentes parties ducode qui peuvent etre partagees par differents processus : cest le code en entier qui estpartage.

¤ Il faut creer une table de pages pour chaque processus qui est charge dans le systeme.

Malgre ces inconvenients, la pagination est de loin la technique la plus utilisee de nos jours parles systemes de gestion de la memoire (Memory Management Unit ou MMU).

Yann MORERE

Page 85: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 73 / 103

5.4.2 Generalisation a plusieurs processus

La segmentation et surtout la pagination constituent les bases des techniques de memoirevirtuelle moderne. Leur seul objectif n’est toutefois pas de simuler plus d’espace memoire pourun seul processus que ce qui est effectivement disponible, mais de permettre l’execution concu-rente de plusieurs processus, c’est a dire la multiprogrammation en temps partage.

Dans ce chapitre, nous verrons deux mecanismes par lesquels ceci peut etre assure :

¤ Le va-et-vient (swap inswap out), selon lequel des processus de la file des processus pretssont transferes entre la memoire centrale et une memoire secondaire, comme un disquedur.

¤ La demande de page (paging) selon laquelle des pages de l’espace adresse du processus eluou de processus prets sont transferes entre la memoire centrale et une memoire secondaire,comme un disque dur.

5.4.3 Le va-et-vient (swap inswap out)

Le va-et-vient est la procedure par laquelle le gestionnaire de la memoire va retirer de lamemoire principale un processus qui ne va pas avoir acces a lUCT avant un temps relativementlong (par exemple parce qu’il est bloque en attente dE/S), liberer la partition que ce processusoccupait, l’accorder a d’autres processus, et finalement recharger le processus initial en memoirequand il revient a l’etat pret.

L’avantage du va-et-vient est qu’il permet d’accepter plus de processus dans le systemeet donc d’augmenter le degre de multiprogrammation. L’inconvenient est qu’il faut mainte-nant determiner quand le gestionnaire de la memoire doit sortir un processus de la memoireprincipale.

Supposons que le processus P occupe un espace M en memoire et doit rester bloque pendantun temps T suite a une demande dE/S. Les questions qui se posent sont :

¤ Comment decider si le va-et-vient d’un processus est justifie ?¤ Comment le gestionnaire de la memoire peut-il decider, lorsqu’il manque de place en

memoire principale quel processus doit etre evacue ?

On utilisera souvent le produit M ´ T pour estimer l’espace perdu par un processus qui restepresent en memoire principale alors qu’il est bloque sur une demande dE/S. Si M est tres petit,il se peut qu’il ne vaille pas la peine de sortir ce processus de la memoire principale.

Supposons en effet que S soit le temps necessaire au swap out de ce processus ainsi qu’auswap in symmetrique (si l’on ne tient pas compte du temps pris par la recherche despacedisponible en memoire principale pour recharger P). S est une fonction croissante quasi-lineairede M. La valeur de M, et donc celle de S est connue par le gestionnaire de la memoire. Ladifficulte consiste a evaluer T.

Il est preferable de surevaluer T que de le sous-evaluer. En effet, si T£S, alors le swap outn’est meme pas encore termine qu’il faut deja recharger le processus en memoire. En fait, leva-et-vient de P na vraiment de sens que si T >> 2S.

Une evaluation de T assez communement utilisee est le temps T ecoule pendant lequel P adetenu M unites de memoire. De cette facon, un processus qui est present depuis longtemps enmemoire sera penalise pour laisser l’acces a des processus plus jeunes.

5.4.4 La demande de page

Nous avons vu comment la pagination de la memoire permet de resoudre le probleme de lafragmentation externe et de reduire sensiblement le probleme de la fragmentation interne. Nousavons vu que la pagination est transparente pour le programmeur, qui peut considerer que son

Cours de Systemes d’Exploitation

Page 86: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

74 / 103 Chapitre 5 : Gestion de la memoire

programme dispose d’un bloc contigu en memoire, alors que l’espace adresse de son programmeest effectivement dissemine en pages occupant des cadres en memoire physique.

Nous venons egalement de voir comment la partition d’un processus charge dans le systemepeut etre transferee entre la memoire principale et la memoire secondaire afin de permettred’augmenter le degre de multiprogrammation du systeme.

L’etape suivante consiste a se demander si, lorsque la partition dun processus est chargeeen memoire (swap in), toutes les pages ont effectivement besoin detre presentes en RAM.

¤ Un lazy swapper ne charge une page en memoire que si elle est effectivement necessaire(demandee).

En fait, le terme swapper n’est pas approprie quand on parle du chargement/dechargementde pages individuelles, car un swapper manipule des partitions entieres. On emploiera donc leterme pager dans le contexte de la demande de page.

Si seulement un sous-ensemble des pages dun processus est effectivement present dans descadres de pages, il se produira de temps a autre, au cours de l’execution de ce processus, unefaute de page, (page-fault) cest-a-dire une demande d’acces a une page qui n’est pas presentedans un cadre de page.

Traitement d’une faute de page durant l’execution d’un processus P :

1. Il se produit une trappe materielle (hardware trap) vers le kernel. Le compteur programmeet eventuellement l’etat de l’instruction courante du processus interrompu sont preservesdans une pile

2. Une routine (generalement ecrite en langage dassemblage) est executee qui sauvegarde lesregistres et appelle le kernel qui prend alors le controle de lUCT.

3. Le kernel decouvre qu’une faute de page s’est produite, et sur quelle page virtuelle cettefaute sest produite.

4. Le gestionnaire de la memoire virtuelle verifie si la page est valide et si le processus P ale droit d’acceder a cette page.

(a) En cas dechec le processus P est tue ou recoit un message.

(b) Sinon on charge la page dans un cadre.

¤ S’il y a un cadre de page libre, il est choisi.¤ Sinon, il faut tuer une page pour la remplacer par la page demandee.

5. Si la page a tuer avait ete modifiee, elle doit etre ecrite dans lespace de swap (sur disque).Elle est marquee busy jusqu’a ce que loperation d’E/S soit terminee.

6. Un changement de contexte se produit. Le processus P est bloque en attente dE/S (lecturedune page et eventuellement ecriture dune autre), son PCB du est preserve, et un nouveauprocessus est active.

7. Pendant que l’UCT traite d’autres processus, les E/S de pages s’effectuentet la table depages est remise a jour. P revient a l’etat pret.

8. Quand P revient a l’etat elu, le PCB et l’intruction ayant cause la faute de page sontretablis et l’execution reprend.

5.4.5 Performance de la memoire virtuelle

Typiquement, le temps de traitement d’une faute de page (code execute, acces au disque,transfert) sera de l’ordre de 20 ms, a comparer avec un temps dacces a la memoire de l’ordrede 80 ns, une fois que l’on a pris en compte le delai ajoute par la gestion des pages.

Si le taux de faute de pages est p, alors le temps d’acces affectif a la memoire virtuelle est :

Yann MORERE

Page 87: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 75 / 103

T = (1− p)× (80ns) + p× (20ns)

= 80 + 19.999.920p

¤ Si p = 0.001, alors on obtient T � 20 µs.¤ Si on voulait une degradation de lordre de 10%, il faudrait que p >> 4 10-7

Il y a deux angles d’attaque pour ameliorer la performance de la memoire virtuelle :¤ Reduire les temps d’acces au disque. Nous verrons cela au chapitre 4.¤ Reduire la valeur de p par le choix d’un algorithme de demande de page judicieux

5.4.6 Caracteristiques principales dun algorithme de demande depage

¤ Statique ou dynamique : Un algorithme statique alloue un nombre fixe de cadres de pagea chaque processus. Un algorithme dynamique permet de changer le nombre de cadresde page dun processus en cours d’execution.

¤ Strategie de chargement : quand une page doit-elle etre chargee dans un cadre ? On peutchoisir la demande de page pure (une page nest charge que si elle est demandee), maison peut aussi decider de pre-paginer, c’est-a-dire de charger a l’avance un certain nombrede pages dans des cadres.

¤ Strategie de remplacement : s’il n’y a pas de cadre libre, quelle page occupant un cadredoit etre tuee pour faire place a la nouvelle page ?

¤ Strategie de placement : dans quel cadre une nouvelle page doit-elle etre chargee ?Certains de ces choix sont lies. Par exemple, si l’on choisit un algorithme statique, alors lastrategie de placement est imposee : une nouvelle page est toujours chargee dans le cadre quivient detre libere par l’algorithme de remplacement de page.

5.4.7 Algorithmes statiques de remplacement de pages

Le meilleur algorithme est celui qui produit le moins de fautes de pages. Nous allons lescomparer a partir de l’exemple simple d’un processus disposant de 8 pages et qui s’est vu allouer3 cadres de pages en memoire principale. Nous numeroterons les pages de 0 a 7 et supposeronsqu’au cours de l’execution du processus, les demandes de pages suivantes se produisent ensequence :

0 1 2 3 0 1 2 0 3 0 2 3 4 5 6 7.

5.4.7.1 PAPS

L’algorithme le plus simple : lorsqu’une faute de page se produit, c’est la page qui occupedepuis le plus longtemps un cadre de page qui est tuee.

Cours de Systemes d’Exploitation

Page 88: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

76 / 103 Chapitre 5 : Gestion de la memoire

Nous obtenons donc avec cette sequence un total de 13 fautes de pages.

PAPS se base sur la dure de temps qu’une page a passe en memoire, et non sur son tauxd’utilisation. Son comportement n’est donc pas approprie au comportement de la plupart desprogrammes. PAPS est tres peu utilise en pratique, son seul avantage etant sa simplicite d’im-plantation.

5.4.7.2 Remplacement aleatoire

Cet algorithme exhibe a peu pres les memes avantages et inconvenients que PAPS. Il aete etudie dans les annees 60, mais on a alors realise que les demandes de pages d’un memeprocessus etaient en fait assez fortement correlees et que d’autres alogorithmes permettraientd’obtenir des resultats plus satisfaisants.

On designe souvent par le terme comportement de localite (locality behavior) le fait qu’unprocessus executant un programme bien concu tend a rester dans les memes regions de son codeet de ses donnees pendant un certain temps et non a sauter d’un bout a l’autre de son espaceadresse.

Nous allons maintenant voir des algorithmes qui tentent de tenir compte de l’utilisationrecente des pages presentes en memoire.

5.4.7.3 LRU (Least Recently Used)

Lorsqu’une faute de page se produit, c’est la page qui a la reference la plus ancienne qui esttuee.

Nous obtenons donc avec cette sequence un total de 12 fautes de pages. La ligne marqueeLRU contient le classement de plus recente utilisation. La page en bas de cette liste doit etrela prochaine victime si une faute de page se produit.

L’inconvenient principal de LRU est son implantation qui necessite le classement des pagesselon leur derniere reference.

5.4.7.4 LFU (Least Frequently Used)

Lorsqu’une faute de page se produit, c’est la page qui a ete la moins referencee qui esttuee. Les cas d’ex-æquo sont regles par tirage aleatoire, LRU, PAPS, ou toute autre strategieCet algorithme est encore plus problematique a implanter que LRU, vu qu’il necessite que l’onmaintienne a jour un compteur d’utilisation pour chaque processus.

De plus, LFU reagit tres lentement aux changement de localite d’un processus. Il pourracontinuer a remplacer les pages de la nouvelle localite simplement parce que leur compteur est

Yann MORERE

Page 89: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 77 / 103

faible. Apres un certain temps, cette inertie finira par etre vaincue (si le processus conserve lameme localite assez longtemps), mais il en resulte un nombre important de fautes de pages.

On a aussi propose lutilisation des algorithmes suivants, qui ne se sont pas averes bienefficaces :

¤ LFU (Least Frequently Used),¤ MRU (Most Recently Used).

5.4.7.5 L’anomalie de Belady et lalgorithme de remplacement optimal

Considerons la sequence de references de pages suivante :0 1 2 3 0 1 4 0 1 2 3 4Dans un premier temps, nous considererons le cas ou 3 cadres sont disponibles et nous

choisissons PAPS comme algorithme de remplacement de page.

Nous obtenons donc avec cette sequence un total de 9 fautes de pages.

Nous obtenons cette fois ci 10 fautes de pages, bien que le nombre de cadres soit plus grand !C’est l’anomalie de Belady.

Cours de Systemes d’Exploitation

Page 90: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

78 / 103 Chapitre 5 : Gestion de la memoire

Afin de mesurer la performance dun algorithme de remplacement de page, nous comptonsle nombre de fautes de pages qui se produisent pour diverses sequences de references de pages.Nous pouvons ainsi dire que, pour une sequence donnee, LRU se comporte mieux que PAPS,mais comment savoir si ce comportement est lui-meme mediocre, bon ou excellent ?

Belady a propose comme point de reference un algorithme optimal, parfois appele OPT ouMIN, qui aurait le plus petit nombre de fautes de pages posssible.

L’algorithme optimal choisit de remplacer la page dont la prochaine reference est la pluslointaine dans le futur. Autrement dit, l’algorithme optimal ne fait que repondre a la questionsuivante :

Si on avait pu connaıtre a l’avance la sequence de references de pages, quelles pages aurait-ilfallu remplacer de maniere a minimiser le nombre de fautes de pages ?

L’algorithme optimal n’a bien evidemment pas d’implantation possible. Cest simplementune construction theorique, un ideal dont on souhaiterait rapprocher les algorithmes de rem-placement de page que l’on concoit ou concevra dans le futur.

A titre d’exemple d’execution de l’algorithme optimal, nous reprenons la sequence de l’ano-malie de Belady dans le cas de 4 cadres de pages.

0 1 2 3 0 1 4 0 1 2 3 4

Nous obtenons donc un total de 6 fautes de pages. Cest le plus petit nombre possible avec4 cadres de pages et cette sequence.

5.4.8 Une approximations de LRU : l’algorithme de la seconde chance

LRU est aujourd’hui, de tous les algorithmes statiques proposes, celui qui a en general lemoins mauvais comportement. Malheureusement, son implantation est delicate, vu quelle ne-cessite le maintien a jour d’une liste des references aux pages. Divers algorithmes approximantLRU tout en offrant un comportement assez similaire ont donc ete proposes. Tous ces algo-rithmes necessitent l’ajout de bits d’information supplementaire dans les entrees de la table depage :

Yann MORERE

Page 91: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

5.4 La memoire virtuelle 79 / 103

¤ Le bit de reference indique si une demande d’acces a la page (en lecture ou en ecriture)a eu lieu depuis la derniere verification et remise a zero de ce bit. Ce bit est remis a 1par le MMU lors de chaque acces a la page.

¤ Le bit dirty indique si le contenu de la page a ete modifiee, cest-a-dire s’il differe ducontenu de l’image conservee sur disque.

¤ Le bit de protection indique si le contenu de la page peut etre modifie (en general, ce bitest a 0 pour une page de code).

¤ Le bit de presence indique si la page occupe presentement un cadre de page.

5.4.8.1 L’algorithme de la seconde chance

Cet algorithme consiste en un balayage de la table des pages a la recherche d’une page alaquelle aucun acces ne s’est produit recemment :

La recherche d’une page a tuer commence au debut de la table de cadres

repeter

Test du bit de reference de la page occupant le cadre inspecte

Sil vaut 1, on le remet a 0 et on avance au cadre suivant.

Sil vaut 0, on a trouve une victime.

jusqua ce que lon ait trouve une page a tuer

Cours de Systemes d’Exploitation

Page 92: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 93: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

81 / 103

Chapitre 6Interblocage

6.1 Introduction : definition et caracterisation

Nous avons vu au second chapitre que le modele le plus commun d’operation d’un systemeinformatique est celui de processus qui doivent partager l’acces a des ressources (UCT, memoire,peripheriques dE/S, etc.). Nous avons vu qu’un des problemes d’acces a ces ressources, celuides conditions de course, pouvait etre resolu par des strategies de synchronisation faisant appel,par exemple, a des semaphores. Autrement dit, il est possible d’empecher que deux processusn’accedent en meme temps a une ressource. Meme la meilleure technique de synchronisation nepeut toutefois garantir que chaque processus aura acces aux ressources dont il a besoin et quedes processus ne resteront pas eternellement bloques en attente.

Fig. 6.1 – Interblocage

Page 94: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

82 / 103 Chapitre 6 : Interblocage

6.1.1 Definition de l’interblocage (deadlock)

Un ensemble de processus est dans un etat d’interblocage si chaque processus de l’ensembleest bloque en attente d’un evenement qui ne peut etre cause que par un autre processus del’ensemble. Exemples d’interblocage :

¤ La forme la plus simple de la figure de la page precedente : deux trains devant circuleren sens inverse sur une meme voie et arretes l’un face a l’autre.

¤ Une personne X a $20 en poche et doit $30 a une personne Y qui, par contre, a $10 etdoit $20 a X. Chacun des deux attend de pouvoir payer sa dette d’un seul coup.

¤ Mamihlapinatapaı : holophrase fuegienne signifiant l’etat de deux personnes qui, seregardant, esperent que l’une dentre elles fera ce que toutes deux desirent, mais n’osentpas entreprendre. Histoire du Monde, Unesco

6.1.2 Caracterisation de l’interblocage

Les exemples precedents nous donnent une idee des conditions necessaires pour qu’un etatpuisse etre ou devenir un etat d’interblocage. Par exemple, dans le cas des trains, il est clairque la ressource (un segment de voie) ne peut pas etre partagee. Dans le cas du 2e exemple,le probleme existe seulement parce que les deux personnes veulent rembourser leur dette enun seul coup. Autrement dit, elles ne sont pas pretes a relacher une partie de leurs ressourcesen cours dexecution. De maniere plus formelle, on peut identifier (Coffman et al., 1971) quatreconditions necessaires pour qu’un interblocage soit possible. Il faudra que les quatre conditionssoient verifiees simultanement pour qu’un interblocage se produise.

Les quatre conditions necessaires :

1. Condition d’exclusion mutuelle. Il doit exister au moins deux ressources qui ne sont paspartageables : a un moment donne, chacune est soit assignee a un seul processus soitdisponible.

2. Condition de detention et d’attente. Il existe un processus qui detient au moins uneressource et attend de pouvoir acquerir (donc, demande) des ressources detenues pard’autres processus.

3. Condition de non requisition. Un processus ne peut pas etre force (par un autre processus)a relacher les ressources deja acquises.

4. Condition d’attente circulaire. Il doit exister une chaıne circulaire d’au moins deux pro-cessus, dont chacun attend une ressource detenues par le membre suivant de la chaıne.

6.1.3 Graphe dallocation des ressources

On utilise les conventions pictographiques suivantes : Un processus est represente par uncercle

Fig. 6.2 – Processus

Yann MORERE

Page 95: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.1 Introduction : definition et caracterisation 83 / 103

Une ressource est representee par une boıte rectangulaire. S’il existe plusieurs instancesindifferentiables de la ressource, on les represente dans la meme boıte.

Fig. 6.3 – Ressources

Par indifferentiable, on entend qu’un processus ne devrait pas pouvoir choisir une instancede cette ressource plutot qu’une autre : il prend la premiere disponible. Des lors qu’un processuspeut choisir une instance plutot qu’une autre, elles sont differentiables, et on les modelisera alorscomme des instances de ressources differentes.

Un arc emanant d’une instance d’une ressource R et pointant vers un processus signifie quecette instance de R est detenue par P.

Fig. 6.4 – Ressources allouees

Un arc emanant d’une processus P et pointant vers une ressource R signifie que P est bloqueen attente d’un instance de ressource de type R.

Fig. 6.5 – Ressources demandees

Cours de Systemes d’Exploitation

Page 96: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

84 / 103 Chapitre 6 : Interblocage

Dans l’etat represente a la figure 6.4, le processus P1 detient la seule instance de la ressourceRB et est bloque en attente de RA, que detient P2. Le processus P2 lui-meme detient uneinstance de la ressource RC mais il est bloque en attendant qu’une seconde instance se libere,ce qui ne pourra se faire que lorsque P3 , qui detient 3 instances de RC en liberera une. Si a cepoint de son execution P3 venait a demander une ressource de type RB, on obtiendrait alors legraphe suivant, qui correspond a un etat d’interblocage :

Fig. 6.6 – Etat dinterblocage apres que P3 a demande R B.

6.1.4 Remarques

Pour des raisons evidentes, le graphe ci-dessous correspond a un etat impossible : si lesinstances de RC sont effectivement indifferentiables, alors P2 ne devrait pas pouvoir etre bloqueen attente de RC alors qu’un instance de cette ressource est libre.

Fig. 6.7 – Etat impossible

La presence d’un cycle dans le graphe d’allocation de ressources est une condition necessairepour que l’etat courant corresponde a un interblocage. Si chacune des ressources impliquees dansle cycle compte une seule instance, alors cette condition est aussi suffisante. Les figures suivantesillustrent cette remarque.

Pour qu’il y ait interblocage, il faut qu’il y ait blocage des processus impliques, chacunen attente d’une ressource que detient l’un des autres processus, comme par exemple dans legraphe d’allocation de ressources ci-dessous.

Yann MORERE

Page 97: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.1 Introduction : definition et caracterisation 85 / 103

Fig. 6.8 – Graphe d’allocation de ressources (une ressource de chaque type).

De ce graphe d’allocation de ressources, on peut deduire le graphe indiquant qui attend qui,et dans lequel on distingue aisement quelques cycles :

Fig. 6.9 – Graphe d’attente correspondant

On pourrait faire de meme pour une situation ou l’on a plusieurs ressources de chaque type :

Cours de Systemes d’Exploitation

Page 98: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

86 / 103 Chapitre 6 : Interblocage

Fig. 6.10 – Graphe d’allocation de ressources (plusieurs de chaque type).

Dans ce cas, on obtient le graphe d’attente suivant :

Fig. 6.11 – Graphe d’attente correspondant (plusieurs de chaque type).

6.1.5 Comment traiter le probleme de linterblocage ?

On peut distinguer quatre types de strategies de traitement automatique du probleme del’interblocage :

1. l’esquive,

2. la prevention,

Yann MORERE

Page 99: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.2 Vagabondage theorique sur linterblocage 87 / 103

3. la detection/resolution,

4. la strategie de lautruche (ne rien faire).

Nous allons considerer dans les sections suivantes les motivations pour chacunes de ces approchesainsi que les techniques qui ont ete developpees pour les mettre en application. Nous feronscela par le biais dun vagabondage a travers un certains nombre de concepts de la theorie del’informatique.

6.2 Vagabondage theorique sur linterblocage

6.2.1 Preambule

Cette section du cours decoule directement d’une discussion par email avec un etudiant dutrimestre d’automne 1996 qui n’etait pas d’accord avec mon interpretation de la notion d’etatincertain (que nous verrons un peu plus loin). Apres plusieurs echanges de messages, j’ai fini parposter (deux jours avant l’examen final) un long document illustre de plusieurs pages sur monsite web discutant ces points de maniere plus complete. Je ne fais ici que retranscrire ce texteet en consolider quelques segments par un peu de theorie de l’informatique, ce qui me donnel’occasion de vous exposer un peu a ces matieres qui ne font (helas) pas partie du curriculum.

Dans la mesure ou je ne saurais obliger qui que ce soit a entrer dans des details de theoriede l’informatique, j’ai isole les complements d’information non essentiels a la comprehensiondu cheminement logique. Les segments apparaissant a l’intereur d’encadres gris de ce typeapportent des details et des informations qui me semblent interessants, mais que vous pouvezsauter en premiere lecture (et en fait, eviter completement).

6.2.2 Bibliographie reduite

[1] J.E. Hopcroft and J.D. Ullman, Introduction to Automata Theory, Languages, and Com-putation, Addison-Wesley, Reading, MA, 1979.

[2] H.R. Lewis and C.H. Papadimitriou, Elements of the Theory of Computation, Prentice-Hall, Englewood Cliffs, NJ, 1981.

Ces deux livres couvrent a peu pres lensemble des bases de la theorie de linformatique, ense basant largement sur la theorie des langages formels.

[3] M.R. Garey and D.S. Johnson, Computers and Intractability : a Guide to the Theory ofNP-completeness, Freeman, New York, 1979.

Cet ouvrage constitue encore la reference fondamentale en matiere detude des problemesNP-complets, et contient en particulier une (longue) liste de problemes NP-complets pour laplupart des domaines de linformatique.

[4] A.J. Kfoury, R.N. Moll, and M.A. Arbib, A Programming Approach to Computability,Springer-Verlag, New York, 1982.

Ce livre-ci ne couvre que letude de la calculabilite, mais ce qui le rend interessant est quil lefait dune maniere bien plus informatique que les autres, en se basant sur une forme simplifieedu langage Pascal (ce qui demontre en plus le bon gout des auteurs).

Finalement, si vous voulez aussi raffraichir vos notions de complexite algorithmique ou toutsimplement disposer dun bon ouvrage dalgorithmique de reference (un autre grand classique) :

[5] A.V. Aho, J.E. Hopcroft, and J.D. Ullman, The Design and Analysis of Computer Al-gorithms, Addison-Wesley, Reading, MA, 1974.

Cours de Systemes d’Exploitation

Page 100: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

88 / 103 Chapitre 6 : Interblocage

6.2.3 Mecanisme de demande de ressource

Afin de simplifier la discussion qui suit, nous supposerons que chaque processus effectue sesrequetes d’allocation de ressources en faisant appel a une procedure similaire au Down() quenous avons vu au chapitre 2. Autrement dit, lorsque le processus P demande 2 ressources detype RA, 1 de type RB et 3 de type RC : Si toutes ces ressources sont disponibles et que le SEles lui alloue, il peut continuer son execution. Si elle ne sont pas toutes disponibles ou si le SEne lui en alloue quune partie, le processus P bloque en attendant que les ressources dont il avaitfait la requete lui soient accordees. Nous pouvons donc maintenant par exemple considerer queles files dattente dE/S (resp. la file dattente des processus prets) du chapitre 2 contiennent lesprocessus qui ont fait une demande dallocation de ressource de peripherique dE/S (resp. daccesa lUCT) qui na pas pu etre satisfaite.

6.2.4 Interblocage et cycles dattente

Revenons un peu sur la signification des arcs dun graphe d’allocation des ressources, etconsiderons pour ca le cas plus simple de la figure 10. Ce qui est important dans la figure 10est qu’un arc partant d’un processus et allant vers une ressource nindique pas que le processusva avoir besoin tot ou tard de cette ressource, mais qu’il l’a deja demandee et qu’il est bloqueen attendant quelle lui soit allouee.

Fig. 6.12 – Un autre graphe dallocation de ressources

Yann MORERE

Page 101: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.2 Vagabondage theorique sur linterblocage 89 / 103

Fig. 6.13 – Graphe dattente correspondant a letat represente a la figure precedente

On voit que tous les processus, sauf P3, sont bloques. Il ny a malgre tout pas encore d’in-terblocage. Autrement dit, si P3 termine son execution normalement, il liberera ses ressources,et P2, P6 et P8 pourront reprendre leur propre execution la ou elle avait ete interrompue (surune demande d’allocation de ressources). Si maintenant P3 demande une ressource de type Ph,cette demande ne peut pas etre satisfaite, P3 bloque, et l’on aboutit a l’etat d’interblocage quiavait ete represente a la figure 6.7.

En resume : Le graphe d’allocation des ressources est uniquement un bon indicateur de l’etatcourant du systeme processus + ressources. Il nous donne une vue instantanee de l’etat dechaque processus : bloque (ce que nous avons appele jusqua present en attente) ou actif(pret ou elu). De meme, il nous donne une vue instantanee de chaque instance de chaqueressource (allouee ou libre), mais il ne nous donne aucune indication sur le futur de cesysteme. En particulier, il ne nous informe en rien sur les besoins des processus : il ne nousdit pas de quelles ressources un processus donne va devoir faire une requete. A fortiori, ilne nous dit rien sur la chronologie de ces requetes. L’etat represente a la figure 6.10 nepose un probleme que si P3 demande une ressource qui est deja allouee. Autrement dit,si on savait a l’avance de quelle ressources P3 va faire la demande, on pourrait decider sicet etat doit etre evite ou pas. La question que l’on peut se poser est : Est-il possible dedeterminer a l’avance les besoins des processus en matiere d’allocation de ressources ?

6.2.5 Mauvaises nouvelles (1ere partie) : problemes non decidables

Idealement, ce que nous souhaiterions serait quelque chose similaire au module de predictionde la figure : un programme qui, recevant en entree le code (il devrait etre evident qu’il importepeu s’il sagit de code objet ou de code source) et les donnees d’entree d’un processus, puissedeterminer a l’avance de quelles ressources ce processus va avoir besoin, et a quel moment aucours de son execution. Dans la mesure ou le processus doit sexecuter dans des conditions detemps partage, l’instant auquel une requete sera presentee depend necessairement des autresprocessus avec lesquels lUCT (ou les UCTs) est partagee. Il nous suffirait donc de savoir dansquel ordre les requetes d’allocation de ressources et les commandes de liberation de ressourcesseront presentees (ou, pour reprendre une expression rencontree souvent dans les exercices,lunite de temps est ici arbitraire).

Cours de Systemes d’Exploitation

Page 102: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

90 / 103 Chapitre 6 : Interblocage

Fig. 6.14 – Module de prediction de chronologie des besoins en ressources.

Le probleme est qu’un tel module de prediction est impossible. Il fait en effet partie dela classe de problemes dont on peut prouver qu’il ne sont pas calculables (ou decidables).Autrement dit, il n’existe pas d’algorithme qui soit capable de faire ce genre de chose. Notezbien que l’on dit bien ”il n’existe pas”, et non pas il n’existe pas encore. Tous ces problemesindecidables se ramenent au probleme de l’arret (halting problem) pour lequel il est facile deprouver qu’il nexiste pas de solution algorithmique. Le probleme de l’arret dit a peu pres lachose suivante :

¤ Il n’existe pas d’algorithme capable de prendre comme parametres le code d’un pro-gramme P et des entrees pour ce programme, et de decider si P terminera normalementsur ces entrees ou pas (auquel cas, on supposera quil boucle a l’infini). N.B. Il est im-portant que le code de P fasse partie des entrees. Il est bien evident que l’on pourraiteffectuer de maniere automatique une telle verification des donnees pour un programmeP specifique.

6.2.5.1 Introduction plus formelle a la theorie de la calculabilite

Cette theorie repose sur la correspondance entre les algorithmes et les fonctions qu’ils im-plantent. La definition d’un algorithme est ici plus lache qu’en genie logiciel, et corresponda des ensembles de regles ou des programmes. Une fonction est dite calculable s’il existe unalgorithme qui la realise. Par exemple, la fonction suivante est calculable : f (x) = 1, si x estpair, 0, sinon. En effet, elle est implantee par l’algorithme (programme) suivant :

begin read(X) ;

if X mod 2 = 0 then

Y := 1 ;

else Y := 0 ;

write(Y) ;

end.

De meme, la fonction suivante est calculable : g (x) = 1, s’il existe de la vie sur Mars, 0, sinon.Dans ce cas, on ne connaıt pas encore l’algorithme qui implante cette fonction (parce quon

Yann MORERE

Page 103: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.2 Vagabondage theorique sur linterblocage 91 / 103

ne connaıt pas encore la reponse a la question), mais il est de toute facon trivial (fonctionconstante).

N.B. : Nous ne traiterons ici que des fonctions/programmes a une seule entree et une seulesortie. La generalisation a n entrees et p sorties est triviale. Nous allons chercher a eta-blir une liste indexee complete de tous les programmes Pascal possibles (nous aurions puprendre C, mais Pascal est un langage plus propre qui se prete mieux a ce genre d’ana-lyses). Nous procedons de la maniere suivante : Soit un entier n. Nous convertissons nen sa forme binaire qui nous decomposons en octets, puis, a chaque octet, nous associonsle caractere dont il est le code ASCII. Nous obtenons donc, pour tout nombre n, le codesource d’un programme Pascal (ce programme peut etre correct comme il peut ne pasl’etre).

Si les caracteres correspondant a n ne forment pas le code d’un programme Pascal syntaxique-ment correct (qui ne compile pas), on associe a n le programme suivant (boucle infinie) :

begin read(X) ;

while X = X do

Y := X ;

write(Y) ;

end.

Nous avons defini une correspondance entre l’ensemble des nombres entiers naturels et celuide tous les programmes PascaL, et nous disposons donc maintenant d’une liste exhaustive detous les programmes Pascal : P1, P2,..., Pn,... Nous pouvons alors enoncer le theoreme suivant :Theoreme (probleme dit de l’arret) : Il n’existe pas de programme P capable de decider, pourtout nombre n, si le programme Pn terminera (correctement) si on lui soumet n comme entree.

Demonstration (par labsurde) Supposons quun tel programme existe, et appelons-le Ar-ret(X). Ce programme implante la fonction suivante : f (x) = 1, si Px termine quand on luisoumet x comme entree, 0, sinon ( Px plante si on lui soumet x comme entree). On peut parconsequent definir le programme Confondre(X)suivant :

begin read(X) ;

Y := 1 ;

if Arret(X) <> 0 then

while Y <> 0

do Y := Y ;

write(Y) ;

end.

Ce programme implante la fonction y suivante : y (x) = 1, si f (x) = 0, non definie, sinon(plante si on lui soumet x comme entree).

Par consequent (en resume), si le programme Arret(X) existe, alors le programme Confondre(X)est defini, et il existe un nombre entier naturel e tel que Pe = Confondre(X). La question quel’on se pose alors est : que retourne Pe si on lui soumet e comme entree, c’est-a-dire, que vauty (e) ? Si y (e) = 1), cela signifie que Arret(e) = 0, et donc que Pe (Confondre) ne termine pas sion lui soumet e comme entree, et donc que y (e) est indefini, ce qui constitue une contradiction.Si y (e) est indefini, cela signifie que Arret(e) = 1, et donc que Pe (Confondre) termine si on luisoumet e comme entree, et donc que y (e) termine correctement, ce qui constitue une contra-diction. Nous avons dans les deux cas une contradiction. Le programme Arret(X) ne peut doncpas exister.

De maniere generale, ce qu’il faut retirer de cette longue parenthese theorique est qu’il nestpas possible de predire de maniere automatique et a l’avance le comportement d’un programmea partir de son code et des donnees qui lui sont soumises. On peut par contre developer des

Cours de Systemes d’Exploitation

Page 104: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

92 / 103 Chapitre 6 : Interblocage

techniques d’analyse d’un programme particulier, ou des techniques generales d’evaluation deconformite a des criteres generaux de bonne qualite. Ces sujets-la (entre autres) sont etudiesen genie logiciel.

6.2.6 Une version plus faible du probleme de linterblocage

Nous venons de voir qu’il n’etait pas possible de predire a l’avance quels seraient les besoinsen ressources d’un processus donne (pour une certain vecteur d’entree de parametres). Nousnous replions donc sur une version plus faible de ce probleme : Supposons que l’on dispose,pour chaque processus present dans le systeme de la sequence ordonnees de ses demandes etliberations de ressources. Etant donne un etat initial du systeme, est-il possible de determiners’il existe un ordonnancement de ces processus (autrement dit, la facon dont on leur alloue letemps UCT) tel que l’on evite tout interblocage ?

Autrement dit, si on pouvait (par des processus incantatoire impliquant le sacrifice de petitsanimaux pelucheux) parvenir a predire le resultat de la boite noire de la figure 6.14, saurait-oncomment esquiver les interblocages (faire en sorte quils ne se produisent pas) ?

Fig. 6.15 – On suppose que lon dispose dune chronologie des demandes de ressources

6.2.7 Mauvaises nouvelles (2e partie) : problemes NP-complets

Malheureusement, meme sous cette forme simplifiee, le probleme reste trop complexe. Cettefois-ci, il existe bien un algorithme qui trouvera une solution, mais sa complexite algorithmiqueest trop elevee. Rappel : On dira qu’une fonction f (n) est d’ordre O (g (n)) s’il existe un entierN et un reel c > 0 tel que, pour tout n > N , on ait : f (n) > c × g (n). Il est a noter que lanotion de complexite algorithmique est de nature asymptotique : elle ne decrit pas ce qui sepasse pour de petites valeurs de n (voir figure 6.16).

Yann MORERE

Page 105: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.2 Vagabondage theorique sur linterblocage 93 / 103

Fig. 6.16 – Exemple de fonction dordre O(n)

Dans le cas d’un algorithme P admettant n entrees (points, nombres, mots, etc.), la com-plexite algorithmique de P est la fonction f faisant correspondre a la taille de l’entree n lenombre d’operations elementaires necessaire a l’execution de P .On dira alors par abus de lan-gage que P est de complexite algorithmique O (g (n)) si et seulement si la fonction f (n) estd’ordre O (g (n)).

Fig. 6.17 – Temps dexecution approximatif en fonction de la complexite algorithmique et dela taille n de lentree (tire du livre de Garey & Johnson cite plus haut). On suppose ici quuneinstruction elementaire sexecute en 1 µs.

On remarque que du point de vue de la complexite algorithmique, les facteurs lineaires nesont pas pris en compte. Cest comme cela que l’on parvient a faire abstraction du type demachine sur lequel l’algorithme est implante. La table suivant donne la taille du plus grandprobleme traitable en 1 heure en fonction de la complexite algorithmique et de la vitesse decalcul des ordinateurs.

Cours de Systemes d’Exploitation

Page 106: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

94 / 103 Chapitre 6 : Interblocage

Fig. 6.18 – Effet de progres technologiques sur la taille du plus grand probleme traitable en 1heure de calcul.

Apres avoir lu ce preambule, on s’attend sans doute a lire ici que la complexite des algo-rithmes classiques d’esquive de l’interblocage est mauvaise (elevee). La situation est en faitbien pire que ca : le probleme d’esquive de l’interblocage en version simplifiee a partir de lachronologie ”devinee” est NP-complet.

Autrement dit (en trivialisant ce-faisant vraiment beaucoup la notion de probleme NP-complet), non seulement personne ne connaıt de solution algorithmique a ce probleme qui aitune complexite polynomiale (de type n2 ou n3, ou n serait par exemple le nombre de de-mandes/liberations de ressources), mais il est fort a douter qu’un tel algorithme existe. En faitil existe une classe de problemes, dits NP-complets, qui couvrent par exemple des problemesde reseaux (avec application en informatique et en telephonie), de gestion de ressources, d’or-donnancement, de logique (diagnostic de systemes). Tous ces problemes peuvent etre ramenesde l’un a l’autre, ce qui veut dire que si un jour quelqu’un trouve une solution polynomiale al’un de ces problemes, alors cela signifiera que tous les autres ont une solution algorithmiquede complexite algorithmique polynomiale. En attendant, personne ne retient son souffle....

6.2.8 Que faire ?

La premiere chose a faire, quand on ne parvient pas a trouver de solution algorithmiquede complexite polynomiale a un probleme est de se demander si cela est vraiment genant.Apres tout, si on travaille avec un nombre d’entrees faible, il est possible qu’une solution decomplexite algorithmique 2n soit acceptable. En general, toutefois, ce n’est pas le cas. Laseconde chose a faire, dans ce cas, consiste a determiner si l’on se montre incapable de produireun algorithme de complexite polynomiale simplement parce qu’on n’est pas en forme ce jour(semaine/mois/annee/vie) la, ou tout simplement parce que le probleme est NP-complet. Il nesaurait etre question dans ce document tres limite de decrire en detail la demarche a suivre.Disons simplement que l’on doit prouver que le probleme que l’on traite se ramene (en tempspolynomial) a un probleme NP-complet connu. Il en existe une longue liste et il existe destechniques bien etablies pour ce genre de preuve.

Avoir prouve qu’un probleme (par exemple celui de l’esquive de l’interblocage) etait NP-complet est bien interessant, mais cela ne signifie pas que nous devons abandonner nos efforts(apres tout, le probleme est reel), simplement les rediriger. Puisque le probleme general n’ad-met pas de solution exacte de complexite polynomiale, nous avons deux voies possibles pourcontinuer notre etude : Rechercher des solution approximatives plutot que des solutions exactes.Determiner si le probleme que nous avons vraiment a resoudre est bien celui du cas general.Si possible, on devrait chercher a travailler sur un sousprobleme qui lui n’est pas NP-complet.Dans le cas de l’interblocage, meme si l’on simplifie considerablement le probleme, par exemple

Yann MORERE

Page 107: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.2 Vagabondage theorique sur linterblocage 95 / 103

en exigeant que les demandes et liberations de ressources soient correctement imbriquees, leprobleme reste NP-complet. Finalement, nous sommes obliges de rechercher une solution cor-respondant a des simplifications tres conservatrices du probleme de l’interblocage

6.2.9 Le modele qui en resulte

On va devoir faire maintenant les hypotheses simplificatrices suivantes :

1. On connait a l’avance les besoins maximaux en ressources de chaque processus (sonnombre Max de ressource de chaque type) ;

2. Afin de pouvoir terminer son execution, un processus doit detenir a un meme momentdonne son nombre Max de tous les types de ressources ;

3. Un processus ne libere de ressources que lorsqu’il termine son execution.

Autrement dit, selon notre nouveau modele, un processus accumule les ressources jusqu’aumoment ou il detient son nombre Max (necessaire) pour chaque type de ressources. Il a besoinde toutes ces ressources en meme temps. Le nombre de ressources qu’il detient ne fait doncque croıtre, jusqu’a ce qu’il puisse terminer son execution et liberer les ressources qu’il avaitobtenues.

6.2.10 Les matrices dallocation de ressources

Nous considerons un systeme dans lequel existent un certain nombre d’instances de diffe-rentes ressources. A tout instant, l’etat de chaque processus present dans le systeme va etrepartiellement decrit par le nombre d’instances de chaque type de ressource qu’il detient, lenombre maximum d’instances de ces ressources dont il a besoin pour terminer son execution et(par difference), le nombre d’instances de ressources qu’il doit encore obtenir.

Fig. 6.19 – Matrices dallocation de ressources : Requises = Max Detenues

Pour avoir une image complete de l’etat du systeme vis-a-vis de l’utilisation de ses ressources,il nous faut encore preciser le nombre total d’instances de chaque ressource dans le systeme

Nombre total d’instances de chaque type de ressource dans le systeme

On en deduit le nombre dinstances disponibles pour chaque type de ressource.Nombre dinstances de chaque type de ressource qui sont encore disponibles

Cours de Systemes d’Exploitation

Page 108: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

96 / 103 Chapitre 6 : Interblocage

6.3 Solutions au probleme de l’interblocage

6.3.1 Evitement de l’interblocage

Idealement, on souhaiterait que les processus puissent librement faire la demande des res-sources dont ils ont besoin. Le systeme d’exploitation, en charge de l’allocation de ces ressources,pourrait satisfaire ces demandes si les ressources demandees sont disponible et si les accorderau processus ne risque pas de conduire a un etat d’interblocage. Nous avons vu a la sectionprecedente que, sous sa forme generale, ce probleme ne peut pas etre resolu. Le modele auquelnous avons fini par aboutir, apres une serie de simplifications, est tres artificiel et d’un interetpratique quasiment inexistant. Nous netudions ce probleme de l’evitement de l’interblocage(deadlock avoidance) que parce que l’algorithme du banquier fait partie des grands classiquesqu’il faut connaıtre.

6.3.1.1 Etats surs, risques (unsafe) et interblocage

Nous reprenons ici l’exemple du manuel de Tannenbaum (pp. 252–254). Nous consideronsdeux processus, P0 et P1, qui doivent partager l’acces a deux ressources : une table tracante Tet une imprimante I. La figure 6.20 donne un exemple de sequence d’allocation/liberation deces deux ressources par les deux processus (dont on donne le pseudo-code deroule).

Fig. 6.20 – Exemple de sequences dallocation/liberation de deux ressources de type imprimante,I, et table tracante, T, par deux processus. Les instants tij correspondent a des points dans lecode des processus.

La possibilite d’interblocage survient lorsque les deux processus executent de maniere concu-rente et que leurs besoins de ressources sont en conflit. La figure suivante donne l’ensemble despossibilites de scenarios.

Yann MORERE

Page 109: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.3 Solutions au probleme de l’interblocage 97 / 103

Fig. 6.21 – Sequencements possibles des allocations et liberations de ressources pour les deuxprocesssus.

Un point sur ce graphe correspond a un etat d’avancement dexecution pour P0 et pourP1. Lorsque le repartiteur accorde du temps de l’UCT a un processus, celui-ci avance le longde son axe d’execution. Il en resulte un chemin en escalier qui monte de la gauche vers ladroite. Il n’est pas possible de redescendre ni de se deplacer de la droite vers la gauche, cequi reviendrait a revenir en arriere (remonter le temps) dans l’execution de l’un des processus.Lorsque, par exemple, le niveau horizontal t11 est depasse, cela signifie que le processus P1 ademande et obtenu la table tracante. Dans ce cas, il ne sera possible de depasser le niveauvertical t02 (P0 demande et obtient la table tracante) qu’apres que le niveau horizontal t14 (P1

libere la table tracante) ait ete depasse. De meme, si on a depasse le niveau vertical t01 (P0

a demande et obtenu l’imprimante), il n’est possible de depasser le niveau horizontal t12 (P1

demande et obtient l’imprimante) qu’apres que le niveau vertical t03 (P0 libere l’imprimante)ait ete depasse. On voit donc que, si l’on veut eviter l’interblocage, il convient de contournerles differentes zones ombrees de la figure 6.21.

La region hachuree de la figure 6.21 merite toutefois un examen plus detaille. Des lors quel’on entre dans cette region (par le fait de l’allocation de temps UCT aux deux processus),on se trouve dans la situation ou P0 detient l’imprimante et va bientot demander la tabletracante (avant d’avoir libere l’imprimante), tandis que P1 detient la table tracante et va bientotdemander l’imprimante (avant d’avoir libere la table tracante). En d’autres termes, d’apres leshypotheses que nous nous sommes fixes (un processus ne relache de ressource que lorsqu’il estsur le point de terminer), l’interblocage est maintenant ineluctable. Il peut se produire dansune fraction de seconde comme dans une heure, mais il ne peut plus etre evite. Nous dironsalors que la region hachuree correspond a l’ensemble des etats risques (unsafe).

Note : vous pourrez rencontrer des textes en francais dans lesquels le terme employe pourunsafe est incertain, ce qui est un contresens car, a l’interieur des hypotheses de travailchoisies, il n’y a rien d’incertain sur ces etats : ils conduisent tous a l’interblocage. Apresbeaucoup de tergiversations (et de discussions avec des etudiants au sujet de ce termeambigu), j’ai fini par choisir (pour le moment) le terme risque, qui au moins garde lanotion de danger.

En resume, nous pouvons distinguer trois types detats dun systeme informatique dans lequelplusieurs processus se partagent plusieurs instances de ressources selon les hypotheses de travailenoncees au 6.2.9 : Etats d’interblocage, tels que definis en 6.1.1 et 6.1.2, Etats risques (unsafe),a partir desquels l’interblocage est ineluctable, Etats surs (safe), a partir desquels il existe au

Cours de Systemes d’Exploitation

Page 110: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

98 / 103 Chapitre 6 : Interblocage

moins une sequence d’allocation de ressources aux processus permettant deviter l’interblocage.Afin deviter que ne se produise un interblocage, il suffit donc, lorsqu’un processus presente ausysteme une demande d’allocation de ressource, de verifier si le nouvel etat obtenu serait unetat risque. Si c’est le cas, il faut refuser la ressource au processus (qui va donc bloquer enattente de cette ressource). Sinon, le processus obtient la ressource.

6.3.1.2 L’algorithme du banquier

Cet algorithme, propose par Djikstra (1965), utilise les matrices d’allocation de ressourcespour trouver si un etat est risque (unsafe).

repeter

1. Chercher, parmi tous les processus qui nont pas termine, s’il est un processus P dont lesbesoins (nombre d’instances de ressources requises) peuvent etre satisfaits (inferieurs aunombre d’instances de ressources disponibles).

2. Si P existe, alors on lui accorde les ressources dont il a besoin et on le fait terminer (illibere alors ces ressources, plus celles qu’il detenait deja). S’il existait plusieurs choix pourP , peu importe celui que l’on choisit, vu que l’on dispose de plus de ressources apres quel’on ait fait terminer un processus. On obtient un nouvel etat du systeme.

jusqua ce qu’il n’y ait plus de processus P pouvant terminer. S’il reste des processus qui n’ontpas termine, alors l’etat est risque (unsafe). Sinon, il est sur.

Remarque : Les matrices d’allocation de ressources ne permettent pas de decider si un etatest un etat d’interblocage, vu quelles n’indiquent pas si un processus a deja demande uneinstance de ressource dont il a besoin (auquel cas il est bloque) ou s’il est encore a l’etatelu ou pret (du point de vue du repartiteur de bas niveau). Les matrices d’allocation deressources apportent donc une information completement differente de celle offerte parles graphes d’allocation de ressource : les graphes nous donnent une image instantaneede l’etat des processus, mais ne nous permettent pas de predire le futur, tandis queles matrices d’allocation de ressources nous informent sur les besoins futurs de chaqueprocessus, et donc sur les risques d’interblocage. Les graphes nous permettent de repondrea la question : l’etat courant est-il un etat d’interblocage ? Les matrices nous permettentde repondre aux questions suivantes : L’etat courant est-il sur ou risque (unsafe) ? Faut-ilaccorder a un processus les ressources qu’il demande (l’etat obtenu serait-il sur ou risque) ?

6.3.2 La prevention de l’interblocage

L’algorithme du banquier repose sur un modele irrealiste : celui de l’accumulation de res-sources par les processus ainsi que sur la connaissance a priori des besoins maximaux de res-sources de chaque processus. Si l’on veut faire en sorte que des interblocages ne se produisentpas, il existe une seconde strategie : la strategie de prevention de l’interblocage. Pour prevenirl’interblocage, il suffit de revenir aux quatre conditions necessaires vues au 6.1.2, et faire ensorte qu’elle ne se produisent jamais simultanement :

1. condition d’exclusion mutuelle,

2. condition de detention et d’attente,

3. condition d’attente circulaire,

4. condition de non requisition.

Autrement dit, le gestionnaire de ressources va devoir de temps a autre invalider l’une ou l’autrede ces conditions.

Yann MORERE

Page 111: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.3 Solutions au probleme de l’interblocage 99 / 103

6.3.2.1 Condition d’exclusion mutuelle

De toute evidence, il n’est pas question d’invalider cette condition : il n’est pas possible quedeux processus aient acces simultanement a une meme imprimante ou a un meme bruleur deCD-ROM. Condition de detention et d’attente Il existe deux facons d’empecher qu’un processusqui detient deja des ressources n’en demande dautres : obliger un processus a demander toutesses ressources d’un coup, en debut d’execution ; a chaque fois qu’un processus doit faire lademande de nouvelles ressources, le forcer a relacher au prealable celles qu’il detient deja. Lanouvelle demande doit ici encore etre accordee en bloc. De cette facon, il devient impossible derencontrer un etat risque (unsafe), vu qu’un processus, s’il detient des ressources, ne peut plusetre bloque jusqu’a ce qu’il les ait relachees.

6.3.2.2 Condition d’attente circulaire

La technique la plus communement utilisee pour prevenir l’attente circulaire est de definirune relation d’ordre parmi les ressources du systeme. On numerote ainsi les ressources Ri, aveci de 0 a n. On decide qu’un processus P ne peut demander d’instance d’une ressource Ri que sil’indice i est superieur a l’indice de toutes les ressources dont P detient deja des instances. Decette facon, il est impossible qu’un processus P qui bloquerait sur une demande de ressource Ri

detenue par P detienne lui-meme une ressource Rk dont P aurait besoin. En effet, si k < i, alorsP ne pourrait plus demander d’instance de Rk et il n’est pas possible d’avoir k > i, puisque Paurait du demander Ri avant Rk. On peut envisager, pour implanter cette restriction, soit queles processus demandent effectivement leurs ressources par ordre d’indice croissant soit qu’unprocessus demandant des instances d’une ressource Ri relache au prealable toutes les instancesde ressources Rk telles que k > i qu’il detient.

6.3.2.3 Condition de non requisition

Une des deux solutions permettant deliminer la condition de detention et attente que nousavons vues s’attaque egalement a la condition de non-requisition. On pourrait aussi pensera definir un ordre de priorite entre les processus et retirer des ressources aux processus peuprioritaires plutot que de bloquer un processus prioritaire. Il est certain qu’il nest pas possiblede retirer des ressources a un processus sans prendre au prealable certaines precautions (aprestout, ce processus pourrait etre en train d’utiliser ces ressources). Nous verrons a la prochainesection (detection et resolution) ces precautions a prendre.

1. La prevention de l’interblocage est donc une strategie tres conservatrice qui degrade glo-balement la performance du systeme afin d’empecher l’occurence de problemes de tempsa autre.

Si on fait le bilan des approches visant a empecher qu’un interblocage ne se produise, onen trouve une qui est irrealiste et ne peut etre implantee (levitement) et une qui entrave demaniere importante le fonctionnement normal du systeme (la prevention). On en est doncamene a se demander s’il nest pas preferable de laisser les processus s’executer normalement etde n’intervenir que lorsqu’un probleme se produit.

6.3.3 Detection et resolution de l’interblocage

Il s’agit maintenant pour le systeme d’exploitation de verifier de temps a autre si des proces-sus sont en etat d’interblocage et, le cas echeant, de tenter de les debloquer. Cette verificationpourrait se faire a intervalles reguliers (toutes les secondes, toutes les 10 secondes, etc.) ou lors-qu’un indicateur de probabilite d’interblocage est active (par exemple si le taux d’utilisation delUCT tombe a un niveau tres faible alors que le nombre de processus presents dans le systeme

Cours de Systemes d’Exploitation

Page 112: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

100 / 103 Chapitre 6 : Interblocage

est normal). En premier lieu, il est bien evident que pour qu’un processus participe a un inter-blocage, il qu’il soit bloque. Par consequent, l’algorithme de detection d’interblocage que nousallons voir ne doit prendre en compte que les processus bloques en attente d’une ressource, etdonc ignorer le(s) processus elu(s) ainsi que les processus presents dans la file d’attente de basniveau. D’autre part, des lors qu’il existe plusieurs instances de ressources, il ne suffit pas dedetecter des cycles dans le graphe d’attente (figures 4.8 a 4.11). Il faudra utiliser un algorithmeplus complexe s’apparentant a l’algorithme du banquier.

Ici encore, il va donc falloir supposer que l’on connaıt a l’avance les besoins maximauxde ressources de chaque processus, ce qui nous permet d’utiliser les matrices d’allocation deressources. Construire la liste L des processus bloques.

repeter

1. Chercher, parmi tous les processus sur L, s’il est un processus P dont les besoins (nombred’instances de ressources requises) peuvent etre satisfaits (inferieurs au nombre dinstancesde ressources disponibles).

2. Si P existe, alors on lui accorde les ressources dont il a besoin et on le fait terminer. S’ilexistait plusieurs choix pour P , peu importe celui que l’on choisit, vu que l’on disposede plus de ressources apres que l’on ait fait terminer un processus. On obtient un nouveletat du systeme.

jusqu’a ce quil ny ait plus de processus P pouvant terminer. S’il reste des processus sur L, alorsils participent a un interblocage.

6.3.3.1 Resolution de l’interblocage

Une fois que l’on a detecte l’existence d’un interblocage (au moins) et identifie les processusqui y participaient, il reste encore a resoudre l’interblocage. Il est important d’insister sur lefait que l’algorithme de detection presente plus haut permet juste d’identifier les processusinterbloques, mais pas de decider s’il y a un seul cycle d’interblocage ou plusieurs. Il ne permetpas a fortiori de savoir quels processus se bloquent mutuellement. On peut identifier troisclasses de techniques permettant la resolution : Tuer des processus. C’est la technique la plusradicale, qui est inacceptable dans le cas de transactions banquaires ou de bases de donnees.On peut choisir de tuer un processus participant a l’interblocage, mais on pourrait aussi tuerun processus innocent afin de recuperer ses ressources. Le probleme est donc de choisir unou plusieurs processus dont la liberation des ressources permettrait de relancer l’execution del’ensemble. Le choix de ce(s) processus peut se faire a l’aide des matrices d’allocation, mais aun cout calculatoire important. Cette solution est rarement utilisee de maniere automatique :on prefere laisser la responsabilite a un operateur humain (voir la section suivante).

Resoudre par la requisition de ressources. Il s’agit dans ce cas de determiner a quel processusil convient de retirer des ressources pour permettre a d’autres de reprendre leur execution, etdonc de sortir de l’etat d’interblocage. En pratique, il est peu de ressources que l’on puisse ainsiretirer sans devoir aussi interrompre l’execution du processus qui les detenait. On se retrouvedonc le plus souvent a utiliser la troisieme technique de resolution.

6.3.3.2 Resoudre par rollback.

On voit bien quil faut que, d’une facon ou d’une autre, des processus relachent des ressourcesqu’il detiennent. Si nous ne voulons pas tuer ces processus, alors il faut les ramener a l’etatdans lequel ils se trouvaient avant que la ressource en question leur ait ete allouee. Cela signifieque le systeme doit maintenant, a intervalles reguliers, sauver un etat complet (au minimum,le PCB) du processus de maniere a permettre de revenir a un etat donne si le processus doit

Yann MORERE

Page 113: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

6.3 Solutions au probleme de l’interblocage 101 / 103

se voir retirer des ressources. Le probleme dans ce cas est bien entendu le compromis a etablirentre la frequence souhaitable des sauvegardes d’etat et la performance globale du systeme.

6.3.4 La strategie de l’autruche (ne rien faire)

Generalement, juste pour augmenter l’effet de choc, il est de bon ton d’ajouter a ce point c’estla strategie adoptee par Unix. En fait, quand on dit que l’on ne fait rien, il faut comprendre quel’on ne fait rien de maniere automatique, c’est-a-dire que ce n’est pas un programme qui est encharge de la detection et surtout de la resolution des interblocages. Il reste toujours la possibilitequ’un operateur humain intervienne pour resoudre les cas difficiles. La motivation principalepour cette strategie est que, dans le cas des systemes informatiques generiques (par oppositionpar exemple aux systemes dedies a la gestion de bases de donnees ou au traitement d’informationbanquaire) Les occurences d’interblocages ne sont en fait pas tres frequentes. Il est tres rarequ’un interblocage bloque une fraction significative des processus presents dans le systeme. Lesusagers eux-memes contribuent (par leur impatience) a la resolution des interblocages danslesquels leurs processus sont engages, en tuant-ceux-ci pour les relancer a nouveau.

Cours de Systemes d’Exploitation

Page 114: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique
Page 115: Cours de Syst`emes d’Exploitation · 2011. 10. 6. · Table des mati`eres Introduction 1 1 Historique des Syst`emes Informatiques 3 1.1 D´efinition d’un syst`eme informatique

103 / 103

Bibliographie

[Carrez, 2000] C. Carrez. Les systemes informatiques : Vision coherente et utilisation. 2000.

[Herve et al., 1999] J.Y Herve, K. Titus, et S. Drouin. Systemes d’exploitation. 1999.

[Silberschatz et Galvin, 1994] A. Silberschatz et P.B. Galvin. Principes des systemes d’exploi-tation. 4 edition, 1994.