diapositives du cours de systemes d'exploitation (partie 1)

22
Pr´ esentation g´ en´ erale Une premi` ere d´ efinition La gestion du temps Historique et ´ evolutions Architecture interne d’un syst` eme d’exploitation 2 Syst` eme d’exploitation : premi` ere d´ efinition Un syst` eme d’exploitation est un logiciel destin´ e` a faciliter et optimiser l’exploitation d’un ordinateur. Structure en couches : Applications Logiciel de base Machine physique Outils et services Système d’exploitation 3 Organisation en couches Applications Système d’exploitation Matériel ecurisation : chaque couche isole les couches inf´ erieures Simplification : gestion des eriph´ eriques 4 Isolation des applications App1 Système d’exploitation Matériel App2 ecurisation : les applications sont ind´ ependantes Optimisation : allocation des ressources (CPU, emoire, disques) Partage : multi-utilisateurs pour diminuer les coˆ uts 5

Upload: others

Post on 16-Jun-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diapositives du cours de Systemes d'Exploitation (partie 1)

II Presentation generale JJ

• Une premiere definition

• La gestion du temps

• Historique et evolutions

• Architecture interne d’un systeme d’exploitation

2

II Systeme d’exploitation : premiere definition JJ

Un systeme d’exploitation est un logiciel destine a faciliter et optimiser

l’exploitation d’un ordinateur.

Structure en couches :

Applications

Logiciel de base

Machine physique

Outils et services

Systèmed’exploitation

3

I Organisation en couches J

Applications

Systèmed’exploitation

Matériel

• Securisation : chaque couche

isole les couches inferieures

• Simplification : gestion des

peripheriques

4

I Isolation des applications J

App1

Systèmed’exploitation

Matériel

App2

• Securisation : les applications

sont independantes

• Optimisation : allocation des

ressources (CPU, memoire,

disques)

• Partage : multi-utilisateurs pour

diminuer les couts

5

Page 2: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Simplifications J

Applications

Systèmed’exploitation

HDD

SDD

MEM

• Simplification : gestion des

peripheriques

• Abstraction : remplace les objets

reels par des objets virtuels

6

II La gestion du temps JJ

Le systeme doit gerer les differences de vitesse et les transferts entre or-

ganes de la machine (entree/sortie transparente).

Une machine :

Organe Roles Vitesse CoutProcesseur Execution tres rapide tres importantMemoire memorisation temporaire rapide importantPeripherique memorisation definitive tres lent faible

Un travail :

Partie Acteur Vitesse %Preparation humain H extremement lent 80 %Lecture des donnees peripheriques R tres lent 10 %Execution processeur E (tres) rapide 2 %Ecriture des resultats peripheriques W tres lent 8 %

7

I Annees 50 : Organisation en porte ouvert J

• Le temps d’acces a la machine est structure en periode de 30 minutes

• Chaque periode est allouee a un utilisateur

• A la fin de la periode la machine est reinitialisee

• L’utilisateur doit attendre la periode suivante

H ER W H ER W

Tâche 1 Tâche 2

Avantage : Chaque utilisateur a la machine pour lui tout seul.

Inconvenients :

• Le travail doit etre decoupe en tranches de 30 minutes.

• La partie machine (20%) est faible.

• La partie processeur (2%) est tres faible.

8

I Moniteur humain de gestion des travaux J

Le moniteur humain de gestion des

travaux

• recupere les travaux,

• gere la file d’attente

• enchaıne les executions

Utilisateurs

Travaux

File des travaux

en attente

Travail courant

Moniteur

Consequence : parallelisme entre temps humain et temps machine.

H ER W

ER W

ER W

H

H

9

Page 3: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Debut 60 : Le moniteur logiciel d’enchaınement des travaux J

Ce logiciel enchaıne automatique les phases de

• compilation• chargement en memoire• execution

| chargement du moniteur compilateur

| compilation en memoire du travail 1

| execution du travail 1

| chargement du moniteur compilateur

| compilation en memoire du travail 2

| execution du travail 2

| ...

H ER W

ER W

ER W

H

H

C’est le premier systeme d’exploitation : logiciel destine a gerer la machine.

10

I Le moniteur logiciel residant J

• enchaınement automatique des travaux

• protection de la memoire

• limitation de duree

• supervision des entrees/sorties

Mémoire centrale

Moniteur

