Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
K. RHOFIR
Systme dexploitation&Unix
2013/14
Plan modifiable
Introduction
Gestion des processus
Synchronisation des processus
Gestion de la mmoire
Gestion des fichiers
Interblocage
Gestion des entres/sorties
.
Systme dexploitation&Unix
2013/14
Chap:3
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Exemple1:
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Communication inter-processus
Systme dexploitation&Unix
2013/14
Le rsultat de lexcution
concurrente de P1 et P2 dpend de
lordre de leur entrelacement
Systme dexploitation&Unix
Procdure:
* M. X demande une rservation
davion
* Base de donnes dit que
fauteuil A est disponible
* Fauteuil A est assign X et
marqu occup
2013/14
interruptions
P2
rservation davion
Systme dexploitation&Unix
2013/14
Communication inter-processus
Objets et sections critiques
Systme dexploitation&Unix
2013/14
Communication inter-processus
Objet critique
Section critique
Section critique
Systme dexploitation&Unix
2013/14
local_in = in;
placer_job (local_in);
in = local_in + 1;
Communication inter-processus
Chaque processus doit donc demander une permission avant dentrer dans une section
critique (SC)
section de sortie
section restante
Systme dexploitation&Unix
2013/14
Application
Systme dexploitation&Unix
2013/14
Communication inter-processus
Race conditions (conditions de course)
Les situations dans lesquelles des processus peuvent tre en ''course'' pour accder
certaines ressources et dont le rsultat dpend de l'ordre d'accs
sont appeles conditions de course ( race conditions) .
=> Non dterminisme: le rsultat est alatoire avec les mmes donnes.
Solution: une section critique SC ne doit tre excute que par un seul
processus la fois ( on dira que le processus est dans sa SC)
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14
Types de solutions
Solutions par logiciel
des algorithmes dont la validit ne sappuie pas sur lexistence
dinstructions spciales.
Solutions fournies par le matriel
sappuient sur lexistence de certaines instructions spciales (du
processeur).
Solutions fournies pas le SE
procure certains appels systmes au programmeur.
Systme dexploitation&Unix
2013/14
Remarques
Atomicit = indivisibilit
Systme dexploitation&Unix
2013/14
Solutions logicielles
1-Masquage des interruptions d'horloge:
Un processus qui entre en section critique masque les interruptions
d'horloge jusqu' ce qu'il sort de sa SC.
INCONVENIENTS:
Systme dexploitation&Unix
2013/14
Solutions logicielles
2-Variable verrou:
Une variable de verrouillage est une variable binaire 0 ou 1
partage par les processus, qui va indiquer si un processus est en
section critique ou non.
Si verrou==0
Si verrou==1
Systme dexploitation&Unix
SC est libre
SC occupe
2013/14
Solutions logicielles
Algorithme:
entrer_SC()
sortir_SC()
If (verrou==0)
verrou=0;
Verrou=1;
Systme dexploitation&Unix
2013/14
Solutions logicielles
3-l'alternance stricte:
On utilise une variable tour partage qui va contenir le numro du
processeur entrer en section critique.
sortir_SC()
/* attente active */
tour=(NumProcess+1) %N;
}
Systme dexploitation&Unix
2013/14
Solutions logicielles
Alternance stricte
Avantages: simple et facile utiliser.
Systme dexploitation&Unix
2013/14
Solutions logicielles
4- Algorithme de Peterson (1981):
On va introduire une nouvelle variable par processus pour savoir s'il
est intress ou non par la SC.
Systme dexploitation&Unix
2013/14
Algorithme de Peterson
#define N 2 /* nombre de processus */
/* variables partages par tous les process */
int tour;
/* qui le tour */
int interesse[N]; /* initialis FALSE */
void entrer_region(int processus)
/* process appelant vaut 0 ou 1 */
{
int autre; /* numro de l'autre processus */
autre = 1-processus;
interesse[processus] = TRUE; /* indiquer son intrt */
tour = processus; /* positionner le drapeau d'accs */
while(tour == processus && interesse[autre] == TRUE); /* attente active*/
}
void quitter_region(int processus) /* numro du processus appelant ici process vaut 0
ou 1 */
{ interesse[processus] = FALSE;
/* indiquer la sortie de la section critique */
}
Systme dexploitation&Unix
K. Rhofir @2012/13
Algorithme de Peterson
Process P0:
autre=1
interesse [0] = vrai;
// 0 veut entrer
tour = 0;
while
(intesse[1]==vrai&&tour=0)
{};
SC
interesse[0] = faux;
// 0 quitte section critique
SR
Process P1:
autre=0;
interesse[1] = vrai;
// 1 veut entrer
tour = 1;
while
(intersse[0]==vrai&&tour=1)
{};
SC
interesse[1] = faux;
// 1 quitte section critique
SR
Systme dexploitation&Unix
K. Rhofir @2012/13
Algorithme de Peterson
Systme dexploitation&Unix
2013/14
Algorithme de Peterson
Lorsqu'un
K. Rhofir @2012/13
Solutions logicielles
Systme dexploitation&Unix
2013/14
Solution matrielles
Systme dexploitation&Unix
2013/14
Solution matrielles
Systme dexploitation&Unix
2013/14
Solution matrielles
L'instruction: TSL RX, LOCK
Test and Set Lock, ( tester et dfinir le verrou ) qui fonctionne ainsi:
Elle charge le contenu du mot mmoire LOCK dans le registre RX, et
en mme temps, elle met la valeur LOCK 1.
Cette instruction est garantie comme tant atomique, c'est--dire que
l'arrive d'une interruption ne sera acquitte par le processeur que
lorsque l'opration du TSL sera termine
Le processeur dispose de petites zones de mmoire trs rapides, appeles
registres
35
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
K. Rhofir @2012/13
Solution matrielles
entrer_region:
TSL registre, lock
CMP registre,#0
BNZ entrer_region
RET
quitter_region:
MOVE LOCK, #0
RTS
Systme dexploitation&Unix
Systme dexploitation&Unix
2013/14
Solution:
Endormir un processus en attente et le rveiller ds que la
ressource est libre, pour cela , il y a 2 appels systme:
Systme dexploitation&Unix
2013/14
Consommateur
Problmes:
Systme dexploitation&Unix
2013/14
#define N 100
int compteur = 0 ;
void producteur () {
while (TRUE) {
produire_element() ;
if (compteur == N) sleep () ;
mettre_element() ;
compteur = compteur + 1 ;
if (compteur == 1) wakeup(consommateur)
}
}
Systme dexploitation&Unix
void consommateur () {
while (TRUE) {
if (compteur == 0) sleep() ;
retirer_element();
compteur = compteur 1 ;
if (compteur == N-1)
wakeup (producteur) ;
}
}
2013/14
2013/14
Smaphores
Pour contrler les accs un objet partag E. W. Dijkstra proposa
en 1965 un nouveau type de variables appeles: smaphores. Ils
sont maintenant largement utiliss dans les systmes
d'exploitation modernes.
Dfinition:
Un smaphore est un compteur entier qui dsigne le nombre
d'accs disponible une certaine ressource.
Chaque smaphore un nom et une valeur initiale.
Les smaphores sont manipuls par des oprations:
Systme dexploitation&Unix
2013/14
Smaphores
Systme dexploitation&Unix
2013/14
Smaphores
Exemple: semaphore: sem_t dans la norme POSIX
#include <semaphore.h>
Semaphore S=2; /* 2 accs disponibles*/
Processus P1{
P(S);
/* dcrmenter S, S=1*/
SC_P1;
V(S);
/* incrmenter S, S=2*/
}
Les oprations P() et V() doivent tre implements de faon atomique par le SE avec TSL
Systme dexploitation&Unix
2013/14
Smaphores
Solution du problme producteur /consommateur
On aura besoin de 3 smaphores :
1- mutex: pour assurer l'exclusion mutuelle initialis 1
Systme dexploitation&Unix
2013/14
Smaphores
#define N 100
/* nb de places libres */
/* nb de places occupes */
P (libre) ;
P (mutex) ;
mettre_element (element) ;
V (mutex) ;
V (occupe) ;
}
}
Systme dexploitation&Unix
2013/14
Smaphores
void consommateur (void)
{
int element ;
while (TRUE) {
P (occupe) ;
P (mutex) ;
prelever_element (element) ;
V (mutex) ;
V (vide) ;
}
}
Systme dexploitation&Unix
2013/14
Smaphores
Remarque
semaphore S;
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14
Description
On dfinit 3 tats pour les philosophes :
Pense ;
Faim (en attente de manger) ;
Mange
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14
Systme dexploitation&Unix
2013/14