Vous êtes sur la page 1sur 88

NSY104:ArchitecturedesSystmesInformatiques

NSY104 Architecture des systmes informatiques

Chapitre 03
Le systme dexploitation

Formateur : Pierre SWEID


Formateur : Pierre SWEID

Page1

Rappel:SystmeInformatique:Lescomposantesdunsystmeinformatique
Un SE est une partie importante de presque tout systme informatique
SYSTEME INFORMATIQUE
1

Du Logiciel ( Software )

Du matriel
( Hardware )

CPU, mmoire, priph E/,

Logiciel de base

etc.

Fournit les ressources


informatiques de base
Outils de dveloppement et
dexcution de programme

Compilateur

dfinissent les faons


dutiliser les ressources pour
rsoudre les problmes
informatiques des utilisateurs

Editeurs de texte

Formateur : Pierre SWEID

Logiciel dapplication
Traitements de texte, etc
Browser WEB,
3
Systmes dExploitation

Chargeurs loaders

Contrle et coordonne
lutilisation du matriel parmi
les divers programmes
applicatifs pour les divers
utilisateurs
Page2

Rappel:SystmeInformatique PlaceduSystmedexploitation
Vue abstraite dun systme informatique
Utilisateur
1

compilateur

Utilisateur
2

Utilisateur
3

assembleur

Utilisateur
n

Editeur de texte

Systme de
base de
Programmes systmes et applications donnes

Systme
dexploitation
Le Systme dExploitation :

Matriel de
lordinateur

Contrle et coordonne lutilisation du matriel par les divers programmes


applicatifs pour les divers utilisateurs
Fournit, donc, les moyens dutiliser correctement les ressources matriels
Formateur : Pierre SWEID

Page3

DEFINITIOND'UNSYSTEMED'EXPLOITATION

Le Systme dexploitation est un ensemble de programmes qui ralisent


l'interface entre le matriel de l'ordinateur et les utilisateurs.
Deux objectifs principaux

Utilisateur 1Utilisateur 2

1. Construction d'une
machine virtuelle, plus
facile d'emploi et plus
conviviale
2. gestion des ressources
physiques et leur partage

Utilisateur N

MACHINE VIRTUELLE

SE
Matriel
MACHINE
PHYSIQUE

Mmoire
centrale

CPU

UE

UE
UE : Unit dEchange

Formateur : Pierre SWEID

Page4

RLESDUSYSTMEDEXPLOITATION

Rles du systme d exploitation :


1.

Grer le partage de la machine physique et des ressources matrielles


entre les diffrents programmes (<=> dans un environnement
multiprogramm )

2.

Faciliter l'accs la machine physique

Formateur : Pierre SWEID

Page5