RB RL

11

I Annees 60 : Le traitement par lots J

Apparition du parallelisme des taches entre lecture, execution et impression.

d’impression

Bandes magnétiques

de sortie

Bandes magnétiques

d’entrée

Machine

de lecture

Machine

de calcul

Machine

ML MC MI

Preparation du lot 1Preparation du lot 2 Execution du lot 1Preparation du lot 3 Execution du lot 2 Impression du lot 1

H ER W

ER W

ER W

H

H

12

I Cycles de CPU et d’entree/sortie J

Chaque processus enchaıne des cycles de CPU (execution de code) et des

cycles d’entree/sortie :

CPU

E/S

CPU

Attente

E/S

13

Page 4: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Milieu des annees 60 : Multiprogrammation J

Multiprogrammation. Presence simultanee de plusieurs programmes en

memoire centrale.

Mémoire centrale (RAM)

Unité d’E/S

Unité d’E/SCPU Périphériques

Nouvelles caracteristiques :

• E/S tamponnees : definition d’un canal d’E/S,

• reimplantation du code,

• protection de la memoire

14

I Annees 60/70 : Apparition des terminaux J

• les terminaux sont connectes au serveur

• les utilisateurs travaillent devant le terminal

• ils partagent leur temps entre reflexion et action

Hypothese 1 : Le temps de reflexion est de 90% :

donc, sur 100 utilisateurs, 10 sont actifs.

Hypothese 2 : Les utilisateurs actifs reclament des actions simples :

prise en compte du travail interactif

15

I Annees 60/70 : Le temps partage J

Le temps d’execution de la CPU est decoupe en tranches :

TempsCPU

P0 P1 P2 P0 P1 P2 P0

Quanta

Si

Quanta = 50 millisecondes et une requete ≤ 1 quanta et 10 demandes

alors

Temps de reponse = 10 × 50 ms =1

2s

Contraintes :

• multiprogrammation,• temps de commutation faible,• possibilite d’interruption propre.

16

I Annees 1980 : Les systemes repartis J

Repartition d’une activite entre plusieurs machines reliees par reseau.

Exemple : Le Cluster. La somme de plusieurs machines est vue comme une

seule machine (simplicite, evolutivite, robustesse).

17

Page 5: Diapositives du cours de Systemes d'Exploitation (partie 1)

II Architecture interne d’un systeme JJ

Une machine c’est

• des objets,• des actions possibles,• des regles de composition des actions.

Dans une structure en couches, le systeme est concu comme un empilementde machines.

M0

M1

M2

M3

M0

M1

M2

M3

M3

M1

M4

M2

M5

M0

(a) (b) (c)

Avantages : Securite et modularite.

18

I Notion de couches dans les architectures logicielles J

Les applications modernes utilisent les architectures en couches.

Un exemple : l’architecture applicative 3-tiers :

SGBDR Couche métier Couche présentation

• une couche possede une specification (interface d’entree),

• une couche masque les couches inferieures.

Avantage : capacite a developper en parallele les couches. (diminution du

temps de developpement).

19

I Un premier exemple J

Les machines virtuelles d’IBM (VM)/CMS :

Noyau

Uti

lisa

teurs

Noyau

Uti

lisa

teurs

Noyau

Uti

lisa

teurs

Noyau

Uti

lisa

teurs

Noyau

Uti

lisa

teurs

Noyau

Uti

lisa

teurs

Machine virtuelle

Matériel

20

I Architectures virtualisees applicatives J

La virtualisation est tres utilisee dans le deploiement des applications.

Serveur

VM 1 Unix v3 JVM 6

App. 1

OS natif

App. 2

VM 2 Unix v4 JVM 7 App. 3

VM 3 Windows X SGBDR

Avantages :

• definir des environnements d’execution adaptes

• assurer l’evolutivite de son parc applicatifs

• ameliorer la securite

• exploiter des architectures materielles sophistiquees

21

Page 6: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Architectures a base de conteneurs J

Pour alleger l’utilisation des ressources, une machine physique peut etre

decoupee en conteneurs avec une repartition maıtrisee des ressources.

Serveurphysique

JVM 6

App. 1

OSnatif

App. 2

SGDBR

Conteneur 1

Conteneur 2

Avantages :

• Un seul systeme partage

• mise en oeuvre plus simple

Inconvenients :

• environnements homogenes

