SlideShare une entreprise Scribd logo
Synchronisation des Processus
Sections critiques, Sémaphores
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 1
Systèmes d’Exploitation
2ème Année (GL-RT-IIA-IMI)
Présentation
• Sur une plateforme multiprogrammée, les processus ont généralement
besoin de communiquer pour compléter leurs tâches.
• Un processus est dit indépendant, s’il n’affecte pas les autres processus ou
ne peut pas être affecté par eux.
§ Un processus qui ne partage pas de données avec d’autres processus est
indépendant.
• Un processus est dit coopératif s’il peut affecter les autres processus en
cours d’exécution ou être affecté par eux.
§ Un processus qui partage des données avec d’autres processus est un
processus coopératif.
• Les données partagées par les processus coopératifs se trouvent en
mémoire principale ou en mémoire secondaire dans un fichier
§ Il y a alors risque d’incohérence des données.
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 2
Synchronisation des Processus
Présentation
• L’exécution d’un processus peut être affectée par l’exécution des
autres processus ou il peut affecter lui-même leurs exécutions
• La communication interprocessus est assurée généralement via des
données partagées qui peuvent se trouver dans la mémoire principale
ou dans un fichier.
§ Les accès concurrents (simultanés) à des données partagées peuvent
conduire à des incohérences dans les résultats obtenus.
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 3
Synchronisation des Processus
Exemple Illustratif
Exemple : la spoule d’impression
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 4
Synchronisation des Processus
Processus A
Processus B
… 3 2 1 0
f1f2… f0 Répertoire de spoule
Démon d’impression
Variable partagée in=3
Schéma d’exécution:
A : lire in,
next_free_slot = 3
Préemption: la CPU bascule vers le processus B
B : lire in,
next_free_slot = 3,
entrée3 = fichierB,
in = 4
Problème: le fichierB ne sera jamais imprimé
A : entrée3 = fichierA,
in = 4
lire in,
next_free_slot = in
Entrée[next_free_slot] = fichier
in = in +1

Recommandé pour vous

Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...

Ce travail s’inscrit dans le cadre du projet de fin d’études pour l’obtention de diplôme de licence en science et technologies de l'information et de la communication. Il vise à réaliser une application web pour l’évaluation des fournisseurs tenant compte les chiffres d'affaires, la condition des livraisons par rapport aux commandes ainsi que les non conformités. Pour ce faire l'application associe des critères quantitatifs pour calculer un taux de respect des engagements moyennant une extraction des données du logiciel de gestion à des critères qualitatifs pour évaluer les aspects affaire et technique des fournisseurs.

Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine

c'est mon rapport de stage durant l’hiver 2015

initiationmohamed aminemahdia
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
phpmysqlkhadim mbacke
Sections Critiques et Exclusion Mutuelle
• Le problème précédent est dû aux conflits d’accès à la même
ressource.
• La partie du programme à partir de laquelle on accède à la ressource
partagée est appelée section (région) critique.
• Solution:
§ L’exclusion mutuelle est une méthode qui assure qu’un seul processus est
autorisé d’accéder à une ressource partagée; les autres processus seront
exclus de la même activité.
Slide 5
Synchronisation des Processus
A
B
t1 t2 t3 t4
A entre dans sa section critique
B tente d’entrer dans sa section
critique
A quitte sa section critique
B entre dans sa section critique
B quitte sa section critique
Dr. Ghada GASMI- Dr. Lilia SFAXI
Sections critiques et exclusion mutuelle
• Quatre conditions doivent être vérifiées pour assurer une bonne
synchronisation des processus :
1. Exclusion Mutuelle: Deux processus ne doivent pas se trouver
simultanément dans leurs sections critiques.
2. Progression : Aucun processus à l’extérieur de sa section critique ne
doit bloquer les autres processus.
3. Attente bornée : Aucun processus ne doit attendre indéfiniment
pour entrer dans sa section critique.
4. Aucune hypothèse : Il ne faut pas faire d’hypothèse quant à la
vitesse ou le nombre de processeurs
Synchronisation des Processus
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 6
EXCLUSION MUTUELLE PAR ATTENTE ACTIVE
Synchronisation des Processus
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 7
Approche de Synchronisation
• Un processus désirant entrer dans une section critique doit être mis en
attente jusqu’a ce que la section critique devienne libre.
• Un processus quittant la section critique doit le signaler aux autres
processus.
• L’attente peut être :
§ Active : la procédure Entrer_Section_Critique est une boucle dont la condition est
un test qui porte sur des variables indiquant la présence ou non d’un processus
en Section critique.
§ Non active : le processus passe dans l’état endormi et ne sera réveillé que
lorsqu’il sera autorisé à entrer en section critique.
Slide 8
Exclusion Mutuelle par Attente Active
Algorithme d’accès à une section critique :
Entrer_Section_Critique () /* attente si SC non libre */
Section_Critique() /* un seul processus en SC */
Quitter_Section_Critique()
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)

Ce cours présente les notions de base de l'appel de procédure à distance.

rpc
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)

Présentations des architectures 3-tiers

client legerclient lourdarchitecture 3-tiers
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA

Depuis son origine, Java fournit plusieurs classes et interfaces destinées à la programmation réseau, à cause de son API qui a été bien conçu et riche d'une côté, et traité la plupart des interfaces, protocoles et plateformes d'autres côté; la programmation des applications réseaux en JAVA est devenue un choix primordial.