LESYSTMEDEXPLOITATION:PARTAGERLAMACHINEPHYSIQUE(1)
Il doit optimiser l`utilisation des ressources pour maximiser les performances
du systme

Cette gestion doit assurer l' quit daccs aux ressources matrielles

Assurer galement que les accs des programmes ces ressources s'effectuent correctement, c'est-dire que les oprations ralises par les programmes sont licites ( <=> protection des ressources).

Le SE : partager la machine physique


SYSTME dEXPLOITATION
Vecteur dInterruptions
Programme 1 :
Calcul E/S Disque

CPU

Programme 2 :
E/S Imprimante
Programme 3 :
CALCUL

UE

DMA
UE

Plusieurs programmes en MC : par exemple


Le DMA gre les Entres Sorties
Paralllement, le CPU effectue les calculs

Formateur : Pierre SWEID

Page6

LESYSTMEDEXPLOITATION:PARTAGERLAMACHINEPHYSIQUE(2)
Le SE Contrle lexcution des applications
Le SE doit cder le contrle aux programmes utilisateurs et le reprendre correctement
Dit lUCT quand excuter tel programme

Le SE partage la machine physique


Mmoire centrale
SE
Programme U1
Programme U2
Programme U3

CPU

Le partage des ressources va


concerner principalement
Le processeur,
La mmoire centrale
Les priphriques d ' entressorties.

Partager les ressources


Le processeur :
UE

UE

Parmi tous les programmes chargs en mmoire centrale, lequel doit s'excuter ?

La mmoire centrale :

Comment allouer la mmoire centrale aux diffrents programmes ?


Comment disposer d'une quantit suffisante de mmoire pour y placer tous les
programmes ncessaires un bon taux d'utilisation du processeur ?
Comment assurer la protection entre ces diffrents programmes utilisateurs ?
( veiller ce qu'un programme donn n'accde pas une plage mmoire
alloue un autre programme).

Les Priphriques :

Formateur : Pierre SWEID

Dans quel ordre traiter les requtes dE/S pour optimiser les transferts ?

Page7

LESYSTMEDEXPLOITATION:leSEpourfaciliterlaccslamachinephysique(1)
Fournit une interface de haut niveau, compose d'un ensemble de primitives
attaches des fonctionnalits
Ce sont ces primitives qui grent les caractristiques matrielles sous-jacentes et offrent un service
l'utilisateur

Le SE construit au-dessus de la machine physique, une machine virtuelle plus


simple d'emploi et plus conviviale.
MACHINE VIRTUELLE
Ecrire (donnes) Excuter(Programme)
SE Interface pour masquer les caractristiques matrielles
Appels Systme Commandes
Matriel
MACHINE
PHYSIQUE
UE

Formateur : Pierre SWEID

Mmoire
centrale

CPU

UE

Page8

LESYSTMEDEXPLOITATION:leSEpourfaciliterlaccslamachinephysique(2)

ECRIRE(donnes)

Excuter
(Programme)
Charger le programme

Initialiser
DMA

Gestion par IT

nb

@p

sens

@m

(pagination /
segmentation...)

UE

DMA
UE
MC
Exemple : Pour raliser une opration dentres- sorties, l'utilisateur fait appel une mme primitive
ECRIRE(donnes) quel que soit le priphrique concern.

C'est la primitive ECRIRE et la fonction de gestion des entres-sorties du systme d'exploitation


laquelle cette primitive est rattache qui feront la liaison avec les caractristiques matrielles.

Formateur : Pierre SWEID

Page9

FONCTIONSD'UNSYSTEMED'EXPLOITATION

Formateur : Pierre SWEID

Page10

FONCTIONSD'UNSYSTEMED'EXPLOITATION(1)

Applications

Editeur de Texte

Tableur
Programmes utilisateur

Bases de donnes

Compilateurs

Navigateur

Editeur de liens

Chargeur

Assembleur

Appels Systmes
SE

Gestion de
la concurrence

Gestion du
processeur

Debogeur

Commandes

Gestion de la protection

Gestion des objets


externes (fichiers)

Gestion de la
mmoire

Gestion des
E/S

Mcanisme des interruptions


MACHINE PHYSIQUE
Formateur : Pierre SWEID

Page11

FONCTIONSD'UNSYSTEMED'EXPLOITATION(2)
1.

Gestion du processeur :
le systme doit grer l'allocation du processeur aux diffrents programmes pouvant
s'excuter. Cette allocation se fait par le biais d'un algorithme d'ordonnancement qui
planifie l'excution des programmes

Selon le type de systme d'exploitation, l'algorithme d'ordonnancement rpond des


objectifs diffrents

Elu
Attente

Processeur

E/S
P1 P2

P3

P4 Attente CPU
prt

E/S
Bus

Formateur : Pierre SWEID

Page12

FONCTIONSD'UNSYSTEMED'EXPLOITATION(2)
2. Gestion de la mmoire :
le systme doit grer l'allocation de la mmoire centrale entre les diffrents
programmes pouvant s'excuter (pagination/segmentation).
Comme la mmoire physique est souvent trop petite pour contenir la totalit
des programmes, la gestion de la mmoire se fait selon le principe de la
mmoire virtuelle.
un instant donn, seules sont charges en MC, les parties de code et donnes
utiles l'excution

Problmes de l'allocation
mmoire ?

Mmoire
CO : Compteur Ordinal

correspondance entre adresses

Lecture et criture

virtuelles et adresses physiques ;


gestion de la mmoire physique

Registre valeur

Et si multiprocessus :
partage de l'information ;
protection mutuelle.

Registre adresse
Autres
Registres

Registres
programmables
Mcanismes daccs
la mmoire

Formateur : Pierre SWEID

Page13

FONCTIONSD'UNSYSTEMED'EXPLOITATION(3)
3. Gestion des entres/sorties :
le systme doit grer l'accs aux priphriques,
Plusieurs mcanismes de communication entre UCT et contrleurs
priphriques
Interruptions
Scrutation
DMA
Pilotes et contrleurs de priphs

donne

Mmoire
0

CPU
adresse

cartes
d'interface

Disque

Formateur : Pierre SWEID

FFFF

E/S

Ruban

Page14

FONCTIONSD'UNSYSTEMED'EXPLOITATION(4)
la liaison entre les appels de haut niveau des programmes utilisateurs [
exemple getchar( ) ] et les oprations de bas niveau de l'UE responsable
du priphrique (UE clavier)
c'est le pilote d'entres/sorties (driver) qui assure cette
correspondance
code usager

code systme ( noyau )

read( );
PROCDURE
E/S
construit une
requte

PILOTE
envoie la
commande au
priphrique

carte
d'interface

appel IO

FIN du transfert
complte
l'opration

interruption

suspend

rveil

Formateur : Pierre SWEID

Page15

FONCTIONSD'UNSYSTEMED'EXPLOITATION(5)
4.

Gestion de la concurrence
Comme plusieurs programmes coexistent en mmoire centrale, ceuxci peuvent vouloir communiquer pour changer des donnes.

Par ailleurs, il faut synchroniser l'accs aux donnes partages afin de


maintenir leur cohrence

Le systme offre des outils de communication et de synchronisation


entre programmes

Exemple :
Processus P1
static char a;
void echo( )
{
cin >> a;
cout << a;
}

Formateur : Pierre SWEID

Processus P2
static char a;
void echo( )
{
cin >> a;
cout << a;
}
Page16

FONCTIONSD'UNSYSTEMED'EXPLOITATION(6)
5.

Gestion des objets externes

La mmoire centrale est une mmoire volatile. Aussi, toutes les


donnes devant tre conservs au del de l'arrt de de la machine,
doivent tre stockes sur une mmoire de masse ( disquette, Cdrom...)

la gestion de l'allocation des mmoires de masse ainsi que l'accs aux


donnes stockes s'appuient sur la notion de fichiers et de systme de
gestion de fichiers (SGF).

Formateur : Pierre SWEID

Page17

FONCTIONSD'UNSYSTEMED'EXPLOITATION(7)
6.

Gestion de la protection

le systme doit fournir des mcanismes garantissant que ses ressources


(CPU, mmoire, fichiers) ne peuvent tre utilises que par les
programmes auxquels les droits ncessaires ont t accords.

il faut notamment protger le systme et la machine des programmes


utilisateurs (mode d'excution utilisateur et superviseur)

Formateur : Pierre SWEID

Page18

Linux:Structuredebase

Applications

Structure :

Processus utilisateurs

Appels Systmes

Commandes
2. Gestion de la
mmoire

1. Gestion des
processus
3. Gestion des fichiers (VFS)

4. Gestion du rseau
SE

DOS

NFS

UNIX

Gestion des Entres - Sorties


MACHINE PHYSIQUE

Formateur : Pierre SWEID

Page19

Linux:Structuredebase

Le systme Linux est structur comme un noyau monolithique qui peut


tre dcoup en quatre grandes fonctions :
1.

une fonctionnalit de gestion des processus qui administre les excutions


de programmes, le processus tant l'image dynamique de l'excution d'un
programme

2.

une fonctionnalit de gestion de la mmoire ;

3.

une fonctionnalit de gestion des fichiers de haut niveau, le VFS (Virtual


File System) qui s'interface avec des gestionnaires de fichiers plus
spcifiques de type Unix, DOS, etc., lesquels s'interfacent eux-mmes
avec les contrleurs de disques, disquettes, CD-Rom, etc. ;

4.

une fonctionnalit de gestion du rseau qui s'interface avec le


gestionnaire de protocole puis le contrleur de la carte rseau.

Formateur : Pierre SWEID

Page20

Linux servicesfournis

Le SE s'interface avec les Prog U par le biais des routines systmes

constituent les points d 'entres des fonctionnalits du systme.

Les services fournis par Linux aux routines systmes peuvent tre appels
de deux faons par les processus utilisateurs,

1.

soit par le biais d'un appel systme,

2.

soit par le biais d'une commande du langage de commandes.

L'excution des routines systmes s'effectue dans le mode privilgi (mode


superviseur )

Formateur : Pierre SWEID

Page21

Linux:modesdexcution

Mode utilisateur
protection

Mode Superviseur
(privilge suprieur)

main()
{
int i, j, fd;
i = 3;
fd
=open("fichier","w
r");
read(fd, j, 1);
j = j / i;
}

Excution
de
open()

Excution de
read ()

Linux : Modes d'excutions


Formateur : Pierre SWEID

Page22

Linux:modesdexcution
Linux : Modes d'excutions
Un processus utilisateur s'excute par dfaut en mode utilisateur (User
Mode) :
Dans ce mode, les actions du programme sont volontairement restreintes afin de
protger la machine des actions parfois malencontreuses du programmeur.
Exemple : Les instructions permettant la manipulation des interruptions est
interdite.

Le systme d'exploitation, quant lui, s'excute dans un mode privilgi (


mode superviseur (Kernel Mode)),

pour lequel aucune restriction de droits n'existe.

Le codage du mode utilisateur esclave et du mode superviseur matre


est ralis au niveau du processeur, dans le registre d'tat de celui-ci.
Formateur : Pierre SWEID

Page23

Linux:CommutationdeContexte principe
Linux : Commutation de Contexte :
Le passage dun processus du mode utilisateur au mode superviseur constitue
une commutation de contexte:
1. Sauvegarde du contexte utilisateur
La valeur des registres du processeur (compteur ordinal, registre d'tat), sur la
pile noyau.
2. Un contexte noyau est charg :
Valeur de compteur ordinal correspondant l'adresse de la fonction excuter
dans le noyau,
Et d'un registre d'tat en mode superviseur.
3. A la fin de l'excution de la fonction systme, le processus repasse en mode
utilisateur.
Il y a de nouveau une opration de commutation de contexte :
Restauration du contexte utilisateur ,
Reprise de l'excution du programme utilisateur juste aprs l'appel
Formateur : Pierre SWEID

Page24

Linux:CommutationdeContexteexemple
Linux : Commutation de Contexte
Mode utilisateur

protection

Mode Superviseur
(privilge suprieur)

main( )
sauvegarde CO, PSW utilisateur
{
1. chargement CO adresse de la fonction
int i, j, fd;
open
Char tab[10];
2. chargement PSW mode superviseur
i = 3;
fd =open("fichier","wr");
Excution
If(fd== -1)
de
{
perror("Problme ouverture
open()
fichier\n");
Pile noyau
exi t ( 1) ;
}
Else
{
read (fd, tab, 10) ;
restitution du contexte utilisateur
printf("caractres lus: %s \n" , tab)
1. chargement CO CO sauvegard
;
2. chargement PSW PSW sauvegard
Close (fd);
}
}
Page25
Formateur : Pierre SWEID

Linux:CommutationdeContexte Diffrentescauses
Trois causes majeures provoquent le passage du mode utilisateur au mode
superviseur :
1. Lorsquun processus utilisateur effectue un appelle dune fonction du systme.
C'est une demande explicite de passage en mode superviseur
2. L'excution par le processus utilisateur d'une opration illicite (division par 0,
instruction machine interdite, violation mmoire ...) :
C'est la trappe ou l'exception.
L'excution du processus utilisateur est alors arrte ;
3. La prise en compte d'une interruption par le matriel (IRQ Interrupt Request)
par le systme d'exploitation.
Le processus utilisateur est alors stopp et l'excution de la routine
d'interruption associe l'interruption survenue est excute en mode
superviseur.
Formateur : Pierre SWEID

Page26

Linux:CommutationdeContexte causes exemple


Mode utilisateur

protection

main( )
{
int i, j, fd;
Char tab[10];
i = 3;
fd =open("fichier","wr");
If(fd== -1)
{
perror("Problme ouverture fichier\n");
exi t ( 1) ;
}
Else
{
read (fd, tab, 10) ;
printf("caractres lus: %s \n" , tab) ;
i=i/j;
Close (fd);

}
}
Formateur : Pierre SWEID

Trois causes de commutation de contexte

Mode Superviseur
(privilge suprieur)

Excution de
open()
APPELS
SYSTEME
IRQ
Excution du
traitant d'it
Horloge
TRAPPE
erreur
irrecouvrable
arrt du
programme
Page27

Notiondeprocessus

28/03/2015

Formateur : Pierre SWEID

28

Page28

Notiondeprocessus
QUETS-CE QUE CEST UN PROCESSUS ?
Dfinition : Un processus est un programme en cours d'excution auquel est
associ un environnement processeur (CO, PSW, registres gnraux, etc.)
et un environnement mmoire appels contexte du processus
Processus Programme :
Un programme
peut tre excut plusieurs fois
Peut se trouver dans plusieurs units dexcution en mme temps
(il constitue un objet inerte)
Le processus doit connatre chaque instant
le code du programme
le pointeur dinstruction
ltat de la pile
les variables, etc.
Donc : Un processus est l'instance dynamique d'un programme et incarne le
fil d'excution de celui-ci dans un espace d'adressage protg (objets propres
: ensemble des instructions et donnes accessibles)
Un processus est un programme (code ) en excution ( environnement)
Formateur : Pierre SWEID

Page29

Etatdesprocessus

Formateur : Pierre SWEID

Page30

Systmemultiprocessus:Etatsdesprocessus
Les processus, bien qutant indpendants, doivent parfois interagir avec dautres
processus
Exemple : Les rsultats dun proc. Peuvent parfois tre les donnes dun autre
Proc.
cat Chapitre1 Chapitre2 Chapitre3 | grep arbre

Un processus qui excute la commande

Un processus qui excute la

cat pour concatner les trois fichiers

commande grep qui trouve les

Chapitre1, Chapitre2, Chapitre3

lignes qui contiennent le mot

Et envoie la rsultat sur la sortie

arbre

standard
Cet exemple montre quun processus peut se trouver dans des tats diffrents
selon le contexte et la disponibilit des ressources ncessaires pour son
excution.
Formateur : Pierre SWEID

Page31

Diagrammetatduprocessus

Etats:
Ready dans la mmoire, prt tre excut
Blocked dans la mmoire, en attente dun
vnement
Blocked/Suspend sur le disque, en attente
dun vnement
Ready/Suspend sur le disque, prt tre
excut aprs son transfert en mmoire
28/03/2015

Formateur : Pierre SWEID

32

Page32

HirarchiedesprocessusdansUNIX
Processus Swapper

Processus 0

Anctre des autres proc

cration fork()

Fichier /etc/inittab

Processus 1 : Init
cration

Processus daemon

cration

cration

Processus getty

Processus getty

Login :

cration

Inetd

Processus login

Fichier /etc/passwd

cration

Interprteur de
commandes

Processus Shell
cration
Prog.exe

cration
ls -l

Exemple, Init cre un processus fils, appel getty pour chaque terminal reconnu par la machine.
Ce processus attend les tentatives de connexion (login et mot de passe) des utilisateurs.
Lorsqu'un utilisateur est admis, le processus getty est remplac par un processus shell.
Celui-ci appartient l'utilisateur, il sera l'anctre de tous les processus crs par l'utilisateur durant la
Formateur session
: Pierre SWEID

Page33

ProcessusUNIX Modesdexcution

Graphe d'tats simplifi pour un processus Unix : Un processus volue


entre trois modes au cours de son excution :
1.

Le mode utilisateur qui est le mode normal d'excution,

2.

Le mode noyau en mmoire qui est le mode dans lequel se trouve un


processus prt ou bloqu (endormi)

3.

Et le mode swapp qui est le mode dans lequel se trouve un processus


bloqu (endormi swapp) dcharg de la mmoire centrale.

Formateur : Pierre SWEID

Page34

Politique d'ordonnancement
Dfinition dune politique dordonnancement :
Rpondre aux trois questions suivantes :
1.

Qui va tre excut ?

2.

Pour combien de temps?

3.

Quand appeler lOrdonnanceur?

Formateur : Pierre SWEID

Page35

Politique d'ordonnancement:Qui?
Algorithmes non premptifs :
(on ne peut pas interrompre un processus):
1.

Premier arriv , premier servi (FCFS : First-Come, First-Served)

2.

Plus court d'abord (SJF : Shortest Job First)

Algorithmes premptifs : (on peut interrompre un processus):


1.

Plus court temps restant (SRT : Shortest Remaining Time )

2.

Chacun son tour (Tourniquet)

3.

Avec Priorits

Quelques principes aussi

Les processus temps rel devraient avoir la plus haute priorit

On veut favoriser les processus qui utilisent peu le processeur (en


gnral, ils sont dutypesinteractifs)

Formateur : Pierre SWEID

Page36

Politique d'ordonnancement:Quand?
Voici les principales possibilits:
Quand le processus en excution se termine
Quand le processus en excution bloque
Quand le processus en excution a
coul son quantum
Quand un nouveau processus est pass l'tat prt (s
urtout s'il est prioritaire)
chaque interruption d'horloge

Formateur : Pierre SWEID

Page37

METHODESDORDONNANCEMENT

Formateur : Pierre SWEID

Page38

PREMIERARRIV,PREMIERSERVI(PAPS) :FirstCome,FirstServed (FCFS)

Principes et caractristiques :
Cestlalgorithmeleplussimple
Dansceschma,lepremierprocessusquidemandeleprocesseurlereoiten
premier( PremierArrivPremierServi).
L'implmentationdelapolitiqueFCFSestfacilementgreavecunefile
d'attenteFIFO.
Lorsqu'unprocessusentredanslalisted'attentedesprocessusprts,sonPCB
estchanlafindelafiled'attente.
Lorsqueleprocesseurest libre,onluialloueleprocessusenttedefile.
Leprocessusenexcutionestalorsretirdelafile.

Formateur : Pierre SWEID

Page39

PREMIERARRIV,PREMIERSERVI(PAPS) :FirstCome,FirstServed (FCFS)

Exemple darrive des processus : P1, P2 et P3

processus

temps d'arrive

temps CPU

P1

24

P2

P3

P3 P2 P1

Formateur : Pierre SWEID

CPU

Page40

FCFS

processus

temps d'arrive

temps CPU

P1

24

P2

P3

temps = 0

P3 P2

P1

CPU

P1
0

Formateur : Pierre SWEID

24

27

30

Page41

FCFS

processus

temps d'arrive

temps CPU

P1

24

P2

P3

temps = 24

P3

P2

CPU

P1
0

Formateur : Pierre SWEID

P2
24

27

30

Page42

FCFS
processus

temps d'arrive

temps CPU

P1

24

P2

P3

temps = 27

P3

CPU

P1
0

Formateur : Pierre SWEID

P2
24

P3
27

30

Page43

FCFS
processus

temps d'arrive

temps CPU

P1

24

P2

P3

temps = 30

CPU

P1
0

Formateur : Pierre SWEID

P2
24

P3
27

30

Page44

FCFS Bilan

P1

P2

24

P3
27

30

processus

temps de traitement

temps CPU
(d'excution)

temps
d'attente

P1

24

- 24

=0

P2

27

-3

= 24

P3

30

-3

= 27

total

81

- 30

= 51

moyenne(3)

27

- 10

= 17

Formateur : Pierre SWEID

Page45

Tourniquet=RoundRobin(RR)

Formateur : Pierre SWEID

Page46

ROUNDROBINOUTOURNIQUET
Algorithme ancien, simple, fiable et trs utilis
Principes de base :
1. On gre la file dattente des processus prts comme une file FIFO de processus.
Les nouveaux processus sont ajouts en queue de file.
L'Ordonnanceur d'excution prend le processus dans la tte de la file,
Dmarre une minuterie qui se dclenchera aprs un quantum et lance le
processus.

2. Le processeur passe d un processus l'autre en excutant chacun pendant


quelques dizaines ou centaines de ms ( valeur du quantum)
Unit de temps : Quantum = temps d allocation du processeur au processus

Formateur : Pierre SWEID

Page47

ROUNDROBINOUTOURNIQUET
Le processeur un instant donn nexcute qu un seul processus
La commutation de contexte entre processus doit tre rapide
infrieur au quantum
Remarques :
1. Si le processus a un cycle d'unit centrale infrieur au quantum,
alors le processus lui-mme librera l'unit centrale
L'Ordonnanceur n'aura qu' traiter le processus suivant dans la file
d'attente des processus prts.

2. Si le cycle d'unit centrale du processus en excution courant est


suprieur un quantum, la minuterie se dclenchera et causera une
interruption du systme d'exploitation.
Une commutation de contexte sera excute et le processus sera plac
la queue de la file d'attente des processus prts.
L'Ordonnanceur d'excution slectionnera alors le processus suivant
dans la file d'attente.
Formateur : Pierre SWEID

Page48

ROUNDROBINOUTOURNIQUET
Exemple
pour systme temps partag ou
interactif
processus

temps d'arrive

temps CPU

P1

20

P2

P3

quantum = 4 ut
P3 P2 P1

CPU

retourne la fin de la
file aprs un quantum
Formateur : Pierre SWEID

Page49

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

20

P2

P3

quantum = 4 ut
temps = 0

P3 P2

P1

CPU

P1
0

Formateur : Pierre SWEID

10

20

30

Page50

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 4

P1

P3 P2

P1

CPU

P1
0

Formateur : Pierre SWEID

10

20

30

Page51

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 4

P1
0

P1 P3

P2

CPU

P2
4

Formateur : Pierre SWEID

10

20

30

Page52

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 7

P1 P3

P2

CPU

fin

P1
0

P2
4

Formateur : Pierre SWEID

10

20

30

Page53

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 7

P1
0

P1

P2
4

Formateur : Pierre SWEID

P3

CPU

P3
7

11

20

30

Page54

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 11 P3

P1
0

P2
4

Formateur : Pierre SWEID

P1

P3

CPU

P3
7

11

20

30

Page55

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

16

P2

P3

quantum = 4 ut
temps = 11

P1
0

P3

P2
4

Formateur : Pierre SWEID

P3
7

P1

CPU

P1
11

15

20

30

Page56

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

12

P2

P3

quantum = 4 ut
temps = 15 P1

P1
0

P2
4

Formateur : Pierre SWEID

P3

P3
7

P1

CPU

P1
11

15

20

30

Page57

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

12

P2

P3

quantum = 4 ut
temps = 15

P1
0

P2
4

Formateur : Pierre SWEID

P3
7

11

P1

P3

P1

P3
15

CPU

18

30

Page58

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

12

P2

P3

quantum = 4 ut
temps = 18

P1

CPU

P3

fin

P1
0

P2
4

Formateur : Pierre SWEID

P3
7

P1
11

P3
15

18

30

Page59

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

12

P2

P3

quantum = 4 ut
temps = 18

P1
0

P2
4

Formateur : Pierre SWEID

CPU

P1

P3
7

P1
11

P3
15

P1
18

22

30

Page60

ROUNDROBINOUTOURNIQUET

processus

temps d'arrive

temps CPU

temps restant

P1

20

P2

P3

quantum = 4 ut
temps = 22

P1
0

P2
4

Formateur : Pierre SWEID

CPU

P1

P3
7

P1
11

P3
15

P1
18

P1
22

26

30

Page61

ROUNDROBINOUTOURNIQUET
processus

temps d'arrive

temps CPU

temps restant

P1

20

P2

P3

quantum = 4 ut
temps = 26

P1
0

P2
4

Formateur : Pierre SWEID

CPU

P1

P3
7

P1
11

P3
15

P1
18

P1
22

P1
26

30

Page62

ROUNDROBINOUTOURNIQUET
7

P1
0

P2
4

P3
7

P1
11

P3
15

P1
18

P1
22

P1
26

30

processus

temps de traitement

temps CPU
(d'excution)

temps
d'attente

P1

30

- 20

= 10 (7+3)

P2

-3

=4

P3

18

-7

= 11 (7+4)

total

55

- 30

= 25

moyenne(3)

18.33

- 10

= 8.33

Formateur : Pierre SWEID

Page63

Synchronisationetexclusion
mutuelleentreprocessus

28/03/2015

Formateur : Pierre SWEID

64

Page64

Squenced'instructionetinterrelation

PROCESSUS

CONCURRENTS

INTERRELATION

INTRELACEMENT)
Considrer toutes les squences (tats) possibles

P1

- aspect temporel

P2
S1

S3

S2

S4

Interrelation considrer toutes les squences possibles


squences possibles
S1 S2
S1 S3
S1 S3
S3 S1
S3 S1
S3 S4
Formateur : Pierre SWEID

S3
S2
S4
S2
S4
S1

S4
S4
S2
S4
S2
S2
Page65

Bilan

1. Pour des programmes indpendants :


Tous ces entrelacements sont acceptables.
2. Pour des programmes dpendants,
Seulement quelques uns de ces cas sont acceptables.
Les autres cas doivent tre vits, car ils conduisent des
rsultats errons ou la catastrophe.
3. Dans la programmation de programmes concurrents (et, sous-entendu,
dpendants) :
Il faut introduire des mcanismes qui permettent de synchroniser
les processus et d'liminer les squences catastrophiques.
La synchronisation implique que la progression d'un processus est
ventuellement contrle par un autre. .
Formateur : Pierre SWEID

Page66

Unexemple
Considrons la procdure suivante de lecture dun caractre a depuis le
clavier et son affichage.

static char a;
void echo( )
{
cin >> a ; /* saisie du caractre
a
*/
cout << a ; /* affichage du caractre a
*/
}

Formateur : Pierre SWEID

Page67

Vueglobale:excutionconcurrentepossible

Supposons maintenant deux processus P1 et P2 excutent cette mme


procdure et partagent la mme variable a

P1 et P2 peuvent tre interrompus nimporte o /* en cours dexcution */

Donc : Si P1 est interrompu aprs cin et que P2 sexcute au complet

Le caractre affich par P1 aprs reprise sera alors celui lu par P2 !!

Conclusion :

Le rsultat de lexcution concurrente de P1 et P2 dpend de l`ordre de leur


