SlideShare una empresa de Scribd logo
1 de 42
Synchronisation sous systeme Linux
Pourquoi synchroniser les processus ?
Le nombre de ressources d'un
système d'exploitation est limité.
On trouve les processus en
situation de concurrence (race)
vis-à-vis des ressources.
le But de la synchronisation est
de contrôler la concurrence.
Contrôler la concurrence
➔Organiser la compétition:
◆ Fournir des services de synchronisation indirecte par exclusion mutuelle : « Arbitrage »,
rôle du système.
◆ Ou au contraire, inclure la partie contrôle de concurrence au sein des programmes : «
sans arbitrage » par le système.
➔Coordonner l’utilisation des ressources:
◆ Empêcher ou réparer des blocages
◆ Garantir l’équité ou absence de famine
Section Critique
Section Critique: Toute section de code (séquence d’instructions) manipulant de ressources
communes (variables communes, …)
Exclusion mutuelle ou Mutex: Il y a au plus une entité en section critique qui permet de
réguler l’accès aux données.
Exemple : accès à une base de données.
Remarque: Plusieurs processus peuvent la lire simultanément.
Outils de synchronisation
Matériels :
emploi de Test and Set qui est basée sur l’utilisation d’une instruction permettant
de lire et d’écrire le contenu d’un mot mémoire de manière indivisible.
inhibition des interruptions (possible seulement dans le cas d'un processus se
déroulant en mode privilégié).
Logiciels :
sémaphores (outils logiciels mis à la disposition des utilisateurs par le système
d'exploitation)
algorithmes de synchronisation.
Masquage d ’interruptions (Monoprocesseurs)
Solution brutale: seule l’interruption générée par la fin du quantum de temps
nous intéresse.
Le comportement des processus est décrit par le schéma suivant :
while(1)
{
< Section Restante >
Masquer les interruptions ;
< Section Critique >
Démasquer les interruptions ;
}
Test And Set (Multiprocesseurs: instruction indivisible)
Cette solution est basée sur l’utilisation d’une instruction permettant de lire et
d’écrire le contenu d’un mot mémoire de manière indivisible.
➔Instruction minimale permettant de bâtir de la synchronisation
➔Instruction atomique (garantie atomique par le scheduler et le hard)
Le drapeau est partagé par plusieurs processus, il est initialisée à zéro.
tas registre, drapeau
⇔
{registre ← drapeau; drapeau ← 1;}
EntreeMutex:
tas registre, drapeau
cmp registre 0
jnz EntreeMutex
ret
Inconvénients de cette technique :
➔Attente active (busy waiting)
➔On ne sait pas qui va prendre la main.
On peut avoir une solution pour l’attente active par la mise en sommeil en
utilisant sleep(), awake().
Efficace mais (trop) complexe à mettre en œuvre !
Sémaphores
Un sémaphore est un type de donnée abstraite. Le sémaphore a été inventé par
Edsger Dijkstra.
Les sémaphores fournissent la solution la plus courante pour le fameux problème du
« dîner des philosophes »
Un sémaphore Sem associé à une ressource R est un objet composé :
d'un compteur Sem.Ka qui indique le nombre d'éléments disponibles ou le
nombre de processus en attente sur R
d'une file d'attente Sem.L où sont chaînés les processus en attente sur la
ressource R.
Les trois opérations prises en charge par un sémaphore sont Init, P et V.
Les operations
P (Proberen signifie tester): elle teste la
disponibilité d’une ressource, et elle
alloue immediatement au
processus courant.
V (Verhogen signifie incrementer): elle
libère la ressource après que le
processus a terminé de l'utiliser.
Init: Pour initialiser le sémaphore.
Cette opération est utilisée une
seule et unique fois.
Operations Init
function Init (semaphore sem, int val)
{
disable_Interrupt;
sem.K = val;
enable_interrupt;
}
Operation P
function P (semaphore sem)
{
disable_interrupt;
if (sem.K == 0)
{
L.suivant = processus_courant;
processus_courant.état = bloque;
reordonnancement = vrai;
}
else
{
sem.K = sem.K-1;
}
enable_interrupt;
}
Operation V
function V (semaphore sem)
{
disable_interrupt;
sem.K = sem.K+1;
if (not L.vide)
{
processus_réveillé = L.tête;
processus_réveillé.état = prêt;
reordonnancement = vrai;
}
enable_interrupt;
}
Les cas traités par les Sémaphores
Producteur et consommateur
Lecteur et écrivain
Production Consommation
Producteur Consommateur
Ecriture Lecture
Producteur LecteurEcrivain
R
R
Producteur et consommateur
Producteur
créer un document D
verrouiller F
ajouter D à la fin de la file F
déverrouiller F
envoyer un signal au processus consommateur
Consommateur
répéter
attendre signal de F
tant que F n'est pas vide:
pour chaque élément E de F:
verrouiller F
imprimer E
supprimer E de F
déverrouiller F
fin pour
fin tant-que
attendre un signal d'un producteur
fin répéter
Contrôle de La concurrence « sans arbitrage » par
le systèm
La concurrence entre le
Processus Pi et Pj.
Ces algorithmes sont introduits
au sein de Pi.
Algorithme de Dekker
/* i veut entrer en S.C. */
Etat[i] = 1;
while (Etat[j] == 1) {
if (tour == j) {
Etat[i] = 0;
/* attendre que
l'autre sorte de SC */
while(tour == j) { };
Etat[i] = 1;
}
}
/* debut de section critique */
... ...
/* fin de section critique */
tour = j;
• Exclusion
mutuelle garantie
• Pas d'interblocage
Algorithme de Peterson
... /* i veut entrer en S.C. */
Etat[i] = 1;
/* mais il laisse passer j, si j veut entrer */
tour = j;
/* attendre que Pj sorte de SC */
while ((Etat[j] == 1) && (tour == j)) {};
/* debut de S.C. */
...
…
/* fin de section critique */
Etat[i] = 0;
● Exclusion mutuelle
garantie,
● pas d’interblocage
● attente limitée
Réalisé par :
Fadwa Gmiden
Synchronisation sous systeme Linux
Pourquoi synchroniser les processus ?
Le nombre de ressources d'un
système d'exploitation est limité.
On trouve les processus en
situation de concurrence (race)
vis-à-vis des ressources.
le But de la synchronisation est
de contrôler la concurrence.
Contrôler la concurrence
➔Organiser la compétition:
◆ Fournir des services de synchronisation indirecte par exclusion mutuelle : « Arbitrage »,
rôle du système.
◆ Ou au contraire, inclure la partie contrôle de concurrence au sein des programmes : «
sans arbitrage » par le système.
➔Coordonner l’utilisation des ressources:
◆ Empêcher ou réparer des blocages
◆ Garantir l’équité ou absence de famine
Section Critique
Section Critique: Toute section de code (séquence d’instructions) manipulant de ressources
communes (variables communes, …)
Exclusion mutuelle ou Mutex: Il y a au plus une entité en section critique qui permet de
réguler l’accès aux données.
Exemple : accès à une base de données.
Remarque: Plusieurs processus peuvent la lire simultanément.
Outils de synchronisation
Matériels :
emploi de Test and Set qui est basée sur l’utilisation d’une instruction permettant
de lire et d’écrire le contenu d’un mot mémoire de manière indivisible.
inhibition des interruptions (possible seulement dans le cas d'un processus se
déroulant en mode privilégié).
Logiciels :
sémaphores (outils logiciels mis à la disposition des utilisateurs par le système
d'exploitation)
algorithmes de synchronisation.
Masquage d ’interruptions (Monoprocesseurs)
Solution brutale: seule l’interruption générée par la fin du quantum de temps
nous intéresse.
Le comportement des processus est décrit par le schéma suivant :
while(1)
{
< Section Restante >
Masquer les interruptions ;
< Section Critique >
Démasquer les interruptions ;
}
Test And Set (Multiprocesseurs: instruction indivisible)
Cette solution est basée sur l’utilisation d’une instruction permettant de lire et
d’écrire le contenu d’un mot mémoire de manière indivisible.
➔Instruction minimale permettant de bâtir de la synchronisation
➔Instruction atomique (garantie atomique par le scheduler et le hard)
Le drapeau est partagé par plusieurs processus, il est initialisée à zéro.
tas registre, drapeau
⇔
{registre ← drapeau; drapeau ← 1;}
EntreeMutex:
tas registre, drapeau
cmp registre 0
jnz EntreeMutex
ret
Inconvénients de cette technique :
➔Attente active (busy waiting)
➔On ne sait pas qui va prendre la main.
On peut avoir une solution pour l’attente active par la mise en sommeil en
utilisant sleep(), awake().
Efficace mais (trop) complexe à mettre en œuvre !
Sémaphores
Un sémaphore est un type de donnée abstraite. Le sémaphore a été inventé par
Edsger Dijkstra.
Les sémaphores fournissent la solution la plus courante pour le fameux problème du
« dîner des philosophes »
Un sémaphore Sem associé à une ressource R est un objet composé :
d'un compteur Sem.Ka qui indique le nombre d'éléments disponibles ou le
nombre de processus en attente sur R
d'une file d'attente Sem.L où sont chaînés les processus en attente sur la
ressource R.
Les trois opérations prises en charge par un sémaphore sont Init, P et V.
Les operations
P (Proberen signifie tester): elle teste la
disponibilité d’une ressource, et elle
alloue immediatement au
processus courant.
V (Verhogen signifie incrementer): elle
libère la ressource après que le
processus a terminé de l'utiliser.
Init: Pour initialiser le sémaphore.
Cette opération est utilisée une
seule et unique fois.
Operations Init
function Init (semaphore sem, int val)
{
disable_Interrupt;
sem.K = val;
enable_interrupt;
}
Operation P
function P (semaphore sem)
{
disable_interrupt;
if (sem.K == 0)
{
L.suivant = processus_courant;
processus_courant.état = bloque;
reordonnancement = vrai;
}
else
{
sem.K = sem.K-1;
}
enable_interrupt;
}
Operation V
function V (semaphore sem)
{
disable_interrupt;
sem.K = sem.K+1;
if (not L.vide)
{
processus_réveillé = L.tête;
processus_réveillé.état = prêt;
reordonnancement = vrai;
}
enable_interrupt;
}
Les cas traités par les Sémaphores
Producteur et consommateur
Lecteur et écrivain
Production Consommation
Producteur Consommateur
Ecriture Lecture
Producteur LecteurEcrivain
R
R
Producteur et consommateur
Producteur
créer un document D
verrouiller F
ajouter D à la fin de la file F
déverrouiller F
envoyer un signal au processus consommateur
Consommateur
répéter
attendre signal de F
tant que F n'est pas vide:
pour chaque élément E de F:
verrouiller F
imprimer E
supprimer E de F
déverrouiller F
fin pour
fin tant-que
attendre un signal d'un producteur
fin répéter
Algorithme de Peterson
... /* i veut entrer en S.C. */
Etat[i] = 1;
/* mais il laisse passer j, si j veut entrer */
tour = j;
/* attendre que Pj sorte de SC */
while ((Etat[j] == 1) && (tour == j)) {};
/* debut de S.C. */
...
…
/* fin de section critique */
Etat[i] = 0;
● Exclusion mutuelle
garantie,
● pas d’interblocage
● attente limitée
Réalisé par :
Fadwa Gmiden

Más contenido relacionado

La actualidad más candente

Cours système d'exploitation
Cours système d'exploitationCours système d'exploitation
Cours système d'exploitation
Amel Morchdi
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdf
MbarkiIsraa
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
Harun Mouad
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
El Aber Haythem
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 

La actualidad más candente (20)

Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Algebre relationelle
Algebre relationelleAlgebre relationelle
Algebre relationelle
 
Cours système d'exploitation
Cours système d'exploitationCours système d'exploitation
Cours système d'exploitation
 
UML
UMLUML
UML
 
Fiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiquesFiche TD sur les systèmes informatiques
Fiche TD sur les systèmes informatiques
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdf
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
 
Typologie des réseaux informatiques
Typologie des réseaux informatiquesTypologie des réseaux informatiques
Typologie des réseaux informatiques
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Tubes.pdf
Tubes.pdfTubes.pdf
Tubes.pdf
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 

Destacado

Tecnologia.5 0k
Tecnologia.5 0kTecnologia.5 0k
Tecnologia.5 0k
jafitza3
 
Actividad de exel
Actividad de exelActividad de exel
Actividad de exel
erlicia-94
 
Enfoques teoricos-metodologicos
Enfoques teoricos-metodologicosEnfoques teoricos-metodologicos
Enfoques teoricos-metodologicos
anai72
 
Introduction to oracle primavera
Introduction to oracle primaveraIntroduction to oracle primavera
Introduction to oracle primavera
Dsunte Wilson
 
CCNA Introducing Networks
CCNA Introducing NetworksCCNA Introducing Networks
CCNA Introducing Networks
Dsunte Wilson
 

Destacado (20)

Tecnologia.5 0k
Tecnologia.5 0kTecnologia.5 0k
Tecnologia.5 0k
 
Carina
CarinaCarina
Carina
 
El heraldo de Soria
El heraldo de SoriaEl heraldo de Soria
El heraldo de Soria
 
Les CMS Web
Les CMS WebLes CMS Web
Les CMS Web
 
Actividad de exel
Actividad de exelActividad de exel
Actividad de exel
 
Antecedentes históricos del giro conceptual
Antecedentes históricos del giro conceptualAntecedentes históricos del giro conceptual
Antecedentes históricos del giro conceptual
 
PMO and its value in supporting benefits realisation, workshop 3, Emma-Ruth A...
PMO and its value in supporting benefits realisation, workshop 3, Emma-Ruth A...PMO and its value in supporting benefits realisation, workshop 3, Emma-Ruth A...
PMO and its value in supporting benefits realisation, workshop 3, Emma-Ruth A...
 
Konekirjonta
KonekirjontaKonekirjonta
Konekirjonta
 
Escola josé henrique teixeira
Escola josé henrique teixeiraEscola josé henrique teixeira
Escola josé henrique teixeira
 
Windows10
Windows10Windows10
Windows10
 
Tibet, tibet
Tibet, tibetTibet, tibet
Tibet, tibet
 
Presentación 4 el currículum
Presentación 4 el currículumPresentación 4 el currículum
Presentación 4 el currículum
 
Sumerios
SumeriosSumerios
Sumerios
 
Temas vistos
Temas vistosTemas vistos
Temas vistos
 
B2B Value - Your salespeople are leaving money on the table
B2B Value - Your salespeople are leaving money on the tableB2B Value - Your salespeople are leaving money on the table
B2B Value - Your salespeople are leaving money on the table
 
Enfoques teoricos-metodologicos
Enfoques teoricos-metodologicosEnfoques teoricos-metodologicos
Enfoques teoricos-metodologicos
 
Lição 4 - Não farás imagens de esculturas
Lição 4 - Não farás imagens de esculturasLição 4 - Não farás imagens de esculturas
Lição 4 - Não farás imagens de esculturas
 
Introduction to oracle primavera
Introduction to oracle primaveraIntroduction to oracle primavera
Introduction to oracle primavera
 
ADP ReThink 2016: Evolution of Work
ADP ReThink 2016: Evolution of WorkADP ReThink 2016: Evolution of Work
ADP ReThink 2016: Evolution of Work
 
CCNA Introducing Networks
CCNA Introducing NetworksCCNA Introducing Networks
CCNA Introducing Networks
 

Similar a Synchronisation sous systeme linux

Gestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptxGestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptx
ssusercbaa22
 
Cour systeme d'exploitation sghaier anouar
Cour systeme d'exploitation sghaier anouarCour systeme d'exploitation sghaier anouar
Cour systeme d'exploitation sghaier anouar
Anouar Sghaier
 
System d\'exploitation
System d\'exploitationSystem d\'exploitation
System d\'exploitation
Thắng Thao
 
Introduction aux systèmes d-exploitation (2).ppt
Introduction aux systèmes d-exploitation (2).pptIntroduction aux systèmes d-exploitation (2).ppt
Introduction aux systèmes d-exploitation (2).ppt
MahdiHERMASSI1
 

Similar a Synchronisation sous systeme linux (20)

Gestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptxGestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptx
 
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdfcoursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf
coursystemedexploitaionsghaieranouar-150103105816-conversion-gate01.pdf
 
Cour systeme d'exploitation sghaier anouar
Cour systeme d'exploitation sghaier anouarCour systeme d'exploitation sghaier anouar
Cour systeme d'exploitation sghaier anouar
 
System d\'exploitation
System d\'exploitationSystem d\'exploitation
System d\'exploitation
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Simulation d’un système à temps partagé
Simulation d’un système à temps partagéSimulation d’un système à temps partagé
Simulation d’un système à temps partagé
 
Scripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptxScripting Linux avec Python partie1.pptx
Scripting Linux avec Python partie1.pptx
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
seim.pptx
seim.pptxseim.pptx
seim.pptx
 
Monkey & Monkey Runner
Monkey & Monkey RunnerMonkey & Monkey Runner
Monkey & Monkey Runner
 
Introduction aux systèmes d-exploitation (2).ppt
Introduction aux systèmes d-exploitation (2).pptIntroduction aux systèmes d-exploitation (2).ppt
Introduction aux systèmes d-exploitation (2).ppt
 
La gestion des processus
La gestion des processusLa gestion des processus
La gestion des processus
 
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
Amazon Web Services User Group - France - 3 mai 2010 - Optimisation et Automa...
 
Ysance conference - cloud computing - aws - 3 mai 2010
Ysance   conference - cloud computing - aws - 3 mai 2010Ysance   conference - cloud computing - aws - 3 mai 2010
Ysance conference - cloud computing - aws - 3 mai 2010
 
Drools
DroolsDrools
Drools
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Tiny os
Tiny osTiny os
Tiny os
 
Protocoles d'acces aleatoires
Protocoles d'acces aleatoiresProtocoles d'acces aleatoires
Protocoles d'acces aleatoires
 
sem2012-nagios.pdf
sem2012-nagios.pdfsem2012-nagios.pdf
sem2012-nagios.pdf
 

Más de Fadwa Gmiden (9)

Managing time and productivity
Managing time and productivityManaging time and productivity
Managing time and productivity
 
IoT in Smart Cities
IoT in Smart CitiesIoT in Smart Cities
IoT in Smart Cities
 
Flask
FlaskFlask
Flask
 
H2O
H2OH2O
H2O
 
Snort
SnortSnort
Snort
 
Metal as a Server
Metal as a ServerMetal as a Server
Metal as a Server
 
Web Development best practices
Web Development best practicesWeb Development best practices
Web Development best practices
 
Ubuntu presentation
Ubuntu presentationUbuntu presentation
Ubuntu presentation
 
Web essentials
Web essentials Web essentials
Web essentials
 

Synchronisation sous systeme linux

  • 2. Pourquoi synchroniser les processus ? Le nombre de ressources d'un système d'exploitation est limité. On trouve les processus en situation de concurrence (race) vis-à-vis des ressources. le But de la synchronisation est de contrôler la concurrence.
  • 3. Contrôler la concurrence ➔Organiser la compétition: ◆ Fournir des services de synchronisation indirecte par exclusion mutuelle : « Arbitrage », rôle du système. ◆ Ou au contraire, inclure la partie contrôle de concurrence au sein des programmes : « sans arbitrage » par le système. ➔Coordonner l’utilisation des ressources: ◆ Empêcher ou réparer des blocages ◆ Garantir l’équité ou absence de famine
  • 4. Section Critique Section Critique: Toute section de code (séquence d’instructions) manipulant de ressources communes (variables communes, …) Exclusion mutuelle ou Mutex: Il y a au plus une entité en section critique qui permet de réguler l’accès aux données.
  • 5. Exemple : accès à une base de données. Remarque: Plusieurs processus peuvent la lire simultanément.
  • 6. Outils de synchronisation Matériels : emploi de Test and Set qui est basée sur l’utilisation d’une instruction permettant de lire et d’écrire le contenu d’un mot mémoire de manière indivisible. inhibition des interruptions (possible seulement dans le cas d'un processus se déroulant en mode privilégié). Logiciels : sémaphores (outils logiciels mis à la disposition des utilisateurs par le système d'exploitation) algorithmes de synchronisation.
  • 7. Masquage d ’interruptions (Monoprocesseurs) Solution brutale: seule l’interruption générée par la fin du quantum de temps nous intéresse. Le comportement des processus est décrit par le schéma suivant : while(1) { < Section Restante > Masquer les interruptions ; < Section Critique > Démasquer les interruptions ; }
  • 8. Test And Set (Multiprocesseurs: instruction indivisible) Cette solution est basée sur l’utilisation d’une instruction permettant de lire et d’écrire le contenu d’un mot mémoire de manière indivisible. ➔Instruction minimale permettant de bâtir de la synchronisation ➔Instruction atomique (garantie atomique par le scheduler et le hard) Le drapeau est partagé par plusieurs processus, il est initialisée à zéro. tas registre, drapeau ⇔ {registre ← drapeau; drapeau ← 1;} EntreeMutex: tas registre, drapeau cmp registre 0 jnz EntreeMutex ret
  • 9. Inconvénients de cette technique : ➔Attente active (busy waiting) ➔On ne sait pas qui va prendre la main. On peut avoir une solution pour l’attente active par la mise en sommeil en utilisant sleep(), awake(). Efficace mais (trop) complexe à mettre en œuvre !
  • 10. Sémaphores Un sémaphore est un type de donnée abstraite. Le sémaphore a été inventé par Edsger Dijkstra. Les sémaphores fournissent la solution la plus courante pour le fameux problème du « dîner des philosophes » Un sémaphore Sem associé à une ressource R est un objet composé : d'un compteur Sem.Ka qui indique le nombre d'éléments disponibles ou le nombre de processus en attente sur R d'une file d'attente Sem.L où sont chaînés les processus en attente sur la ressource R. Les trois opérations prises en charge par un sémaphore sont Init, P et V.
  • 11. Les operations P (Proberen signifie tester): elle teste la disponibilité d’une ressource, et elle alloue immediatement au processus courant. V (Verhogen signifie incrementer): elle libère la ressource après que le processus a terminé de l'utiliser. Init: Pour initialiser le sémaphore. Cette opération est utilisée une seule et unique fois.
  • 12. Operations Init function Init (semaphore sem, int val) { disable_Interrupt; sem.K = val; enable_interrupt; }
  • 13. Operation P function P (semaphore sem) { disable_interrupt; if (sem.K == 0) { L.suivant = processus_courant; processus_courant.état = bloque; reordonnancement = vrai; } else { sem.K = sem.K-1; } enable_interrupt; }
  • 14. Operation V function V (semaphore sem) { disable_interrupt; sem.K = sem.K+1; if (not L.vide) { processus_réveillé = L.tête; processus_réveillé.état = prêt; reordonnancement = vrai; } enable_interrupt; }
  • 15. Les cas traités par les Sémaphores Producteur et consommateur Lecteur et écrivain Production Consommation Producteur Consommateur Ecriture Lecture Producteur LecteurEcrivain R R
  • 17. Producteur créer un document D verrouiller F ajouter D à la fin de la file F déverrouiller F envoyer un signal au processus consommateur
  • 18. Consommateur répéter attendre signal de F tant que F n'est pas vide: pour chaque élément E de F: verrouiller F imprimer E supprimer E de F déverrouiller F fin pour fin tant-que attendre un signal d'un producteur fin répéter
  • 19. Contrôle de La concurrence « sans arbitrage » par le systèm La concurrence entre le Processus Pi et Pj. Ces algorithmes sont introduits au sein de Pi.
  • 20. Algorithme de Dekker /* i veut entrer en S.C. */ Etat[i] = 1; while (Etat[j] == 1) { if (tour == j) { Etat[i] = 0; /* attendre que l'autre sorte de SC */ while(tour == j) { }; Etat[i] = 1; } } /* debut de section critique */ ... ... /* fin de section critique */ tour = j; • Exclusion mutuelle garantie • Pas d'interblocage
  • 21. Algorithme de Peterson ... /* i veut entrer en S.C. */ Etat[i] = 1; /* mais il laisse passer j, si j veut entrer */ tour = j; /* attendre que Pj sorte de SC */ while ((Etat[j] == 1) && (tour == j)) {}; /* debut de S.C. */ ... … /* fin de section critique */ Etat[i] = 0; ● Exclusion mutuelle garantie, ● pas d’interblocage ● attente limitée
  • 24. Pourquoi synchroniser les processus ? Le nombre de ressources d'un système d'exploitation est limité. On trouve les processus en situation de concurrence (race) vis-à-vis des ressources. le But de la synchronisation est de contrôler la concurrence.
  • 25. Contrôler la concurrence ➔Organiser la compétition: ◆ Fournir des services de synchronisation indirecte par exclusion mutuelle : « Arbitrage », rôle du système. ◆ Ou au contraire, inclure la partie contrôle de concurrence au sein des programmes : « sans arbitrage » par le système. ➔Coordonner l’utilisation des ressources: ◆ Empêcher ou réparer des blocages ◆ Garantir l’équité ou absence de famine
  • 26. Section Critique Section Critique: Toute section de code (séquence d’instructions) manipulant de ressources communes (variables communes, …) Exclusion mutuelle ou Mutex: Il y a au plus une entité en section critique qui permet de réguler l’accès aux données.
  • 27. Exemple : accès à une base de données. Remarque: Plusieurs processus peuvent la lire simultanément.
  • 28. Outils de synchronisation Matériels : emploi de Test and Set qui est basée sur l’utilisation d’une instruction permettant de lire et d’écrire le contenu d’un mot mémoire de manière indivisible. inhibition des interruptions (possible seulement dans le cas d'un processus se déroulant en mode privilégié). Logiciels : sémaphores (outils logiciels mis à la disposition des utilisateurs par le système d'exploitation) algorithmes de synchronisation.
  • 29. Masquage d ’interruptions (Monoprocesseurs) Solution brutale: seule l’interruption générée par la fin du quantum de temps nous intéresse. Le comportement des processus est décrit par le schéma suivant : while(1) { < Section Restante > Masquer les interruptions ; < Section Critique > Démasquer les interruptions ; }
  • 30. Test And Set (Multiprocesseurs: instruction indivisible) Cette solution est basée sur l’utilisation d’une instruction permettant de lire et d’écrire le contenu d’un mot mémoire de manière indivisible. ➔Instruction minimale permettant de bâtir de la synchronisation ➔Instruction atomique (garantie atomique par le scheduler et le hard) Le drapeau est partagé par plusieurs processus, il est initialisée à zéro. tas registre, drapeau ⇔ {registre ← drapeau; drapeau ← 1;} EntreeMutex: tas registre, drapeau cmp registre 0 jnz EntreeMutex ret
  • 31. Inconvénients de cette technique : ➔Attente active (busy waiting) ➔On ne sait pas qui va prendre la main. On peut avoir une solution pour l’attente active par la mise en sommeil en utilisant sleep(), awake(). Efficace mais (trop) complexe à mettre en œuvre !
  • 32. Sémaphores Un sémaphore est un type de donnée abstraite. Le sémaphore a été inventé par Edsger Dijkstra. Les sémaphores fournissent la solution la plus courante pour le fameux problème du « dîner des philosophes » Un sémaphore Sem associé à une ressource R est un objet composé : d'un compteur Sem.Ka qui indique le nombre d'éléments disponibles ou le nombre de processus en attente sur R d'une file d'attente Sem.L où sont chaînés les processus en attente sur la ressource R. Les trois opérations prises en charge par un sémaphore sont Init, P et V.
  • 33. Les operations P (Proberen signifie tester): elle teste la disponibilité d’une ressource, et elle alloue immediatement au processus courant. V (Verhogen signifie incrementer): elle libère la ressource après que le processus a terminé de l'utiliser. Init: Pour initialiser le sémaphore. Cette opération est utilisée une seule et unique fois.
  • 34. Operations Init function Init (semaphore sem, int val) { disable_Interrupt; sem.K = val; enable_interrupt; }
  • 35. Operation P function P (semaphore sem) { disable_interrupt; if (sem.K == 0) { L.suivant = processus_courant; processus_courant.état = bloque; reordonnancement = vrai; } else { sem.K = sem.K-1; } enable_interrupt; }
  • 36. Operation V function V (semaphore sem) { disable_interrupt; sem.K = sem.K+1; if (not L.vide) { processus_réveillé = L.tête; processus_réveillé.état = prêt; reordonnancement = vrai; } enable_interrupt; }
  • 37. Les cas traités par les Sémaphores Producteur et consommateur Lecteur et écrivain Production Consommation Producteur Consommateur Ecriture Lecture Producteur LecteurEcrivain R R
  • 39. Producteur créer un document D verrouiller F ajouter D à la fin de la file F déverrouiller F envoyer un signal au processus consommateur
  • 40. Consommateur répéter attendre signal de F tant que F n'est pas vide: pour chaque élément E de F: verrouiller F imprimer E supprimer E de F déverrouiller F fin pour fin tant-que attendre un signal d'un producteur fin répéter
  • 41. Algorithme de Peterson ... /* i veut entrer en S.C. */ Etat[i] = 1; /* mais il laisse passer j, si j veut entrer */ tour = j; /* attendre que Pj sorte de SC */ while ((Etat[j] == 1) && (tour == j)) {}; /* debut de S.C. */ ... … /* fin de section critique */ Etat[i] = 0; ● Exclusion mutuelle garantie, ● pas d’interblocage ● attente limitée