• pas disponible sur tous les OS

22

I Un deuxieme exemple J

L’architecture Micro-noyau par opposition aux structures monolithiques dessystemes

Matériel

(Tache, ES, Mem Virt)

SG

BD

R

Mac

OS

X

DO

S OS

/2

OS

F/1

BS

D 4

.3

Micro Noyau MACH du M.I.T.

Avantages : Portabilite, Qualite.

23

I Composantes d’un systeme d’exploitation J

« Drivers » de périphériquesGestion des interruptions

Machine physique

Gestion du système d'E/S

Gestion des fichiers

interpréteur de commandes

Gestion des processus

Gestion de la mémoire centrale

processus utilisateur

interface d'appel au système (SVC)

interface vers le matériel

24

Page 7: Diapositives du cours de Systemes d'Exploitation (partie 1)

Presentation des processus

• Notion de programme

• Notion de machine

• Execution d’un programme

• Processus

1

I Notion de programme J

Un programme est une suite d’instructions rangees en memoire :

void main() {

...

}

⇒LOAD R1,

$ 10

INC R1

ADD R1, R2

2048

2052

2056

2060

⇒01001001011101101

10011111001010100

11101010001100101

Instructions =

privilegiees =

Lancement des E/SControle des interruptionsControle du materiel

ordinaires =

mouvement de donneesstructure de controlecalculappel du systeme d’exploitation

2

I Notion de machine J

Unemachine

=

Processeur (CPU)

Memoire

Organes d’E/S =