javatcpclient
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 1: Masquage des interruptions
§ Lorsqu’un processus entre en section critique il doit masquer
les interruptions.
§ Pas de commutation de contexte
§ Lorsqu’ il quitte sa section critique il doit restaurer les
interruptions.
§ C’est une solution matérielle qui permet de résoudre
complètement le problème. Mais elle est dangereuse en mode
utilisateur s’il oublie de restaurer les interruptions.
Slide 9
Exclusion Mutuelle par Attente Active
Dr. Ghada GASMI- Dr. Lilia SFAXI
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 2: Variable de verrouillage
§ Un verrou est variable binaire partagée qui indique la présence d’un
processus en section critique.
o si verrou=0 alors section critique libre
o si verrou=1 alors section critique occupée
§ Cette solution ne garantit pas l’exclusion mutuelle car le verrou est une
variable partagée qui peut constituer aussi une section critique.
Slide 10
Exclusion Mutuelle par Attente Active
void entrer_Section_Critique ()
{
while (verrou == 1) ; /* attente active */
verrou=1 ;
}
void quitter_Section_Critique ()
{
verrou=0 ;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 2-bis : Variable de verrou en matériel: TSL (Test and Set Lock)
§ Aussi appelée TAS pour Test And Set.
§ Est une instruction indivisible: réalisée une seule fois par le matériel.
o (1) Lit le contenu de LOCK dans REGISTRE //(1) et (2) sont indivisibles
o (2) Ecrit 1 dans adresse mémoire LOCK // (TSL instruction atomique)
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 11
Exclusion Mutuelle par Attente Active
|pseudo-assembleur
entrer_Section_Critique:
TSL REGISTER, LOCK | copie lock dans reg et la définit à 1
CMP REGISTER, #0 | lock etait-elle à 0
JNE entrer_SC | si elle était pas à 0, boucle
RET | retourne à appelant, entre dans SC
quitter_Section_Critique:
MOVE LOCK, #0 | stocke un 0 dans lock
RET | retourne à l’appelant
TSL REGISTER, LOCK
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 3: Alternance stricte
§ Tour est une variable partagée qui indique le numéro de processus autorisé
à entrer en section critique.
§ L’alternance stricte est une solution simple et facile a implémenter.
§ Mais, un processus qui possède Tour peut ne pas être intéressé
immédiatement par la section critique et en même temps il bloque un autre
processus qui la demande.
§ Problème de Progression
Slide 12
Exclusion Mutuelle par Attente Active
void entrer_Section_Critique (int process)
{
while (Tour!=process) ; /* attente active */
}
void quitter_Section_Critique ()
{
Tour = (Tour+1) %N ;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum

Méthode d'Agile: Scrum

scrumagileméthode
Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)

Support du cours - Systèmes d'exploitation 2 (linux) Niveau : Licence informatique - L2 Auteur : Faycel CHAOUA Bibliothèque ISET Kélibia [SCI9 : 02-01-2018] Licence : CC BY-NC-SA [https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr]

courslicencesupport
Java RMI
Java RMIJava RMI
Java RMI

Présentation des composants de l'architecture RMI

rpcrmi
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 4: Alternance stricte v2
§ Interested est un tableau de booléens partagé ayant une case pour chaque
processus qui veut entrer en SC
§ Initialement, toutes les valeurs du tableau sont à false
§ Quand un processus exécute entrer_SC:
o Il met sa variable interested à true
o Il attend si l’autre processus est intéressé
§ Problème d’interblocage
o Excès de courtoisie!
Slide 13
Exclusion Mutuelle par Attente Active
void entrer_Section_Critique (int process)
{
interested[process] = true;
while (interested[1-process]) ; /* attente active */
}
void quitter_Section_Critique (int process)
{
interested[process]= false;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Solutions de l’Exclusion Mutuelle par Attente Active
• Solution 5: Alternance stricte v2
§ Cette solution combine les deux version de l’alternance stricte
§ Cette solution assure les quatre conditions de bonne synchronisation.
§ Mais, le processus qui attend sa section critique consomme du temps
processeur inutilement (attente active).
Slide 14
Exclusion Mutuelle par Attente Active
#define FAUX 0
#define VRAI 1
#define N 2
int tour ; /* à qui le tour */
int interesse[N] ; /* initialisé à FAUX */
void entrer_Section_Critique (int process)
{
int autre ;
(1) autre = 1-process ;
(2) interesse[process]=VRAI; /* process est intéressé */
(3) tour = process ; /* demander le tour */
while (tour == process && interesse[autre] == VRAI) ;
} (A) (B)
Void quitter_Section_Critique (int process)
{
(4) interesse[process]=FAUX ;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Peterson N-processus
#define FALSE 0
#define N 10 /* First process is indicated with 1, not 0 */
int turn[N];
int stage[N + 1];
void enterRegion(int process)
{
int i, j;
for (i = 1; i <= N - 1; i++) {
stage[process] = i;
turn[i] = process;
for ( j = 1; j <= N; j++) {
if ( j == process)
continue;
while (stage[ j] >= i && turn[i] == process) ;
}
}
}
Exclusion Mutuelle par Attente Active
void leaveRegion(int
process)
{
stage[process] = FALSE;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 15
EXCLUSION MUTUELLE SANS ATTENTE ACTIVE
Synchronisation des Processus
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 16

Recommandé pour vous

TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction

Correction des exercices sur le diagramme d'état

umldiagrammeetat
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis

Ce cours introduit les systèmes répartis. Il met l'accent sur les propriétés, les problèmes et les modèles de répartition.

systèmes répartis
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...

Ce projet vise à développer un système d’information des étudiants du département informatique. Mais, pour aboutir à cette fin, nous allons tout d’abord effectué une étude conceptuelle de l’application. Cette dernière nous permettra, en effet, d’accéder facilement à la réalisation de l’application en organisant les idées et en structurant le processus de codage suivant des diagrammes. L’application a été implémenté par diverses technologies en se basant sur l’étude conceptuelle. Le système de gestion de base de données choisi fut MySQL. L’application a été implémenté avec Laravel5 et Boostrap3, qui sont des frameworks permettant de créer rapidement et efficacement un site web complexe et flexible.

laravel5système d’information des étudiantsboostrap3
Exclusion mutuelle sans attente active
• L’idée est qu’un processus qui ne peut pas entrer en section critique
passe à l’état bloqué au lieu de consommer le temps processeur
inutilement. Il sera réveillé lorsqu’il pourra y entrer.
• Les primitives Sleep et Wakeup:
§ Le système d’exploitation offre deux appels système:
1. Sleep (dormir) qui bloque le processus appelant.
2. Wakeup (réveiller) qui réveille le processus donné en argument.
Slide 17
Exclusion Mutuelle Sans Attente Active
Dr. Ghada GASMI- Dr. Lilia SFAXI
Producteur-Consommateur
• Application des primitives Sleep et Wakeup au modèle Producteur
Consommateur:
• Deux processus (le producteur et le consommateur) coopèrent en
partageant un même tampon:
• Le producteur produit des objets qu’il dépose dans le tampon.
• Le consommateur retire des objets du tampon pour les consommer.
Slide 18
Exclusion Mutuelle Sans Attente Active
Producteur
f1f2… f0 Tampon
Variable partagée compteur=3 Consommateur
Dr. Ghada GASMI- Dr. Lilia SFAXI
Producteur-Consommateur
Slide 19
Exclusion Mutuelle Sans Attente Active
#define N 100 /* taille du tampon */
int compteur = 0 ; /* objets dans tampon */
void producteur () {
while (TRUE)
{
produire_objet() ;
if (compteur == N) sleep () ;
mettre_objet() ;
compteur = compteur + 1 ;
if (compteur == 1)
wakeup(consommateur) ;
}
}
void consommateur () {
while (TRUE)
{
if (compteur == 0)
sleep() ;
retirer_objet()
compteur = compteur – 1 ;
if (compteur == N-1)
wakeup (producteur) ;
consommer_objet(…) ;
}
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Producteur-Consommateur
• Analyse de cette solution :
§ L’accès à la variable compteur n’est pas protégé, ce qui peut
entraîner des incohérences dans les valeurs prises par cette
variable.
§ Réveils perdus :
o c’est le principal défaut de ce mécanisme
o Un signal wakeup envoyé à un processus qui ne dort pas (encore)
est perdu.
‣ Considérer le scénario où une préemption a lieu entre le if et le sleep
du producteur, par exemple.
Slide 20
Exclusion Mutuelle Sans Attente Active
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads

POSIX, ordonnancement , synchronisation,

Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche

Représentation sous forme de graphe d'états Global Problem Solver Algorithmes de Recherche Aveugles Algorithmes de Recherche Informés Depth First Search Breadth First Search Best First Search A, A* Fonction heuristique, Fonction heuristique admissible

intelligence artificielle
UML
UMLUML
UML

UML diagramme de classes

Sémaphores
• Pour remédier au problème es réveils en attente (les wakeup perdus),
l’idée est d’employé une variable entière appelée: Sémaphore à laquelle
est associée une file d’attente des processus bloqués.
§ sémaphore=0 à aucun réveil n’est mémorisé
§ sémaphore>0 à un ou plusieurs réveils sont en attente
• Un sémaphore s est manipulé par les opérations atomiques suivantes:
1. down(s) :
o if (val(s)==0) sleep();
o val(s)--;
2. up(s) :
o wakeup();
o s++;
Slide 21
Exclusion Mutuelle Sans Attente Active
Dr. Ghada GASMI- Dr. Lilia SFAXI
Sémaphores
• Pour assurer l’exclusion mutuelle un sémaphore peut être programmé
de la manière suivante :
Slide 22
Exclusion Mutuelle Sans Attente Active
initialisation mutex = 1 /* nombre de processus autorisés à entrer
simultanément dans la section critique */
down (mutex)
<section_critique>
up (mutex)
Nom du sémaphore
Dr. Ghada GASMI- Dr. Lilia SFAXI
Sémaphores
• Application au modèle Producteur / Consommateur :
• Trois sémaphores sont nécessaires:
§ plein: compte le nombre de places occupées
§ vide : compte le nombre de places libres
§ mutex : assure que le producteur et le consommateur n'accèdent jamais en
même moment à la mémoire tampon.
Slide 23
Exclusion Mutuelle Sans Attente Active
Dr. Ghada GASMI- Dr. Lilia SFAXI
Producteur/Consommateur avec Sémaphores
#define N 100 // taille du tampon
semaphore mutex 1 ; // contrôle d’accès section critique
semaphore vide N; // contrôle les emplacements vide
semaphore plein 0; // contrôle les emplacements plein
Slide 24
Exclusion Mutuelle Sans Attente Active
void producteur () {
while (TRUE){
produire_objet() ;
down(vide);
down(mutex);
mettre_objet() ; //SC
up(mutex);
up(plein)
}
}
void consommateur () {
while (TRUE){
down(plein);
down(mutex);
retirer_objet() //SC
up(mutex);
up(vide);
consommer_objet(…) ;
}
}
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Gestion d’une agence de voyage routière (Blondel Seumo)
Gestion d’une  agence  de  voyage  routière (Blondel Seumo)Gestion d’une  agence  de  voyage  routière (Blondel Seumo)
Gestion d’une agence de voyage routière (Blondel Seumo)

Le thème soumis à notre étude dans le cadre du stage académique porte sur la « Gestion d’une agence de voyage routière ». L’application ainsi réalisée possède plusieurs modules (voyage, clientèle, personnel, service, planification, discipline, statistique et utilisateur) qui prennent en compte deux aspects : L’aspect sécurité qui donne la possibilité au CA de créer des utilisateurs (leur login étant ainsi crypté) et de les affecter à un groupe utilisateur. De même l’aspect gestion donne la possibilité de générer et d’imprimer les bordereaux de voyage, de lister le personnel de l’agence, de donner le nombre de billets vendus et les montants encaissés pour chaque voyage, de donner la liste des absences au service, le montant encaissé en une journée, et le montant obtenu pour les locations, de savoir quel est le mois où on a le plus gagné dans les voyages et pourquoi, de donner le nombre de clients ayant effectué une location et d’identifier par la même occasion ceux qui font beaucoup de locations pour ainsi leur faire un rabais. La possibilité d’avoir le pourcentage des employés par type de congés pour une année, et le pourcentage des employés ayant pris un congé ces cinq dernières années ; de dire quels sont les employés les plus sanctionnés. Pour parvenir aux résultats, plusieurs outils ont été mis à profit.

gestionseumo blondelseumo ntsiepdjap blondel
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions

Cours UML diagramme d'états transitions

diagramme d'étatsumlévènement externe
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment

This document discusses deployment processes and best practices. It defines deployment as the activities that make a software system available for use and involve moving approved releases to test and production environments. The document outlines deployment workflows involving development, staging, and production environments. It also discusses concepts like continuous integration, continuous delivery, continuous deployment, and DevOps practices for automating deployment processes.

software engineeringdeploymentdevops
EXERCICES
Synchronisation des Processus
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 25
Ex1: Synchronisation et Ordonnancement
• Q1 : Round robin ( tourniquet) avec q=5ms
• Q2 : Round robin ( tourniquet) avec q=5ms +
Synchronisation Peterson
Slide 26
Exercices
Prêt à
l’instant t=
Durée
d’exécution
P0 0 ms 23 ms
P1 1 ms 17 ms
P2 2 ms 15 ms
Durée
d’exécution
SR+SC
Date d’entrée en
section critique t=
P0 23 ms 3 ms
P1 17 ms 7 ms
P2 15 ms X
Prêt à
l’instant t=
Durée d’exécution en
section critique
P0 0 ms 13ms
P1 1 ms 10 ms
P2 2 ms X
Dr. Ghada GASMI- Dr. Lilia SFAXI
Prêt à
l’instant t=
Durée
d’exécution
P0 0 ms 23 ms
P1 1 ms 17 ms
P2 2 ms 15 ms
0 5
P0
P1
P2
10 15 20 25 30 35 40
40 45 50 52 55
Ex1: Synchronisation et Ordonnancement
• Round robin ( tourniquet) avec q=5ms
Exercices
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 27
0
P0
P1
P2
10 15 30
40 45 50 58
Prêt à
l’instant t=
Durée
d’exécution
Date d’entrée en
section critique t=
Durée d’exécution en
section critique
P0 0 ms 23 ms 3 ms 12 ms
P1 1 ms 17 ms 7 ms 10 ms
P2 2 ms 15 ms X X
SC AA
5 20 25 35 40
55
Ex1: Synchronisation et Ordonnancement
• Round robin ( tourniquet) avec q=5ms
• Peterson è Attente active
Exercices
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 28

Recommandé pour vous

eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA

Notion de WOA, relation et différence avec SOA

web oriented architecturewoa
Software Engineering - chp7- tests
Software Engineering - chp7- testsSoftware Engineering - chp7- tests
Software Engineering - chp7- tests

The document discusses different types of software testing techniques, including black-box testing and white-box testing. Black-box testing involves testing the software based on its specifications without viewing the source code. White-box testing tests the internal structure of the code by viewing the source code. The document outlines steps for black-box testing such as identifying testable features, selecting test data, and specifying test cases. It also discusses model-based testing and using models like finite state machines to generate test cases from specifications. Code coverage criteria for white-box testing like statement coverage and branch coverage are also introduced.

blackbox testingsoftware testingsoftware engineering
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction

Dr. Lilia Sfaxi is giving a presentation on software engineering. She discusses her background and qualifications. The presentation covers key concepts in software engineering including definitions, the importance of software, attributes of good software, and challenges. It also provides an overview of the software development lifecycle (SDLC) including common steps like requirements analysis, design, implementation, testing, and release. The goal is to introduce attendees to fundamental aspects of software engineering.

software engineeringintroduction
Ex1: Synchronisation et Ordonnancement
• Round robin ( tourniquet) avec q=5ms
• Sommeil et activation
Exercices
0 5
P0
P1
P2
10 15 20 22 27 32 37
40 42 47 5552
Prêt à
l’instant t=
Durée
d’exécution
Date d’entrée en
section critique t=
Durée d’exécution en
section critique
P0 0 ms 23 ms 3 ms 12 ms
P1 1 ms 17 ms 7 ms 10 ms
P2 2 ms 15 ms X X
SC
40
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 29
Ex2: Lecteurs/Rédacteur
• Une base de données peut être accessible par un seul rédacteur ou N
lecteurs en même temps
§ Exclusion mutuelle entre le rédacteur et les N lecteurs
§ Donner le pseudo code d’un processus lecteur et celui du processus
rédacteur
Slide 30
Exercices
Base	de	données
Dr. Ghada GASMI- Dr. Lilia SFAXI
Ex2: Lecteurs/Rédacteur
Semaphore mutex 1 // contrôle l’accés à nb_lect
Semaphore db 1 // contrôle l’accés à la base de données
int nb_lect = 0 ; // var partagées entre lecteurs pour compter le nombre de lecteurs
// accédant actuellement à la BD
//lecteur
void lecture(){
while (true) { //boucle sans fin
lire_la_BD(); //accés à la BD
utiliser_données (); //Section restante
}
}
//redacteur
void ecriture(){
while (true) {
créer_données ();
ecrire_dans_la_BD
}
}
Slide 31
Exercices
Dr. Ghada GASMI- Dr. Lilia SFAXI
Ex2: Lecteurs/Rédacteur
Semaphore mutex 1 // contrôle l’accés à nb_lect
Semaphore db 1 // contrôle l’accés à la base de données
int nb_lect = 0 ; // var partagées entre lecteurs pour
// compter le nombre de lecteurs accédant
// actuellement à la BD
//lecteur
void lecture(){
while (true) { //boucle sans fin
down (mutex); // la modif de la var. partagée nb_lect
nb_lect ++; // est une section critique entre lecteurs
if (nb_lect == 1) down (db); //si le premier lecteur
up(mutex); // libère l’accés exclusif à nb_lect
lire_la_BD(); //accés à la BD
down(mutex);
nb_lect --;
if (nb_lect == 0) up (db); //si le dernier lecteur
up (mutex)
utiliser_données (); //Section restante
}
}
Slide 32
Exercices
void ecriture(){
while (true) { //boucle sans fin
créer_données (); //Sec.Rest.
down (db);
ecrire_dans_la_BD(); //accés BD
up (db);
}
}
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque

Disque magnétique, algorithmes de lecture

disque magnétiquesystèmes d'exploitation
Software Engineering - chp4- design patterns
Software Engineering - chp4- design patternsSoftware Engineering - chp4- design patterns
Software Engineering - chp4- design patterns

This document provides an overview of design patterns including their definition, utility, essential elements, and examples. It discusses creational patterns like singleton, factory, and builder. Structural patterns covered include adapter, proxy, and composite. Behavioral patterns like command and iterator are also introduced. The document is presented as a slideshow by Dr. Lilia Sfaxi on design patterns for software engineering.

software engineeringdesign patterns
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture

The document discusses software architecture and defines it as the fundamental organization of a system embodied by its components, their relationships, and design principles. It provides examples of common software architecture structures like modules and components, distribution, and multiple views. Common architectural patterns are also presented, including layers, client-server, master-slave, pipe-filter, and MVC, with examples to illustrate each pattern. The role of the software architect is discussed as well as why architecture is important for systems that are large-scale, distributed, and secure.

software architecturessoftware engineering
Ex3: Coiffeur endormi
• Un coiffeur possède un salon avec un siège de coiffeur et une salle
d’attente comportant un nombre fixe F de fauteuils.
• S’il n’y a pas de client, le coiffeur se repose sur son siège de coiffeur.
• Si un client arrive et trouve le coiffeur endormi, il le réveille, s’assoit
sur le siège du coiffeur et attend la fin de sa coupe de cheveux.
• Si le coiffeur est occupé lorsqu’un client arrive, le client s’assoit et
s’endort sur une des chaises de la salle d’attente ; si la salle d’attente
est pleine, le client rentre chez lui.
• Lorsque le coiffeur a terminé une coupe de cheveux, il fait sortir son
client courant et va réveiller un des clients de la salle d’attente.
• Si la salle d’attente est vide, il se rendort sur son siège jusqu’à ce
qu’un nouveau client arrive.
Slide 33
Exercices
Dr. Ghada GASMI- Dr. Lilia SFAXI
Ex3: Coiffeur endormi
• Résoudre le pb en évitant les conditions de concurrence
• Utilisation de 3 sémaphores et un compteur
§ Semaphore Clients 0;
o //bloque le coiffeur s’il n’y a pas de clients
§ Semaphore Mutex 1;
o //accés exclusif à la zone critique
§ Semaphore Coiffeurs 0;
o //bloque le client si le coiffeur est occupé avec un //autre client
§ Int Attente = 0 ;
o //Le nombre de clients en attente
Slide 34
Exercices
Dr. Ghada GASMI- Dr. Lilia SFAXI
Ex3: Coiffeur endormi
Semaphore Clients 0;
Semaphore Mutex 1;
Semaphore Coiffeurs 0;
Int Attente = 0 ;
//Coiffeur
void coiffeur() {
while(1){
down(Clients);
down(Mutex);
Attente = attente – 1;
up(Coiffeurs);
up(Mutex);
Couper_cheveux();
}
}
Slide 35
Exercices
//Client
void client() {
down(Mutex)
if (Attente < Chaises) {
Attente = attente + 1
up(Clients)
up(Mutex)
down(Coiffeurs)
Obtenir_coupe
}
else{
up(Mutex)
}
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Réfléchissons !
• Soient les deux processus P1 et P2 suivants. Ils se partagent deux
sémaphores S1 et S2 initialisés à 0.
• Quelle synchronisation a-t-on imposée sur les exécutions des procédures
A1, A2, B1 et B2 (càd, quel ordre d’exécution) ?
Slide 36
Exercices
P2 {
procedure A2 ;
Up(S1) ;
Down(S2) ;
procedure B2 ;
}
Semaphore S1 0
Semaphore S2 0
P1 {
procedure A1 ;
Up(S2) ;
Down(S1) ;
procedure B1 ;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI

Recommandé pour vous

Software Engineering - chp3- design
Software Engineering - chp3- designSoftware Engineering - chp3- design
Software Engineering - chp3- design

The document discusses software design concepts and the Unified Modeling Language (UML). It introduces software design as translating requirements into a blueprint for constructing software. Key concepts discussed include abstraction, architecture, patterns, modularity, information hiding, and refinement. The document also explains UML's use for visual modeling through diagrams like use case diagrams, class diagrams, and state machine diagrams. It describes how UML can be used across the software development lifecycle.

software engineeringumlsoftware design
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur

développement côté serveur

server-sidebaasmbaas
Software Engineering - chp6- development phase
Software Engineering - chp6- development phaseSoftware Engineering - chp6- development phase
Software Engineering - chp6- development phase

The document discusses the development phase of software engineering. It explains that in this phase, the system developer takes the logical design from the previous phase and transforms it into executable code. Individual components are developed and tested, including building databases, integrating legacy software, and finalizing test cases and specifications. The development phase delivers a working system, integration documentation, test reports, and implementation plans. Key roles in this phase include the project manager, development team, and stakeholders. The document also provides an overview of common programming paradigms like functional, imperative, logic, and object-oriented.

software engineeringdevelopment phaseimplementation
Ex4: Barrière de synchronisation
• Les Ai s’exécutent toujours avant les Bi, quelque soit l’ordre de l’exécution des
processus P1 et P2
• Ex: Ecrire le code à fin d’imposer la même synchronisation pour N processus en
utilisant :
§ N sémaphores
§ 2 sémaphores et un compteur
Slide 37
Exercices
P2 {
procedure A2 ;
Up(S1) ;
Down(S2) ;
procedure B2 ;
}
Semaphore S1 0
Semaphore S2 0
P1 {
procedure A1 ;
Up(S2) ;
Down(S1) ;
procedure B1 ;
}
Dr. Ghada GASMI- Dr. Lilia SFAXI
Ex5: Dîner des Philosophes
• Cinq philosophes se trouvent autour d'une table ;
• Chacun des philosophes a devant lui un plat de spaghetti ;
• A gauche de chaque assiette se trouve une fourchette
• Un philosophe n'a que trois états possibles :
§ penser pendant un temps indéterminé ;
§ être affamé (pendant un temps déterminé et fini sinon il y a famine) ;
§ manger pendant un temps déterminé et fini.
• Des contraintes extérieures s'imposent à cette situation :
§ quand un philosophe a faim, il va se mettre dans l'état « affamé » et attendre que les
fourchettes soient libres ;
§ pour manger, un philosophe a besoin de deux fourchettes : celle qui se trouve à sa
droite, et celle qui se trouve à sa gauche ;
§ si un philosophe n'arrive pas à s'emparer d'une fourchette, il reste affamé pendant un
temps déterminé, en attendant de renouveler sa tentative.
• Le problème consiste à trouver un ordonnancement des philosophes tel qu'ils
puissent tous manger, chacun à leur tour, sans provoquer d’interblocage!
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 38
Exercices
Ex5: Dîner des Philosophes
Const int N = 5; //nbr de
philosophes
Semaphore s[N]={0,0,0,0,0};
Semaphore Mutex=1;
int etat[N]= {PENSE,PENSE,…} ;
//Philosophe
void philosophe(int i) {
while(1){
penser();
prendre_fourchettes(i);
manger();
poser_fourchettes(i);
}
}
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 39
Exercices
vo i d p re n d re _fo u rch ette s ( i n t i ) {
d ow n (m u tex) ;
et at [ i ] = FA I M ;
i f (et at [ i + 1 % N] = = M A NGE | | et at [ i - 1 % N] = = M A NGE ) {
u p (m u tex) ;
d ow n ( s [ i ]) ;
} e l s e {
et at [ i ] = M A NGE ;
u p (m u tex) ;
}
}
vo i d p o s e r_fo u rch ette s ( i n t i ) {
d ow n (m u tex) ;
i f (et at [ i + 1 % N] = = FA I M & & et at [ i + 2 % N] ! = M A NGE ) {
et at [ i + 1 % N] = M A NGE ;
u p ( s [ i + 1 % N ]) ;
}
i f (et at [ i - 1 % N] = = FA I M & & et at [ i - 2 % N] ! = M A NGE ) {
et at [ i - 1 % N] = M A NGE ;
u p ( s [ i - 1 % N]) ;
}
u p (m u tex) ;
}
Références
Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 40
• Wassim Youssef, Les systèmes d’exploitation, Cours ISI, 2015

Recommandé pour vous

eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services

composition des services: orchestration et chorégraphie

orchestrationcomposition de serviceschoregraphie
Software Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specificationSoftware Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specification

The document discusses best practices for writing a requirements specification (SRS). It begins by explaining what an SRS is, its major goals which include providing feedback to customers, decomposing problems, and serving as input for design. It describes the typical contents of an SRS based on the IEEE 830 standard, including functionality, interfaces, performance, attributes and design constraints. It then provides tips for writing high quality requirements, such as using simple language, avoiding ambiguities, ensuring requirements are complete, consistent, ranked by importance and verifiable. The document concludes with additional best practices like using templates and examples, maintaining consistency in naming, addressing references correctly, and designing for reuse.

requirement specificationsoftware engineering
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologies

The document discusses different software development methodologies. It begins with an introduction to software development methodologies and describes different software development models including linear, incremental, iterative, adaptive and extreme models. It then discusses specific methodologies in more detail, including Waterfall, Prototyping, V-Model, Spiral, RAD (Rapid Application Development), Unified Process and Agile. For each methodology it provides an overview and outlines some pros and cons. The document is a chapter from a course on software engineering methodologies presented by Dr. Lilia Sfaxi.

developmentsoftwaremethodologies

Contenu connexe

Tendances

Systèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiersSystèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiers
Lilia Sfaxi
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
Mireille Blay-Fornarino
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Ahmed Makni
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Mohamed Amine Mahmoudi
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
Khadim Mbacké
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
Heithem Abbes
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
Heithem Abbes
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
Bachir Benyammi
 
Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
ChaymaMghazli
 
Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)
Faycel Chaoua
 
Java RMI
Java RMIJava RMI
Java RMI
Heithem Abbes
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
Lilia Sfaxi
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
Heithem Abbes
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
Ilyas CHAOUA
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads
Sana Aroussi
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
Mohamed Heny SELMI
 
UML
UMLUML
Gestion d’une agence de voyage routière (Blondel Seumo)
Gestion d’une  agence  de  voyage  routière (Blondel Seumo)Gestion d’une  agence  de  voyage  routière (Blondel Seumo)
Gestion d’une agence de voyage routière (Blondel Seumo)
Gantner Technologies
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
Amir Souissi
 

Tendances (20)

Systèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiersSystèmes d'Exploitation - chp5-gestion fichiers
Systèmes d'Exploitation - chp5-gestion fichiers
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
 
Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)Support du cours : Systèmes d'exploitation 2 (linux)
Support du cours : Systèmes d'exploitation 2 (linux)
 
Java RMI
Java RMIJava RMI
Java RMI
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
 
UML
UMLUML
UML
 
Gestion d’une agence de voyage routière (Blondel Seumo)
Gestion d’une  agence  de  voyage  routière (Blondel Seumo)Gestion d’une  agence  de  voyage  routière (Blondel Seumo)
Gestion d’une agence de voyage routière (Blondel Seumo)
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 

En vedette

Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
Lilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
Lilia Sfaxi
 
Software Engineering - chp7- tests
Software Engineering - chp7- testsSoftware Engineering - chp7- tests
Software Engineering - chp7- tests
Lilia Sfaxi
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
Lilia Sfaxi
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque
Lilia Sfaxi
 
Software Engineering - chp4- design patterns
Software Engineering - chp4- design patternsSoftware Engineering - chp4- design patterns
Software Engineering - chp4- design patterns
Lilia Sfaxi
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture
Lilia Sfaxi
 
Software Engineering - chp3- design
Software Engineering - chp3- designSoftware Engineering - chp3- design
Software Engineering - chp3- design
Lilia Sfaxi
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur
Lilia Sfaxi
 
Software Engineering - chp6- development phase
Software Engineering - chp6- development phaseSoftware Engineering - chp6- development phase
Software Engineering - chp6- development phase
Lilia Sfaxi
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
Lilia Sfaxi
 
Software Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specificationSoftware Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specification
Lilia Sfaxi
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologies
Lilia Sfaxi
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
Lilia Sfaxi
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
Lilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
Lilia Sfaxi
 
Systèmes d'Exploitation - chp1-introduction
Systèmes d'Exploitation - chp1-introductionSystèmes d'Exploitation - chp1-introduction
Systèmes d'Exploitation - chp1-introduction
Lilia Sfaxi
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERP
Lilia Sfaxi
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
Chp1 - Introduction aux ERP
Chp1 - Introduction aux ERPChp1 - Introduction aux ERP
Chp1 - Introduction aux ERP
Lilia Sfaxi
 

En vedette (20)

Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
Software Engineering - chp7- tests
Software Engineering - chp7- testsSoftware Engineering - chp7- tests
Software Engineering - chp7- tests
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
 
Systèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disqueSystèmes d'Exploitation - chp4-gestion disque
Systèmes d'Exploitation - chp4-gestion disque
 
Software Engineering - chp4- design patterns
Software Engineering - chp4- design patternsSoftware Engineering - chp4- design patterns
Software Engineering - chp4- design patterns
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture
 
Software Engineering - chp3- design
Software Engineering - chp3- designSoftware Engineering - chp3- design
Software Engineering - chp3- design
 
Mobile-Chp4 côté serveur
Mobile-Chp4 côté serveurMobile-Chp4 côté serveur
Mobile-Chp4 côté serveur
 
Software Engineering - chp6- development phase
Software Engineering - chp6- development phaseSoftware Engineering - chp6- development phase
Software Engineering - chp6- development phase
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
Software Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specificationSoftware Engineering - chp2- requirements specification
Software Engineering - chp2- requirements specification
 
Software Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologiesSoftware Engineering - chp1- software dev methodologies
Software Engineering - chp1- software dev methodologies
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Systèmes d'Exploitation - chp1-introduction
Systèmes d'Exploitation - chp1-introductionSystèmes d'Exploitation - chp1-introduction
Systèmes d'Exploitation - chp1-introduction
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERP
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Chp1 - Introduction aux ERP
Chp1 - Introduction aux ERPChp1 - Introduction aux ERP
Chp1 - Introduction aux ERP
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
Lilia Sfaxi
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
Lilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
Lilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
Lilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
Lilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
Lilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
Lilia Sfaxi
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
Lilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
Lilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
Lilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
Lilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
Lilia Sfaxi
 
Lab3-Android
Lab3-AndroidLab3-Android
Lab3-Android
Lilia Sfaxi
 
Lab 5-Android
Lab 5-AndroidLab 5-Android
Lab 5-Android
Lilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 
Lab3-Android
Lab3-AndroidLab3-Android
Lab3-Android
 
Lab 5-Android
Lab 5-AndroidLab 5-Android
Lab 5-Android
 

Dernier

procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
saadbellaari
 
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdfTutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Erol GIRAUDY
 
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Erol GIRAUDY
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
Adrien Blind
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Jacques KIZA DIMANDJA
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Maalik Jallo
 
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usagesCLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
Erol GIRAUDY
 
Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
Sébastien Le Marchand
 

Dernier (8)

procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
 
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdfTutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
 
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
 
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usagesCLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
 
Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
 

Systèmes d'Exploitation - chp6-synchronisation

  • 1. Synchronisation des Processus Sections critiques, Sémaphores Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 1 Systèmes d’Exploitation 2ème Année (GL-RT-IIA-IMI)
  • 2. Présentation • Sur une plateforme multiprogrammée, les processus ont généralement besoin de communiquer pour compléter leurs tâches. • Un processus est dit indépendant, s’il n’affecte pas les autres processus ou ne peut pas être affecté par eux. § Un processus qui ne partage pas de données avec d’autres processus est indépendant. • Un processus est dit coopératif s’il peut affecter les autres processus en cours d’exécution ou être affecté par eux. § Un processus qui partage des données avec d’autres processus est un processus coopératif. • Les données partagées par les processus coopératifs se trouvent en mémoire principale ou en mémoire secondaire dans un fichier § Il y a alors risque d’incohérence des données. Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 2 Synchronisation des Processus
  • 3. Présentation • L’exécution d’un processus peut être affectée par l’exécution des autres processus ou il peut affecter lui-même leurs exécutions • La communication interprocessus est assurée généralement via des données partagées qui peuvent se trouver dans la mémoire principale ou dans un fichier. § Les accès concurrents (simultanés) à des données partagées peuvent conduire à des incohérences dans les résultats obtenus. Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 3 Synchronisation des Processus
  • 4. Exemple Illustratif Exemple : la spoule d’impression Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 4 Synchronisation des Processus Processus A Processus B … 3 2 1 0 f1f2… f0 Répertoire de spoule Démon d’impression Variable partagée in=3 Schéma d’exécution: A : lire in, next_free_slot = 3 Préemption: la CPU bascule vers le processus B B : lire in, next_free_slot = 3, entrée3 = fichierB, in = 4 Problème: le fichierB ne sera jamais imprimé A : entrée3 = fichierA, in = 4 lire in, next_free_slot = in Entrée[next_free_slot] = fichier in = in +1
  • 5. Sections Critiques et Exclusion Mutuelle • Le problème précédent est dû aux conflits d’accès à la même ressource. • La partie du programme à partir de laquelle on accède à la ressource partagée est appelée section (région) critique. • Solution: § L’exclusion mutuelle est une méthode qui assure qu’un seul processus est autorisé d’accéder à une ressource partagée; les autres processus seront exclus de la même activité. Slide 5 Synchronisation des Processus A B t1 t2 t3 t4 A entre dans sa section critique B tente d’entrer dans sa section critique A quitte sa section critique B entre dans sa section critique B quitte sa section critique Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 6. Sections critiques et exclusion mutuelle • Quatre conditions doivent être vérifiées pour assurer une bonne synchronisation des processus : 1. Exclusion Mutuelle: Deux processus ne doivent pas se trouver simultanément dans leurs sections critiques. 2. Progression : Aucun processus à l’extérieur de sa section critique ne doit bloquer les autres processus. 3. Attente bornée : Aucun processus ne doit attendre indéfiniment pour entrer dans sa section critique. 4. Aucune hypothèse : Il ne faut pas faire d’hypothèse quant à la vitesse ou le nombre de processeurs Synchronisation des Processus Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 6
  • 7. EXCLUSION MUTUELLE PAR ATTENTE ACTIVE Synchronisation des Processus Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 7
  • 8. Approche de Synchronisation • Un processus désirant entrer dans une section critique doit être mis en attente jusqu’a ce que la section critique devienne libre. • Un processus quittant la section critique doit le signaler aux autres processus. • L’attente peut être : § Active : la procédure Entrer_Section_Critique est une boucle dont la condition est un test qui porte sur des variables indiquant la présence ou non d’un processus en Section critique. § Non active : le processus passe dans l’état endormi et ne sera réveillé que lorsqu’il sera autorisé à entrer en section critique. Slide 8 Exclusion Mutuelle par Attente Active Algorithme d’accès à une section critique : Entrer_Section_Critique () /* attente si SC non libre */ Section_Critique() /* un seul processus en SC */ Quitter_Section_Critique() Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 9. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 1: Masquage des interruptions § Lorsqu’un processus entre en section critique il doit masquer les interruptions. § Pas de commutation de contexte § Lorsqu’ il quitte sa section critique il doit restaurer les interruptions. § C’est une solution matérielle qui permet de résoudre complètement le problème. Mais elle est dangereuse en mode utilisateur s’il oublie de restaurer les interruptions. Slide 9 Exclusion Mutuelle par Attente Active Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 10. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 2: Variable de verrouillage § Un verrou est variable binaire partagée qui indique la présence d’un processus en section critique. o si verrou=0 alors section critique libre o si verrou=1 alors section critique occupée § Cette solution ne garantit pas l’exclusion mutuelle car le verrou est une variable partagée qui peut constituer aussi une section critique. Slide 10 Exclusion Mutuelle par Attente Active void entrer_Section_Critique () { while (verrou == 1) ; /* attente active */ verrou=1 ; } void quitter_Section_Critique () { verrou=0 ; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 11. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 2-bis : Variable de verrou en matériel: TSL (Test and Set Lock) § Aussi appelée TAS pour Test And Set. § Est une instruction indivisible: réalisée une seule fois par le matériel. o (1) Lit le contenu de LOCK dans REGISTRE //(1) et (2) sont indivisibles o (2) Ecrit 1 dans adresse mémoire LOCK // (TSL instruction atomique) Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 11 Exclusion Mutuelle par Attente Active |pseudo-assembleur entrer_Section_Critique: TSL REGISTER, LOCK | copie lock dans reg et la définit à 1 CMP REGISTER, #0 | lock etait-elle à 0 JNE entrer_SC | si elle était pas à 0, boucle RET | retourne à appelant, entre dans SC quitter_Section_Critique: MOVE LOCK, #0 | stocke un 0 dans lock RET | retourne à l’appelant TSL REGISTER, LOCK
  • 12. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 3: Alternance stricte § Tour est une variable partagée qui indique le numéro de processus autorisé à entrer en section critique. § L’alternance stricte est une solution simple et facile a implémenter. § Mais, un processus qui possède Tour peut ne pas être intéressé immédiatement par la section critique et en même temps il bloque un autre processus qui la demande. § Problème de Progression Slide 12 Exclusion Mutuelle par Attente Active void entrer_Section_Critique (int process) { while (Tour!=process) ; /* attente active */ } void quitter_Section_Critique () { Tour = (Tour+1) %N ; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 13. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 4: Alternance stricte v2 § Interested est un tableau de booléens partagé ayant une case pour chaque processus qui veut entrer en SC § Initialement, toutes les valeurs du tableau sont à false § Quand un processus exécute entrer_SC: o Il met sa variable interested à true o Il attend si l’autre processus est intéressé § Problème d’interblocage o Excès de courtoisie! Slide 13 Exclusion Mutuelle par Attente Active void entrer_Section_Critique (int process) { interested[process] = true; while (interested[1-process]) ; /* attente active */ } void quitter_Section_Critique (int process) { interested[process]= false; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 14. Solutions de l’Exclusion Mutuelle par Attente Active • Solution 5: Alternance stricte v2 § Cette solution combine les deux version de l’alternance stricte § Cette solution assure les quatre conditions de bonne synchronisation. § Mais, le processus qui attend sa section critique consomme du temps processeur inutilement (attente active). Slide 14 Exclusion Mutuelle par Attente Active #define FAUX 0 #define VRAI 1 #define N 2 int tour ; /* à qui le tour */ int interesse[N] ; /* initialisé à FAUX */ void entrer_Section_Critique (int process) { int autre ; (1) autre = 1-process ; (2) interesse[process]=VRAI; /* process est intéressé */ (3) tour = process ; /* demander le tour */ while (tour == process && interesse[autre] == VRAI) ; } (A) (B) Void quitter_Section_Critique (int process) { (4) interesse[process]=FAUX ; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 15. Peterson N-processus #define FALSE 0 #define N 10 /* First process is indicated with 1, not 0 */ int turn[N]; int stage[N + 1]; void enterRegion(int process) { int i, j; for (i = 1; i <= N - 1; i++) { stage[process] = i; turn[i] = process; for ( j = 1; j <= N; j++) { if ( j == process) continue; while (stage[ j] >= i && turn[i] == process) ; } } } Exclusion Mutuelle par Attente Active void leaveRegion(int process) { stage[process] = FALSE; } Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 15
  • 16. EXCLUSION MUTUELLE SANS ATTENTE ACTIVE Synchronisation des Processus Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 16
  • 17. Exclusion mutuelle sans attente active • L’idée est qu’un processus qui ne peut pas entrer en section critique passe à l’état bloqué au lieu de consommer le temps processeur inutilement. Il sera réveillé lorsqu’il pourra y entrer. • Les primitives Sleep et Wakeup: § Le système d’exploitation offre deux appels système: 1. Sleep (dormir) qui bloque le processus appelant. 2. Wakeup (réveiller) qui réveille le processus donné en argument. Slide 17 Exclusion Mutuelle Sans Attente Active Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 18. Producteur-Consommateur • Application des primitives Sleep et Wakeup au modèle Producteur Consommateur: • Deux processus (le producteur et le consommateur) coopèrent en partageant un même tampon: • Le producteur produit des objets qu’il dépose dans le tampon. • Le consommateur retire des objets du tampon pour les consommer. Slide 18 Exclusion Mutuelle Sans Attente Active Producteur f1f2… f0 Tampon Variable partagée compteur=3 Consommateur Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 19. Producteur-Consommateur Slide 19 Exclusion Mutuelle Sans Attente Active #define N 100 /* taille du tampon */ int compteur = 0 ; /* objets dans tampon */ void producteur () { while (TRUE) { produire_objet() ; if (compteur == N) sleep () ; mettre_objet() ; compteur = compteur + 1 ; if (compteur == 1) wakeup(consommateur) ; } } void consommateur () { while (TRUE) { if (compteur == 0) sleep() ; retirer_objet() compteur = compteur – 1 ; if (compteur == N-1) wakeup (producteur) ; consommer_objet(…) ; } } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 20. Producteur-Consommateur • Analyse de cette solution : § L’accès à la variable compteur n’est pas protégé, ce qui peut entraîner des incohérences dans les valeurs prises par cette variable. § Réveils perdus : o c’est le principal défaut de ce mécanisme o Un signal wakeup envoyé à un processus qui ne dort pas (encore) est perdu. ‣ Considérer le scénario où une préemption a lieu entre le if et le sleep du producteur, par exemple. Slide 20 Exclusion Mutuelle Sans Attente Active Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 21. Sémaphores • Pour remédier au problème es réveils en attente (les wakeup perdus), l’idée est d’employé une variable entière appelée: Sémaphore à laquelle est associée une file d’attente des processus bloqués. § sémaphore=0 à aucun réveil n’est mémorisé § sémaphore>0 à un ou plusieurs réveils sont en attente • Un sémaphore s est manipulé par les opérations atomiques suivantes: 1. down(s) : o if (val(s)==0) sleep(); o val(s)--; 2. up(s) : o wakeup(); o s++; Slide 21 Exclusion Mutuelle Sans Attente Active Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 22. Sémaphores • Pour assurer l’exclusion mutuelle un sémaphore peut être programmé de la manière suivante : Slide 22 Exclusion Mutuelle Sans Attente Active initialisation mutex = 1 /* nombre de processus autorisés à entrer simultanément dans la section critique */ down (mutex) <section_critique> up (mutex) Nom du sémaphore Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 23. Sémaphores • Application au modèle Producteur / Consommateur : • Trois sémaphores sont nécessaires: § plein: compte le nombre de places occupées § vide : compte le nombre de places libres § mutex : assure que le producteur et le consommateur n'accèdent jamais en même moment à la mémoire tampon. Slide 23 Exclusion Mutuelle Sans Attente Active Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 24. Producteur/Consommateur avec Sémaphores #define N 100 // taille du tampon semaphore mutex 1 ; // contrôle d’accès section critique semaphore vide N; // contrôle les emplacements vide semaphore plein 0; // contrôle les emplacements plein Slide 24 Exclusion Mutuelle Sans Attente Active void producteur () { while (TRUE){ produire_objet() ; down(vide); down(mutex); mettre_objet() ; //SC up(mutex); up(plein) } } void consommateur () { while (TRUE){ down(plein); down(mutex); retirer_objet() //SC up(mutex); up(vide); consommer_objet(…) ; } } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 25. EXERCICES Synchronisation des Processus Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 25
  • 26. Ex1: Synchronisation et Ordonnancement • Q1 : Round robin ( tourniquet) avec q=5ms • Q2 : Round robin ( tourniquet) avec q=5ms + Synchronisation Peterson Slide 26 Exercices Prêt à l’instant t= Durée d’exécution P0 0 ms 23 ms P1 1 ms 17 ms P2 2 ms 15 ms Durée d’exécution SR+SC Date d’entrée en section critique t= P0 23 ms 3 ms P1 17 ms 7 ms P2 15 ms X Prêt à l’instant t= Durée d’exécution en section critique P0 0 ms 13ms P1 1 ms 10 ms P2 2 ms X Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 27. Prêt à l’instant t= Durée d’exécution P0 0 ms 23 ms P1 1 ms 17 ms P2 2 ms 15 ms 0 5 P0 P1 P2 10 15 20 25 30 35 40 40 45 50 52 55 Ex1: Synchronisation et Ordonnancement • Round robin ( tourniquet) avec q=5ms Exercices Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 27
  • 28. 0 P0 P1 P2 10 15 30 40 45 50 58 Prêt à l’instant t= Durée d’exécution Date d’entrée en section critique t= Durée d’exécution en section critique P0 0 ms 23 ms 3 ms 12 ms P1 1 ms 17 ms 7 ms 10 ms P2 2 ms 15 ms X X SC AA 5 20 25 35 40 55 Ex1: Synchronisation et Ordonnancement • Round robin ( tourniquet) avec q=5ms • Peterson è Attente active Exercices Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 28
  • 29. Ex1: Synchronisation et Ordonnancement • Round robin ( tourniquet) avec q=5ms • Sommeil et activation Exercices 0 5 P0 P1 P2 10 15 20 22 27 32 37 40 42 47 5552 Prêt à l’instant t= Durée d’exécution Date d’entrée en section critique t= Durée d’exécution en section critique P0 0 ms 23 ms 3 ms 12 ms P1 1 ms 17 ms 7 ms 10 ms P2 2 ms 15 ms X X SC 40 Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 29
  • 30. Ex2: Lecteurs/Rédacteur • Une base de données peut être accessible par un seul rédacteur ou N lecteurs en même temps § Exclusion mutuelle entre le rédacteur et les N lecteurs § Donner le pseudo code d’un processus lecteur et celui du processus rédacteur Slide 30 Exercices Base de données Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 31. Ex2: Lecteurs/Rédacteur Semaphore mutex 1 // contrôle l’accés à nb_lect Semaphore db 1 // contrôle l’accés à la base de données int nb_lect = 0 ; // var partagées entre lecteurs pour compter le nombre de lecteurs // accédant actuellement à la BD //lecteur void lecture(){ while (true) { //boucle sans fin lire_la_BD(); //accés à la BD utiliser_données (); //Section restante } } //redacteur void ecriture(){ while (true) { créer_données (); ecrire_dans_la_BD } } Slide 31 Exercices Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 32. Ex2: Lecteurs/Rédacteur Semaphore mutex 1 // contrôle l’accés à nb_lect Semaphore db 1 // contrôle l’accés à la base de données int nb_lect = 0 ; // var partagées entre lecteurs pour // compter le nombre de lecteurs accédant // actuellement à la BD //lecteur void lecture(){ while (true) { //boucle sans fin down (mutex); // la modif de la var. partagée nb_lect nb_lect ++; // est une section critique entre lecteurs if (nb_lect == 1) down (db); //si le premier lecteur up(mutex); // libère l’accés exclusif à nb_lect lire_la_BD(); //accés à la BD down(mutex); nb_lect --; if (nb_lect == 0) up (db); //si le dernier lecteur up (mutex) utiliser_données (); //Section restante } } Slide 32 Exercices void ecriture(){ while (true) { //boucle sans fin créer_données (); //Sec.Rest. down (db); ecrire_dans_la_BD(); //accés BD up (db); } } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 33. Ex3: Coiffeur endormi • Un coiffeur possède un salon avec un siège de coiffeur et une salle d’attente comportant un nombre fixe F de fauteuils. • S’il n’y a pas de client, le coiffeur se repose sur son siège de coiffeur. • Si un client arrive et trouve le coiffeur endormi, il le réveille, s’assoit sur le siège du coiffeur et attend la fin de sa coupe de cheveux. • Si le coiffeur est occupé lorsqu’un client arrive, le client s’assoit et s’endort sur une des chaises de la salle d’attente ; si la salle d’attente est pleine, le client rentre chez lui. • Lorsque le coiffeur a terminé une coupe de cheveux, il fait sortir son client courant et va réveiller un des clients de la salle d’attente. • Si la salle d’attente est vide, il se rendort sur son siège jusqu’à ce qu’un nouveau client arrive. Slide 33 Exercices Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 34. Ex3: Coiffeur endormi • Résoudre le pb en évitant les conditions de concurrence • Utilisation de 3 sémaphores et un compteur § Semaphore Clients 0; o //bloque le coiffeur s’il n’y a pas de clients § Semaphore Mutex 1; o //accés exclusif à la zone critique § Semaphore Coiffeurs 0; o //bloque le client si le coiffeur est occupé avec un //autre client § Int Attente = 0 ; o //Le nombre de clients en attente Slide 34 Exercices Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 35. Ex3: Coiffeur endormi Semaphore Clients 0; Semaphore Mutex 1; Semaphore Coiffeurs 0; Int Attente = 0 ; //Coiffeur void coiffeur() { while(1){ down(Clients); down(Mutex); Attente = attente – 1; up(Coiffeurs); up(Mutex); Couper_cheveux(); } } Slide 35 Exercices //Client void client() { down(Mutex) if (Attente < Chaises) { Attente = attente + 1 up(Clients) up(Mutex) down(Coiffeurs) Obtenir_coupe } else{ up(Mutex) } } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 36. Réfléchissons ! • Soient les deux processus P1 et P2 suivants. Ils se partagent deux sémaphores S1 et S2 initialisés à 0. • Quelle synchronisation a-t-on imposée sur les exécutions des procédures A1, A2, B1 et B2 (càd, quel ordre d’exécution) ? Slide 36 Exercices P2 { procedure A2 ; Up(S1) ; Down(S2) ; procedure B2 ; } Semaphore S1 0 Semaphore S2 0 P1 { procedure A1 ; Up(S2) ; Down(S1) ; procedure B1 ; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 37. Ex4: Barrière de synchronisation • Les Ai s’exécutent toujours avant les Bi, quelque soit l’ordre de l’exécution des processus P1 et P2 • Ex: Ecrire le code à fin d’imposer la même synchronisation pour N processus en utilisant : § N sémaphores § 2 sémaphores et un compteur Slide 37 Exercices P2 { procedure A2 ; Up(S1) ; Down(S2) ; procedure B2 ; } Semaphore S1 0 Semaphore S2 0 P1 { procedure A1 ; Up(S2) ; Down(S1) ; procedure B1 ; } Dr. Ghada GASMI- Dr. Lilia SFAXI
  • 38. Ex5: Dîner des Philosophes • Cinq philosophes se trouvent autour d'une table ; • Chacun des philosophes a devant lui un plat de spaghetti ; • A gauche de chaque assiette se trouve une fourchette • Un philosophe n'a que trois états possibles : § penser pendant un temps indéterminé ; § être affamé (pendant un temps déterminé et fini sinon il y a famine) ; § manger pendant un temps déterminé et fini. • Des contraintes extérieures s'imposent à cette situation : § quand un philosophe a faim, il va se mettre dans l'état « affamé » et attendre que les fourchettes soient libres ; § pour manger, un philosophe a besoin de deux fourchettes : celle qui se trouve à sa droite, et celle qui se trouve à sa gauche ; § si un philosophe n'arrive pas à s'emparer d'une fourchette, il reste affamé pendant un temps déterminé, en attendant de renouveler sa tentative. • Le problème consiste à trouver un ordonnancement des philosophes tel qu'ils puissent tous manger, chacun à leur tour, sans provoquer d’interblocage! Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 38 Exercices
  • 39. Ex5: Dîner des Philosophes Const int N = 5; //nbr de philosophes Semaphore s[N]={0,0,0,0,0}; Semaphore Mutex=1; int etat[N]= {PENSE,PENSE,…} ; //Philosophe void philosophe(int i) { while(1){ penser(); prendre_fourchettes(i); manger(); poser_fourchettes(i); } } Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 39 Exercices vo i d p re n d re _fo u rch ette s ( i n t i ) { d ow n (m u tex) ; et at [ i ] = FA I M ; i f (et at [ i + 1 % N] = = M A NGE | | et at [ i - 1 % N] = = M A NGE ) { u p (m u tex) ; d ow n ( s [ i ]) ; } e l s e { et at [ i ] = M A NGE ; u p (m u tex) ; } } vo i d p o s e r_fo u rch ette s ( i n t i ) { d ow n (m u tex) ; i f (et at [ i + 1 % N] = = FA I M & & et at [ i + 2 % N] ! = M A NGE ) { et at [ i + 1 % N] = M A NGE ; u p ( s [ i + 1 % N ]) ; } i f (et at [ i - 1 % N] = = FA I M & & et at [ i - 2 % N] ! = M A NGE ) { et at [ i - 1 % N] = M A NGE ; u p ( s [ i - 1 % N]) ; } u p (m u tex) ; }
  • 40. Références Dr. Ghada GASMI- Dr. Lilia SFAXI Slide 40 • Wassim Youssef, Les systèmes d’exploitation, Cours ISI, 2015