entrelacement
Processus P1
Processus P2
static char a;
void echo()
{
cin >> a;
cout << a;
}

Formateur : Pierre SWEID

static char a;
void echo()
{
cin >> a;
cout << a;
}
Page68

Sectioncritique

Lorsquun processus manipule une donne (ou ressource) partage,


nous disons quil se trouve dans une Section Critique (SC) (associe
cette donne)
Processus P1

Processus P2

Entre

Entre

section
critique
sortie

section
critique
sortie

Ressource critique partage


Formateur : Pierre SWEID

Page69

ExclusionMutuelle
Problme de section critique :
Consiste trouver un algorithme dexclusion mutuelle de processus

dans l`excution de leur SCs afin que le rsultat de leurs actions


ne dpendent pas de lordre dentrelacement de leur excution
Lexcution des sections critiques doit tre mutuellement exclusive:
tout instant, un Seul Processus peut excuter une SC pour

une dure donne (mme lorsquil y a plusieurs processeurs)


Remarque :
Pour simplifier, dornavant nous faisons lhypothse quil ny a

quune seule SC dans un programme


Formateur : Pierre SWEID

Page70

Miseenplacedessectionscritiques

Formateur : Pierre SWEID

Page71

Propritsattenduesousouhaitables dunesolutionauproblmedelexclusionmutuelle

1. Exclusion mutuelle : A tout instant, un processus au plus excute des


instructions de sa section critique
2. Absence de blocage : Si plusieurs processus sont en attente dentre en
section critique (SC) et quaucun processus nest en SC, lun deux doit
pouvoir entrer en SC au bout dun temps fini
3. Condition de progression : Si un processus se trouve hors de sa SC et
hors du protocole contrlant la SC, alors il ne doit pas empcher un
autre processus dentrer en SC

4. Absence de famine : Pour un processus voulant rentrer en SC, il existe


une borne suprieure au nombre de fois o dautres processus
excuteront leur SC.
La valeur de la borne permet de savoir quel point la solution est
quitable
Formateur : Pierre SWEID

Page72

Smaphores
[Dijkstra 1965]

Formateur : Pierre SWEID

Page73

Smaphores
UnsmaphoreS estuntypeabstrait (dfinition deDIJKSTRA)qui,saufpour
l'Initialisation,estaccessibleseulementparces2oprationsatomiques et
mutuellementexclusives:
wait(S)

:(appelP(S)danscertainslivres)

signal(S) :(appelV(S)danscertainslivres)

wait (

P(

S )

P (Probeer)
dcrmenter

S ) - test

while S 0 do no-op
S = S- 1

signal (

S )

V(

S ) - incrmente

pour demander un
lment de la
ressource .

V ( Verhoog)
Incrmenter

S = S + 1
libre un lment de la
ressource.
Formateur : Pierre SWEID

Page74

SmaphoresdExclusionMutuelle:vueglobalesurdeuxprocessus

Initialise S (Mutex = 1)
1
Process Pi:
repeat
wait(Mutex);
{S-- Mutex =0}
1
Entre en SC
|
2
|
signal(Mutex);
{Mutex=1
Rveil }
SR
forever

Process Pj:
repeat
wait(Mutex);
{ Mutex =0
Mise en attente
}
Entre en SC
|
|
Signal(Mutex);
{Mutex=1
Rveil }
SR
forever

Peut tre facilement gnralis plus de deux processus


Formateur : Pierre SWEID

Page75

SmaphoresdExclusionMutuelle:pourNprocessus
Le smaphore exm peut tre considr comme un verrou qui assure qu'un seul processus
accde aux donnes la fois (i.e., excute sa section critique).
Etat initial : exm =1 et aucun processus ne s'excute dans sa section critique.
Le premier processus qui effectue l'opration wait(exm) pourra donc accder aux donnes et
mettra la valeur de exm 0.
Tout autre processus effectuant l'opration wait(exm) sera donc mis en attente (sera bloqu).
Lorsque le premier processus quitte la section critique, il effectue l'opration signal( exm). (
incrmente le smaphore (exm=1 ), ce qui permet de dbloquer un processus en attente et un
seul.
P3
P2

exm

P1 LOOP

N Processus

wait( exm)

DONNES

section
critique

signal( exm)

Semaphore exm = 1
Formateur : Pierre SWEID

EXCLUSION
MUTUELLE
Page76

Utilisationdessmaphorespourlasynchronisationdeprocessus

ALTERNANCE FORCE
synchronisation
Quelquesexemplesdutilisationdessmaphores4
Semaphore S1 = 1
Semaphore S2 = 0
Process HI
LOOP

Formateur : Pierre SWEID

Process HO
LOOP

S1.wait()

S2.wait()

printf
( "HI" );

printf
("HO");

S2.signal()

S1.signal()

Page77

Problmesclassiquesdesynchronisation

Applications classiques des smaphores


1. Tampon born (producteur-consommateur)
2. crivains - Lecteurs
3. Problme du dner des philosophes

Formateur : Pierre SWEID

Page78

Lepb duproducteur consommateur

Un problme classique dans l tude des processus communicants

un processus producteur produit des donnes (p.ex. des enregistrements


dun fichier) pour un processus consommateur

Tampons de communication

Prod

Prod

1 donn

1 donn 1 donn 1 donn

Cons

Cons

Si le tampon est de longueur 1 le producteur et consommateur doivent forcement


aller la mme vitesse
Des tampons de longueur plus grandes permettent une certaine indpendance.

P.ex. droite le consommateur a t plus lent

Formateur : Pierre SWEID

Page79

Letamponborn(bounded buffer)
une structure de donnes fondamentale dans les SE
Utilisation du tampon born dans le schma Producteur - Consommateur :
Le tampon born se trouve dans la mmoire partage entre consommateur et
usager

bleu: plein,
b[0 b[1] b[2] b[3] b[4] b[5] b[6] b[7]
]
in: 1re pos.
libre

blanc: libre

out: 1re pos.


pleine

Pb de synchronisation entre proc pour le tampon born :

tant donn que le producteur et le consommateur sont des


processus indpendants, des problmes pourraient se produire en
permettant accs simultan au tampon
Les smaphores peuvent rsoudre ce problme

Formateur : Pierre SWEID

Page80

Programmationduschmaproducteur/consommateur1
Hypothses de base : On considre ici deux processus communiquant par un
tampon de N cases.
Le producteur dpose des messages dans le tampon dans la case pointe par l'index i.
Le consommateur prlve les messages dans la case pointe par l'index j.
Le tampon est gr selon un mode FIFO circulaire en consommation et en dpt, c'est-dire :
Le producteur dpose les messages depuis la case 0 jusqu' la case N-1, puis revient
la case 0
Le consommateur prlve les messages depuis la case 0 jusqu' la case N-1, puis
revient la case 0.

b[0 b[1] b[2] b[3] b[4]


]

Formateur : Pierre SWEID

b[N-1]

Position i :

Position j :

1re pos. libre

1re pos. pleine


Page81

Programmationduschmaproducteur/consommateur2

Pour qu'aucun message ne soit perdu, les trois rgles suivantes doivent
tre respectes :
1. Un producteur ne doit pas produire si le tampon est plein
2. Un consommateur ne doit pas faire de retrait si le tampon est vide
3. Producteur et consommateur ne doivent jamais travailler dans une mme
case

b[0 b[1] b[2] b[3] b[4]


]

Formateur : Pierre SWEID

b[N-1]

Position i :

Position j :

1re pos. libre

1re pos. pleine

Page82

Programmationduschmaproducteur/consommateur3
Dans ce problme deux types de ressources distinctes peuvent tre mises
en avant :
1. Le producteur consomme des cases vides et fournit des cases pleines
2. Le consommateur consomme des cases pleines et fournit des cases
vides
Donc deux types de ressources :
ressource cases vides et des ressource cases pleines.
Le problme peut maintenant se rapprocher d'un problme d'allocation
de ressources critiques tel que nous l'avons vu prcdemment.
Principe de la solution de programmation :
On associe donc un smaphore chacune des ressources identifies et on
initialise ce smaphore au nombre de cases respectivement vides ou pleines
initialement disponibles (N et 0).
On a donc deux smaphores :
VIDE initialis N
PLEIN initialis 0.
Formateur : Pierre SWEID

Page83

Programmationduschmaproducteur/consommateur4
Un producteur :
Va s'allouer une case vide par une opration Wait(VIDE),
Remplir cette case vide ( et de ce fait gnrer une case pleine).
Va signaler cette nouvelle case pleine par une opration
Signal(PLEIN),
Cette opration rveillera ventuellement le consommateur en
attente d'une case pleine.
Un consommateur
Va s'allouer une case pleine par une opration Wait(PLEIN),
Vider cette case pleine ( et de ce fait gnrer une case vide).
Va signaler cette nouvelle case vide par une opration Signal(VIDE),
Cette opration rveillera ventuellement le producteur en attente
d'une case vide.
Formateur : Pierre SWEID

Page84

Programmationduschmaproducteur/consommateur5
Producteur
Si il y a au moins une case libre
alors

allocation de ressources cases


vides
Wait (Smaphore VIDE)

dposer le message
prvenir le consommateur
sinon
attendre
fsi
allocation de ressources cases
pleines
Wait (Smaphore PLEIN)

Une ressource case vide


disponible
Signal (Smaphore VIDE)
Formateur : Pierre SWEID

Une ressource case pleine


disponible
Signal (Smaphore PLEIN)
Consommateur
Si il y a au moins une case pleine
alors
prendre le message
prvenir le producteur
Sinon
attendre
fsi
Page85

Programmationduschmaproducteur/consommateur6

Initialisation des smamphores :


Smaphore VIDE initialis N : Init(Vide,
N)
Smaphore PLEIN initialis 0 : Init(Plein,
0)
Producteur

Consommateur

index i de dpot: = 0

index j de retrait := 0

Wait (VIDE)

Wait(PLEIN)

dposer le message dans T(i);

retirer le message de T(j);

i : = i + 1modN;

j : = j + 1modN;

Signal(PLEIN)

Signal(VIDE)

Schma producteur / consommateur

Formateur : Pierre SWEID

Page86

Programmationduschmaproducteur/consommateur7

Bilan : Deux Smaphores de synchronisation : VIDE et PLEIN

Remarque :

Les smaphores VIDE et PLEIN ne font pas lEM

Un smaphore PLEIN pour synchroniser producteur et


consommateur sur le nombre de cases pleines dans le tampon
(nombre dlments consommables)

Un smaphore VIDE pour synchroniser producteur et consommateur


sur le nombre de cases libres

Pour assurer lexclusion mutuelle sur laccs au tampon, il faut un


autre smaphore S dExclusion Mutuelle.

Formateur : Pierre SWEID

Page87

Programmationduschmaproducteur/consommateur8
Initialization:
S.count=1; //excl. mut.
PLEIN.count=0; //esp. pleins
VIDE.count=N; //esp. vides
Producteur
repeat
Produire v;
wait(VIDE);
wait(S);
append(v);
signal(S);
signal(PLEIN);
forever
append(v):
b[in]=v;
In ++ mod N;

take( ):
w=b[out];
Out ++ mod N;
return w;

Formateur : Pierre SWEID

Consommateur
Repeat
wait(PLEIN);
wait(S);
w =take();
signal(S);
signal(VIDE);
Consomme (w);
forever

Sections critiques
Page88