{ControleursCanaux

L’etat d’une machine c’est l’etat de ses composants.

3

I Description du processeur J

Unprocesseur

=

Mot d’etatprocesseur (MEP)

=

Registres specialises

Registresgeneraux

=

EntierFlottantAdresse

Unite de calcul (UAL)

Registresspecialises

=

compteur ordinal (PC : program counter)mode d’execution (MODE : utilisateur ou systeme)pointeur de pile (SP : stack pointer)masque d’interruptionscodes de conditions. . .

• en mode utilisateur les instructions privilegiees sont interdites

• en mode systeme toutes les instructions sont utilisables

4

Page 8: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Execution d’un programme J

Une execution c’est une evolution discrete de l’etat de la machine.

LOAD R1,

#10

INC R1

ADD R1, R2

123 - 34

123

124

125

126

125 10 34

126 11 34

127 45 34

Ex

écu

tio

n

Evolution des registres de la C.P.U.

Code en cours d'exécution

CO R1 R2

LOAD R1, #10

INC R1

ADD R1, R2

Notion de points observables.

5

I Notion de processus J

Un processus est un programme en cours d’execution. Il est defini par :

• des zones memoire (code, pile et donnees),

Mémoire d’un processus

PILEDATACODEPILE

SYSTEMECST

• la valeur des registres de la CPU (un MEP),

• un ensemble de ressources allouees,

Le tout forme le contexte d’execution du processus.

6

Page 9: Diapositives du cours de Systemes d'Exploitation (partie 1)

Le mecanisme des interruptions

• Rendez-vous asynchrone

• Interruption d’un processus

• Interruption materielle

• Les appels systeme

• Les deroutements

1

I Rendez-vous asynchrone J

Probleme : Executer efficacement un programme et, en meme temps,

prendre en compte rapidement un evenement imprevisible.

Exemple :

• Le travail :

. executer un processus consommateur de CPU (pas d’entree/sortie)

• Les evenements a gerer :

. arrivee de donnees sur la carte reseau

. deplacement de la souris

. activation du clavier

. apparition d’une alarme

. fin d’une lecture sur disque

2

I Attente active J

Solution : l’attente active. Soit F un indicateur qui signale l’evenement

...si (F = 1) alors

F := 0< traiter l’evenement >

fin si...

Remarques :

• le test explicite est penible et peu securise

• perte de temps CPU

3

• pas de reaction immediate

Evt Test

------|-------------------|------

| |

|<--- latence --->|

| |

• risque de collision

Evt Evt Test

------|-------------|-----------------------|------

| | |

|<-- ecart -->|<----- latence ----->|

| | |

ecart minimum entre deux evenements > latence

4

Page 10: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Interruption d’un processus : Principe J

• L’interruption est une operation

. indivisible realisee par la CPU,

. liee a cause identifiee par un numero,

. qui sauvegarde et change le PC et le MODE .

interruptionde cause k

=

PUSH PC // sauvegarde de PCPUSH MODE // sauvegarde de MODEMODE := systeme // passage en mode systemePC := vi[k] // branchement sur vi[k]

Le vecteur d’interruptions ( vi ) est un table d’adresses.

• Les interruptions sont declenchees uniquement sur les points observables(points interruptibles).

• reprise apres interruption :

instruction RTI =

{POP MODEPOP PC

5

I Interruption d’un processus : Exemple J

6

LOAD R1,

#10

INC R1

ADD R1, R2

123 - 34

123

124

125

126

125 10 34

100 10 34

103 10 34

Evolution des registres de la C.P.U.

Codeutilisateur

100

CO R1 R2

.

.

.

.

RTI

100

101

102

103

Code dusystème

esclave

esclave

maître

maître

MODE

200

200

201

201

SP

LOAD R1, #10

< interruption de cause n° 2 >

.

.

.

.

.

.

.

.

.

125 10 34esclave 200

RTI

126 11 34esclave 200

INC R1

Vecteurd'interruptions

0

1

2

3

- -

SP

<125,e> -

SP

SP

Evolution de la pile

<125,e> -

7

I Structure generale d’un traitant J

Le code execute apres une interruption est appele le traitant de cette inter-

ruption.

Les traitants ont la structure suivante :

1. sauvegarder du contexte

2. traiter de la cause

3. choisir le prochain processus P a executer

4. restaurer le contexte de P

5. relancer le processus P (instruction RTI )

8

Page 11: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Interruption materielle : principe J

Un signal electrique est emis vers le processeur qui provoque une interruption.

C.P.U.

Clavier

Souris

disk0 disk1 disk2

Controleur

C. vidéo

Le numero associe a chaque interruption materielle indique une priorite :

0

1

2

3

4

5

6

7

int.niv 5

int.niv 4

int.niv 1

int.niv 3

int.niv 0

prise en comptede l'int. niv 3

9

I Les appels systemes : principe J

Les trappes ( Trap ) : Appel explicite du systeme par le biais d’une instruction

qui declenche une interruption.

LOAD R0, SVC_OPEN

LOAD R1, "mon_fic"

SVC

CMP R0, 0

LOAD R2, WRITE

en mode maitre

...

...

...

...

switch (R0)

{

case SVC_OPEN:

< ouverture >

break;

}

RTI

...

...

...

...

Code du système d’exploitation

Processus

en mode esclave

...

...

x=open("ficA",WRITE);

Librairie standardCode utilisateur

en mode esclave

RTS

10

I Les appels systemes : Avantages J

• Changement de mode et nombre de points d’entree est limite

• On obtient un sas qui isole le systeme d’exploitation

• Definition d’une nouvelle machine (ajout d’instructions)

• Une librairie standard offre

. une interface systeme agreable et simplifiee

. une interface independante du systeme d’exploitation

. l’implantation reelle des appels systemes en assembleur

• Deux modes d’execution :

$ time bash -c ’for((i=0; i<500000; i++)); do true; done’real 0m2,331suser 0m2,330ssys 0m0,000s

$ time cp fichier_1Go.txt copie.txtreal 0m7,682suser 0m0,000ssys 0m0,932s

11

I Deroutements : Principe J

L’objectif des deroutements est double :

• traitement systematique des erreurs ou des situations anormales,

• protection et bonne utilisation de la machine (les processus s’executent

sous surveillance).

Si l’execution d’une instruction produit une erreur, alors

→ il y a interruption et branchement vers le code de traitement

des erreurs du systeme.

Les causes possibles sont :

• donnee incorrecte (division par 0)• operation interdite (instruction

privilegiee)• instruction inconnue• acces memoire incorrect

Utilisations :

• mode TRACE (debugger)

• gestion des erreurs ( signal )

• machine virtuelle

12

Page 12: Diapositives du cours de Systemes d'Exploitation (partie 1)

Gestion des processus

• Etat d’un processus

• Representation d’un processus

• Les � threads � (processus de poids leger)

• Utilite des � threads �

• Implantation des � threads �

1

I Etat d’un processus J

Chaque processus est dans l’un des etats operationnels suivants :

en attente

1. initialisation2. exécution3. achèvement4. préemption5. attente6. signal

3

1

24

actif

prêt

connu

terminé

6

5

2

I Representation d’un processus J

Pour chaque processus le systeme maintient :

• un identifiant ( pid )

• un etat operationnel

• un contexte d’execution

• des informations diverses :

. priorites

. filiations

. proprietaire

• des statistiques :

. temps CPU

. nombre d’E/S

. nombre de defauts de page

Ces informations sont rangees dans un PCB (Process Control Block).

3

I Role du PCB J

Le role du PCB dans la commutation entre deux processus :

PCB0 PCB1

sauvegarde

restauration

restauration

sauvegarde

P0 P1

acti

fprê

tac

tif

prê

tac

tif

prê

t

5

Page 13: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Representation des processus J

Les PCB sont ranges dans des files :

file des processus prêts

file des processus enattente de fin d'E/S

file des processus morts

allocationde la CPU

demanded'E/S

fin del'E/S

réquisition

appel de exit()

processusactifs

7

I Gestion des processus J

Creation de processus :

• chaque processus peut creer des processus (ses fils),

• il est possible de figer, et de reprendre des processus.

• il est possible de tuer des processus ou demander leur arret.

Communication entre processus :

• prevoir des outils de communication (fichier, tube, socket, memoire par-

tagee, envoi de messages)

Synchronisation de processus :

• prevoir des outils de synchronisation (verrou, semaphore, moniteur)

8

I Les � threads � (processus de poids leger) J

Un thread (fil) est un programme en cours d’execution qui partage son code

et ses donnees.

DATA

Thread 1

Thread 3

Thread 2

PILE

PILE

PILE

M E P

M E P

M E P

Exécution

Exécution

Exécution

CODE

Fichiers

ouverts

et Ressources

Processus

Chaque thread a une pile d’execution autonome.

Un processus est compose de threads.

9

I Programmation des threads J

beginInstruction 1co-begin

Instruction 2Instruction 3

co-endInstruction 4

end

void travail() {

int t;

instruction1();

if ((t = thread()) == 0) {

instruction3();

thread_exit();

}

instruction2();

thread_join(t);

instruction4();

}

Trace de l’execution :

CPU0 : |<--- Ins. 1 --->|<-- Ins. 2 -->|.....|<--- Ins. 4 --->

CPU1 : |<----- Ins. 3 ----->|

10

Page 14: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Utilite des � threads � J

Etude des dependances et decoupage :

C1 C2 C3 C5C4

C1 C2 C5

C3 C4

Thread 1

Thread 2

C4 dépend de C3C2 dépend de C1

C5 dépend de C2 et C4

Avantages :

• recuperation des temps d’E/S,• exploitation des machines multi-processeurs,• cooperation entre threads.

11

I Utilite des � threads � pour les serveurs J

Processus fils

Processus fils

Processus fils

Processus fils

principal

Processus

Application serveur

principal

Thread

Thread fils

Thread fils

Thread fils

Thread fils

Données globales

Processus serveur

La commutation et la communication entre threads est une operation plussimple

12

I Les processus monolithiques J

Il existe un conflit entre entrees/sorties synchrones (bloquantes) et interface

homme/machine (IHM).

Solution d’attente active : E/S asynchrones (non-bloquantes) et structure

avec boucle d’evenements.

Processus monolithique

Gestionnaire

de la file

des événementsrécupérer un

événement

Traiter

Boucle des événementsréseau

disque

GUI

Evénementsasynchrones

13

I Les processus multi-threads J

Il existe un autre solution basee sur

• le decoupage en plusieurs threads,• une utilisation des E/S synchrones,• un module de communication.

Processus multi−threads

réseau

disque

GUI

Evénementsasynchrones

Thread "Gestion réseau"

Thread "Gestion disque"

Thread "Gestion de l’IHM"

Thread "Gestion de la mémoire"

et

Communication

synchronisation

Avantages :

• plus grande simplicite du code,• independance entre les modules.

14

Page 15: Diapositives du cours de Systemes d'Exploitation (partie 1)

II Allocation du processeur JJ

Une interruption provoque une perte de la CPU. Nous pouvons donc redis-

tribuer le processeur.

Objectifs :

• equite,

• debit maximum

• maximum de processus interactifs,

• rationaliser la gestion des ressources,

• favoriser les � bons � processus,

• ameliorer les temps de reponse moyen,

15

I Algorithme d’allocation FIFO J

FIFO (First In First Out) : absence de requisition et croissance rapide du

temps de reponse.

arrivée sortie

temps de reponse = (temps d’attente + temps d’execution)

temps d’attente = (taille de la file FIFO × duree moyenne d’execution)

16

I Algorithme d’allocation SJF / SRT J

SJF (Short Job First) : absence de requisition et risque de privation.

FIFO

SJFTemps

de

réponse

Temps de service demandé

SRT (Shortest Remaining Time) : c’est SJF + un mecanisme de requisition.

On choisit le processus qui a le temps restant d’execution le plus petit. L’arrivee

d’un nouveau processus peut interrompre le processus courant.

17

I Algorithme d’allocation HRN J

HRN (Highest Response Ratio Next) : Le choix est base sur le ratio

p(t) =w(t) + ts

tsavec

• w(t) = t− ta : temps d’attente,

• ta : date d’arrivee,

• ts : temps d’execution estime.

Si w(t) = 0, les travaux les plus courts (ts) sont privilegies.

18

Page 16: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Algorithmes d’allocation du tourniquet J

Tourniquet (round robin) : c’est FIFO plus un mecanisme de requisition.

réquisition (préemption)

arrivée sortieCPU

19

Comment fixer la duree du quanta :

Temps deréponse moyen

quantum

20

I Tourniquet Multi-niveaux J

niveau n-1

niveau n

réquisition (préemption)

arrivée sortieCPU

niveau 2

niveau 1

niveau 0

.

.

.

.

.

.

21

I Tourniquet Multi-niveaux avec priorites J

Il existe des classes de processus :

• processus systemes,

• processus temps reel,

• processus interactifs,

• processus d’edition interactive,

• processus � batch �.

Chaque classe et absolument prioritaire sur celles de niveau inferieur.

A l’interieur de chaque classe, les processus sont ranges dans un systeme de

files multi-niveaux.

22

Page 17: Diapositives du cours de Systemes d'Exploitation (partie 1)

II Presentation generale JJ

Le probleme :

• Acces a des ressources partagees

• Les sections critiques

• Le probleme de l’exclusion mutuelle

Solutions d’attente active :

• Une solution d’attente active

• Solution materielle

Solutions de manipulation des processus :

• Les verrous

• Les semaphores

• Le producteur et le consommateur

• Les semaphores a messages

• Les regions critiques

2

I Acces a des ressources partagees J

Soit une pile partagee par plusieurs threads :

pile = structuresommet : entier ;data : tableau [ 1 .. Max ] de entier ;

procedure empiler( var p : pile ; d : entier )p.sommet := p.sommet + 1 ;p.data[ p.sommet ] := d ;

Il est possible que nous ayons :

thread1 : empiler( p, 10 )thread1 : p.sommet := p.sommet + 1 ;

— — interruption — —thread2 : empiler( p, 20 )thread2 : p.sommet := p.sommet + 1 ;thread2 : p.data[ p.sommet ] := 20 ;

... ... ...— — retour au thread 1 — —

thread1 : p.data[ p.sommet ] := 10 ;

3

I Le probleme de l’exclusion mutuelle J

• Les ressources qui posent des problemes sont dites critiques.

• Les portions de code qui manipulent ces ressources critiques sont appelees

des sections critiques.

Forme des programmes :

〈initialisation〉 execute une seule fois

...

〈prologue〉 identique pour tous les processus〈section critique〉 au plus un processus〈epilogue〉 identique pour tous les processus

4

Conflit avec deux threads. Le prologue et l’epilogue encadrent la section

critique :

prologue épilogue

prologue épilogue

Le probleme est regle en augmentant la duree d’execution du prologue :

prologue épilogue

prologue épilogue

Contraintes :

• Les processus ne sont pas bloques sans raison (absence de privation).

5

Page 18: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Nouvelle formulation J

La procedure empiler devient :

procedure empiler( var p : pile ; d : entier )〈prologue〉

p.sommet := p.sommet + 1 ;p.data[ p.sommet ] := d ;

〈epilogue〉

Nouvelle execution :thread1 : empiler( p, 10 )thread1 : 〈prologue〉thread1 : p.sommet := p.sommet + 1 ;

— — interruption — —thread2 : empiler( p, 20 )thread2 : 〈prologue〉

— — blocage du thread 2 — —... ... ...

— — retour au thread 1 — —thread1 : p.data[ p.sommet ] := 10 ;thread1 : 〈epilogue〉

... ... ...— — reprise du thread 2 — —

thread2 : p.sommet := p.sommet + 1 ;thread2 : p.data[ p.sommet ] := 20 ;thread2 : 〈epilogue〉

6

I Une solution d’attente active J

Soit libre une variable partagee de type booleenne :

〈init〉 (1) libre := vrai ;

...

〈prologue〉 (2) si (libre = faux) aller en (2)(3) libre := faux

(4) 〈section critique〉

〈epilogue〉 (5) libre := vrai

Critique 1 : Consommation de temps processeur.

Critique 2 : L’exclusion mutuelle n’est pas toujours respectee :

2 〈interruption〉 2’ 3’ 4’ . . . 〈retour au rouge〉 3 4 . . .

7

I Solution materielle J

On introduit une nouvelle instruction Test and Set pour

• garantir l’atomicite d’une modification,

• construire une solution basee sur l’attente active valable en multi-proces-

seurs :

Definition de Test and Set :

instruction TAS(var m : entier , var verrou : entier )〈bloquer la case memoire verrou〉

m := verrouverrou := 0

〈debloquer la case memoire verrou〉CO := CO + 〈taille de l’instruction TAS〉

8

I Utilisation de Test and Set J

Codage de l’exclusion mutuelle avec une variable partagee mutex et une va-

riable privee p .

〈initialisation〉 (1) mutex := 1 ;

〈prologue〉 (2) repeter(3) TAS(p, mutex) ;(4) jusqu’a (p = 1)

(5) 〈section critique〉

〈epilogue〉 (6) mutex := 1 ;

Critiques :

• Consommation de temps processeur.

• Risque de privation (cela peut s’arranger).

• Le processeur doit garantir l’exclusion mutuelle.

• C’est une solution utilisable uniquement sur des sequences breves.

9

Page 19: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Les verrous J

Objectifs :

• ne plus perdre de temps CPU,

• simplicite de la solution.

Definition des verrous :

Verrou : structurebooleen libre := vraifile fifo processus := {}

Un verrou est une structure de donnee partagee du systeme d’exploitation.

10

I Les verrous (2) J

Pour un verrou donne, les procedures s’executent en exclusion mutuelle.

procedure prendre(Verrou v)si (v.libre = faux ) alors〈soit P le processus appelant〉〈entrer P dans la file v.processus〉〈suspendre le processus P 〉

sinonv.libre := faux ;

fin si

procedure liberer(Verrou v)si 〈la file v.processus est vide〉 alors

v.libre := vrai ;sinon

v.libre := faux ;〈sortir un processus Q de la file v.processus〉〈reveiller le processus Q〉

fin si

11

I L’exclusion mutuelle avec les verrous J

Le code de l’exclusion mutuelle s’ecrit

〈initialisation〉 (1) mutex := nouveau Verrou ;

〈prologue〉 (2) prendre(mutex) ;...

〈section critique〉...

〈epilogue〉 (3) liberer(mutex) ;

12

I Difficultes des verrous J

Soit deux processus qui partagent deux ressources :

〈initialisation〉 (1) mutex1 := nouveau Verrou ;(2) mutex2 := nouveau Verrou ;

〈rouge〉 (10) prendre(mutex1) ;(11) prendre(mutex2) ;(12) 〈section critique〉(13) liberer(mutex2) ;(14) liberer(mutex1) ;

〈bleu〉 (20) prendre(mutex2) ;(21) prendre(mutex1) ;(22) 〈section critique〉(23) liberer(mutex1) ;(24) liberer(mutex2) ;

Il y a blocage pour 10 〈interruption〉 20 21 〈blocage〉 11 〈blocage〉

13

Page 20: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Les semaphores J

Un verrou ne sait pas compter. . . donc, il faut remplacer le drapeau par un

compteur (Dijkstra).

Un semaphore est une structure de donnee partagee du systeme d’exploita-

tion.

Semaphore : structurecompteur : entier ;processus : file FIFO ;

procedure init(var s : Semaphore ; compteur initial : entier)verifier que compteur initial ≥ 0 ;s.compteur := compteur initial ;s.processus := {} ;

14

I Agir sur les semaphores J

Pour un semaphore donne, les deux procedures ci-dessous s’executent en ex-

clusion mutuelle.

procedure P(var s : semaphore)s.compteur := s.compteur− 1si (s.compteur < 0) alors〈soit P le processus appelant〉〈entrer le processus P dans la file s.processus〉〈suspendre le processus P 〉

fin si

procedure V(var s : semaphore)s.compteur := s.compteur + 1si (s.compteur ≤ 0) alors〈sortir un processus Q de la file s.processus〉〈reprendre le processus Q〉

fin si

P pour proberen (tester) ou wait

V pour verhogen (incrementer) ou signal

15

I Utilisation des semaphores J

Soient trois processus qui exploitent la meme ressource :

P1 P2 P3(1) P(s) ... ...(2) ... P(s) ...(3) ... ... P(s)(4) V(s) ... ...(5) ... V(s) ...(6) ... ... V(s)

La trace de l’execution donne :

action (2,{}) P1 P2 P3(1) P(s) (1,{}) SC A A(2) P(s) (0,{}) SC SC A(3) P(s) (-1,{P3}) SC SC S(4) V(s) (0,{}) A SC SC(5) V(s) (1,{}) A A SC(6) V(s) (2,{}) A A A

16

I Le probleme du producteur et du consommateur J

Il existe un tampon de taille limite entre le producteur et le consommateur.

Algorithme du producteur :

repeter〈produire un message〉〈le deposer dans le tampon〉

jusqu’a ...

Algorithme du consommateur :

repeter〈prelever un message depuis le tampon〉〈le consommer〉

jusqu’a ...

17

Page 21: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Codage du producteur/consommateur J

Le consommateur consomme si le tampon n’est pas vide :

NPlein : semaphore = (0, {})

producteur :

repeter〈produire un message〉〈le deposer dans le tampon〉V(NPlein) ;

jusqu’a ...

Consommateur :

repeterP(NPlein) ;〈consommer〉

jusqu’a ...

18

I Codage du producteur/consommateur (2) J

Definition des semaphores :

NPlein : semaphore = (0, {})NVide : semaphore = (n, {})

Le producteur produit si le tampon n’est pas plein :

repeterP(NVide) ;〈produire un message〉〈le deposer dans le tampon〉V(NPlein) ;

jusqu’a ...

Le consommateur consomme si le tampon n’est pas vide :

repeterP(NPlein) ;〈consommer〉V(NVide) ;

jusqu’a ...

19

I Les semaphores a messages J

Definition :

sema-mesg : structurecompteur : entier ;demandeurs : file FIFO de processus ;messages : file FIFO de messages ;

20

Procedures :

procedure Pm( var s : sema-mesg ; var m : donnees )s.compteur := s.compteur− 1si (s.compteur < 0) alors〈soit P le processus appelant〉〈entrer le processus P dans la file s.demandeurs〉〈suspendre le processus P 〉

fin si〈sortir m de la file s.messages〉

procedure Vm( var s : sema-mesg ; m : donnees )〈entrer m dans la file s.messages〉s.compteur := s.compteur + 1si (s.compteur ≤ 0) alors〈sortir un processus Q de la file s.demandeurs〉〈reprendre le processus Q〉

fin si

21

Page 22: Diapositives du cours de Systemes d'Exploitation (partie 1)

I Les regions critiques J

Presentation :

region p quand (condition)〈region critique〉

fin de region

Execution de la region critique en exclusion mutuelle sur la variable p quand

la condition est verifiee.

22

Soit une pile partagee par plusieurs threads :

pile = structure partageesommet : entier ;data : tableau [ 1 .. Max ] de entier ;

procedure empiler( var p : pile ; d : entier )region p quand (sommet < Max)

sommet := sommet + 1 ;data[ sommet ] := d ;

fin de region

procedure depiler( var p : pile ; var d : entier )region p quand (sommet > 0)

d := data[ sommet ] ;sommet := sommet - 1 ;

fin de region

23

I Une version en Java J

public class Stack {

final int values[];

int counter = 0;

public Stack(int size) { this.values = new int[size]; }

synchronized public void push(int value) throws InterruptedException {

// attendre que la pile ne soit pas pleine

while (counter == values.length) { wait(); }

values[counter++] = value;

notifyAll();

}

synchronized public int pop() throws InterruptedException {

// attendre que la pile ne soit pas vide

while (counter == 0) { wait(); }

notifyAll();

return values[--counter];

}

}

24