Telechargé par Asmy Go

IntroductionSEL3IN mod

publicité
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Les Systèmes d'Exploitation avancés
Dr ZONGO
Université de Ngaoundéré - FS/DMI
Année académique 2021 - 2022
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Course content
Peut changer...
Introduction rappels des notions essentielles vues en L1
La gestion des processus (threads)
I Quelques rappels
I Threads et multi-threading
I Synchronisation (sémaphores)
La gestion de la mémoire (Si le temps le permet)
I Quelques rappels
I Mémoire paginée et mémoire segmentée - Translation
d'adresses
Programmation système en C - Travaux pratiques
I À dénir selon l'évolution du cours
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Qu'est ce qu'un système d'exploitation?
Plusieurs dénitions
Programme agissant comme "pont" entre le matériel de
l'ordinateur et l'utilisateur. Fondamentalement, deux
programmes:
I logiciels d'application: Suite oce, Abode, apache, etc.
I logiciel système: le SE
programme chargé d'allouer les ressources: il gère et alloue les
ressources
programmme de contrôle: il contrôle l'exécution des
programmes utilisateurs et les opérations d'E/S.
Le noyau: le programme unique qui s'exécute à tout moment
sur un ordinateur.
2 principaux rappels
(1) Pourquoi étudier les SE? (2) Roles d'un SE
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Pourquoi les étudier et comprendre les SE?
Entre autres raisons:
C'est l'un des concepts les plus complexes en informatique:
I Très peu d'assomptions simpliées (gestion des appels
systèmes, PCB, sémaphores, etc.)
I Est très proche du monde réel par application
I Intersection de plusieurs disciplines (architecture des
ordinateurs, logique, réseau même!)
Pratiquement tous les autres systèmes (logiciels) sont ses
"sous ensembles".
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Pourquoi les étudier et comprendre les SE?
Matériel: fourni les ressources basiques de
traitement (CPU, Mémoire, périphériques d'E/S)
Le SE: Contrôle et coordonne l'utilisation du
matériel parmi les applicatifs
programmes d'application: déni les moyens par
lesquels les ressources systèmes sont utilisées
pour traiter l'information.
Figure: Vue abstraite des
composants système
utilisateurs: moi, vous, les autres.
Globalement,
Les SEs sont explorés à partir de deux points de vue:
Utilisateur
Système / Noyau / SE
Introduction
Processus
Threads
Synchronisation
Roles d'un système d'exploitation
En L1, nous avons décrit:
Figure: 1.1.1 Roles d'un SE
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Roles d'un système d'exploitation
SE comme arbitre
Figure: 1.1.2 Gestionnaire de ressources
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Roles d'un système d'exploitation
SE comme arbitre
Arbitre dans
Le partage des ressources: Partage du matériel (DD, CPU,
RAM) entre plusieurs applications sans que chacune de ces
applications ne soient conscientes de l'existence des autres;
La protection des ressources: respect des espaces (Mémoire,
disques, distant) "privés" des applications s'exécutant
pseudo-simultanément et aussi protection des ressources
physiques utilisées par ces derniers;
La communication interprocessus
Ceci, travaillant ensemble pour fournir ses buts:
L'équité: Pas de famine
L'ecacité: utilisation des ressources complètes de la machine tout en
minimusant la consommation d'énergie.
Prévisibilité: garantie des performances temps réel.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Roles d'un système d'exploitation
SE comme arbitre - Exemple
Processus / Threads
Processus / Threads = CPU virtuels Vs CPU physique
L'arbitre s'occupe du bon déroulement des mécanismes tels
que l'ordonnancement, la commutation de contexte, la gestion
du temps, etc.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Roles d'un système d'exploitation
SE comme illusioniste
Illusioniste = virtualisation = machine virtuelle
Donne l'impression d'avoir une ressource réelle
En réalité, la ressource virtuelle est plus accessible et facile à
gérer.
Comment?
En partageant plusieurs ressources disponibles entre plusieurs
clients
En joignant plusieurs ressources pour orir une seule nouvelle
ressource. Ex. grappe
Tout ceci en terme d'abstraction
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Roles d'un système d'exploitation
SE comme illusioniste - Exemple
Mémoire physique (RAM) et mémoire virtuelle (Disque dur)
Multi-coeurs et processeur réel
Exercies
Introduction
Processus
Threads
Synchronisation
Roles d'un système d'exploitation
SE comme colle
Colle pour coller les deux premiers
Au travers des:
I Libraries système
I des interfaces utilisateur
I des services d'utilisation commune
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Quelques fonctions "avancées" d'un SE
Gestionnaire de ressources
Ressource processus
Ressource mémoire centrale
Un processus a besoin des ressources
telles que le CPU, la mémoire, les chiers,
les périphériques d'E/S pour réaliser sa
tâche. Le SE est responsable des activités
ci-dessous concernant la gestion des
processus:
I Création et suppression;
I Suspension de reprise;
I fourniture des mécanismes pour
la communication inter-processus
et la synchronisation des
processus.
répertoire d'accès rapide aux données
partagées par le CPU et des périphérique
d'E/S qui est volatile. Les tâches du SE
en rapport avec sa gestion sont:
I garde la trace de espaces
mémoire occupés et qui les
occupe;
I Décide quel processus charger
dans un espace mémoire qui se
libère;
I alloue et désalloue les espace
mémoire à sa guide.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Quelques fonctions "avancées" d'un SE
Gestionnaire de ressources
Ressource chier
De façon générale, les chiers
représentent les programmes et les
données. Le SE se charge des activités
ci-dessous en rapport avec les chiers:
I Création et suppression des
chiers et répertoires;
I Support des primitives pour la
manipulation des chiers;
I Correspondance des chiers sur
les support secondaires, etc.
Ressource E/S
Les E/S consistent en: répertoire d'accès
rapide aux données partagées par le CPU
et des périphériques d'E/S qui est
volatile. Les tâches du SE en rapport ave
sa gestion sont:
I "buerisation" et mémorisation
du système;
I une interface général de pilote de
périphérique;
I les pilotes pour les matériels
spéciques.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Quelques fonctions "avancées" d'un SE
Exercice à faire
Quel rôle sierrait le mieux dans les applications ci après:
Utilisateur de bases de données multiples
Internet
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Processus
C'est l'instance d'un programme chargé en mémoire et géré
par le SE en vue d'être exécuté.
L'espace d'adressage d'un processus est générallement organisé
en code, données, tas et des segments empilés.
I Tas et pile sont deux mécanismes utilisés par les programmes
pour l'accès à la mémoire:
La pile est gérée par le SE dans la mémoire et pour les
allocations statiques (accès rapide);
Le tas est géré par l'application (processus) et pour les
allocations dynamiques (accès plus lent).
Un processus est caractérisé dans le SE par son bloc de
contrôle de processus ou Process Control Block (PCB)
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Représentation d'un processus en mémoire
Figure: Exemple d'implémentation pile/tas
Figure: Un processus en mémoire
TPE1
Après avoir fait une étude comparative (sous
forme de tableau) entre l'allocation à travers la
pile et celle par le tas, dites quelle allocation
sierrait pour un programme C++ qui ache les
statistiques de votre salle de classe.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Concepts
Création de processus
Un processus peut être créé suite à:
l'initialisation du système
l'exécution d'un appel système de création d'un processus par
un processus en cours d'exécution
un utilisateur voulant créer un nouveau processus
l'initiation d'un travail par lot
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Concepts
Création d'un processus - Cont.
En eet, un processus
peut créer plusieurs autres processus qui sont appelés "ls" ou
"sous-processus" en exploitant la capacité du SE pour
s'exécuter de façon concurrente
Le programme gcc invoque diérents processus du compilateur et
de l'assembleur.
les processus parent et ls ont des espaces mémoire diérents
en mémoire. De ce fait, ils ne peuvent communiquer qu'au
travers des appels système.
Introduction
Processus
Threads
Concepts
Terminaison d'un processus - Cont.
Un processus peut être terminé suite à:
la terminaison normale
sortie sur erreur
Fatal error
killed par un autre processus
Synchronisation
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Concepts, Etat d'un processus - rappel
Figure: États d'un processus
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Concepts
Gestion des processus dans le SE - le PCB
Le SE maintient une structure de données pour chaque processus
appelée Process Control Bloc (PCB). Les informations maintenues
dans le PCB sont listées dans le tableau ci dessous
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Concepts
Où:
Priority (Priorité) est la priorité associée au processus à son
entrée dans le système
Program counter ou compteur ordinal: adresse de la proch.
Instr. à exécuter
Memory pointers (pointeurs mémoire): pointeurs sur le code
et les données du programme associées à ce processus et une
mémoire supplémentaire
Context data: données présentes dans les registres du
processeur durant l'exécution du processus
I/O status informations: toutes les informations d'E/S
associées et liste des chiers utilisés par ce processus
Accounting informations: statistiques en terme de temps
processeur, etc.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exécution d'un processus dans le SE
Figure: Exécution du processus c dans le SE
Exercies
Introduction
Processus
Threads
Processus et ordonnancement
Révision
Lire cours L1
Synchronisation
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Processus et multi-threading
Motivation
Un programme "multi-threadé" donne l'impression de faire
plus d'une chose à la fois
L'idée derrière le "multi-threading" est la même qu'en
multiprogrammation (ou multitâches) mais avec un seul
processus.
La multiprogrammation c'est le multi-tâche mais sur des processus
diérents
Par exemple
le programme de traitement de texte contient des threads séparés:
Un thread qui gère les graphiques
Un thread qui reçoit les frappes du clavier de l'utilisateur
Un thread qui s'occupe de la correction automatique
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Pourquoi faire du "multi-threading"?
Tel que nous l'avons déjà vu,
la création d'un processus est "couteuse" car elle demande
l'allocation et l'initialisation de plusieurs structures de données
La communication entre les diérents processus est
"couteuse" car elle passe essentiellement par le SE
Un processus en lui inclut plusieurs choses:
I un espace d'adressage
I description du SE et allocation des ressources
I état des multiple registres, etc.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Le "multi-threading"
Le "multi-threading" c'est la possibilité de créer plusieurs ls
d'exécution (threads) dans un même processus
Un thread est la plus petite unité programmable dans le
"multi-threading"
Un thread en exécution est représenté par:
I identiant du thread
I Registre (compteur ordinal et registres de service)
I tas (pour les paramètres d'appel de procédure, variables
locales, etc.)
Dans un même processus, les threads se partagent:
I section de code
I section de données
I permissions et d'autres ressources (chiers essentiellement)
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Avantages du "multi-threading"
Augmente l'écacité du temps de réponse de l'utilisateur
Permet à un programme de continuer à s'exécuter même si
certaines de ses parties sont en attente
Partage de ressource: les threads se partagent la mémoire et
les ressources du processus auquel ils appartiennent. Tous les
threads s'exécutent dans le même espace d'adressage
Economique: Comme ils se partatgent le même espace
d'adressage et plusieurs autres ressources, ils peuvent
communiquer via les données partagées et ainsi éliminer les
coûts élevés des appels système.
Etc.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Dénitions
Un thread est un ux d'exécution passant par le code de processus,
avec son propre compteur de programme qui garde la trace de
l'instruction à exécuter, des registres système contenant les
variables de travail en cours et une pile contenant l'historique
d'exécution.
En termes simples,
C'est une partie des instructions d'un processus en cours
d'exécution. Ainsi, un thread ne pourrait exister sans un
processus;
Communément, on parle de "processus léger";
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Threads et processus - Concrètement dans le SE
Le code rédigé par le programmeur qui est stocké sur le DD
est un programme;
Une fois que le programme est exécuté (placé en mémoire)
avec tout l'environnement d'exécution (ressources: mémoire
occupée, registres du processeur, etc. ) qui lui est associé, il
devient un processus;
Le thread lui est donc, une unité d'exécution ou de traitement
composée d'un ensemble d'instructions contenues dans le
processus;
Le thread est la plus petite tâche ou opération au sein du
processus gérable par l'ordonnanceur;
Ainsi donc, un processus peut être composé d'un ou plusieurs
threads. Pour les processus à un seul thread on parle de single
threading, et dans le cas contraire de multithreading.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Threads et processus Contd.
Figure: Illustration single threading vs multithreading
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Threads et processus Contd.
Figure: Diérence entre processus Vs thread
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Threads et processus Contd.
Diérence dans le SE
Les processus ls issus d'un même processus ont leur propre
espace d'adressage et doivent, pour communiquer, utiliser des
moyens de communication speciques (tubes, échange de
messages, etc.)
TPE1
Comment sont utilisés les tubes dans la communication
inter-processus?
Les threads issus d'un même processus partagent la même
zone mémoire (segments de code et de données), ce qui rend
très facile la communication entre threads
TPE2
Illustrez comment se fait la communication inter-thread.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Types de Thread
Dans un SE, les threads sont implémentés de 2 manières:
Threads Utilisateur: gérés dans l'espace utilisateur.
I Ils ne sont pas liés au SE
I À la place, c'est une bibliothèque logicielle qui les gère à
l'intérieur d'un processus.
I Cette bibliothèque contient le code pour la création,
destruction des threads, le passage des messages entre thread,
leur ordonnancement et la sauvegarde et restauration de leur
contextes;
I Le SE ne peut donc pas les ordonnancer, mais il ordonnace le
processus dans lequel ils ont été créés;
I Le quantum de temps que le SE a alloué au processus est
divisé par le nombre de thread le composant.
Introduction
Processus
Threads
Synchronisation
Types de Thread - User threads
Figure: Thread utilisateur
Bibliothèques logicielle pour gestion thread utilisateur
Threads POSIX - POSIX Pthreads
Threads Mach - Mach C-threads
Threads Solaris - Solaris threads
Threads Java, Win32 threads, etc.
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Types de Thread - Kernel threads
Threads noyau: gérés dans le noyau i.e SE.
I Ils sont gérés par le noyau qui s'occupe de leur création,
destruction et ordonnancement à travers les appels système;
I Ainsi, l'ordonnancement est plus ecace car chaque thread est
ordonnancé tel quel;
I Donc ici, en plus de la table des processus dans le SE, il faut
en plus une table de thread que le SE gère;
I Aucun thread n'est géré dans l'espace utilisateur;
I pour gérer un thread, le SE maintient les informations du
processus dans lequel se trouve le thread et les informations
individuelles du thread dans le processus;
I Leur création est plus lente que celle des user threads.
Introduction
Processus
Threads
Synchronisation
Types de Thread - Kernel threads
Figure: Thread noyau
SE
Windows95/98/NT/2000
Solaris - Expliquez le cas de Solaris.
Tru64Unix
Linux, etc.
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
TPE3
Faire une étude comparative succincte de l'implémentation des
threads utilisateur et l'implémentation des threads noyau en terme
de:
Coût;
ecacité;
Performances;
niveau de dicultés pour les utilisateurs
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Modèles de Multithreading
Concept
Il est courant de voir des SE qui supportent à la fois les thread
niveau utilisateur et les threads niveau noyau. Un exemple a été vu
lors de leur description (cas de Solaris)
La question est de savoir:
Comment sont "intégrés" les threads de niveau utilisateur dans
ceux de niveau noyau? C'est cela que dénisent les diérents
modèles de multithreading. Il en existe 3:
Modèle One-to-One
Modèle Many-to-One
Modèle Many-to-Many
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Multithreading models - Many-to-Many ou Two-level model
Multiplexe n'importe quel nombre de threads utilisateur dans
un nombre égal ou inférieur de threads noyau.
Les utilisateurs peuvent créer un nombre quelconque de
threads au travers de la librairie et c'est cette librairie qui est
chargée de gérer ces threads;
Le noyau ne g-re que les threads actifs;
Les processus peuvent être répartis sur plusieurs processeurs.
A une meilleure précision dans la concurrence.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
TPEs
1 Décrivez comment se fait la concurrence dans un
environnement de multi-threading pour les 3 types
Many-to-Many, One-to-one et Many-to-one.
2
Décrivez comment se font les accès en mode many-to-one.
C'est-à-dire comment les threads accèdent-ils au seul thread
noyau auquel ils sont attachés?
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Multithreading models - Many-to-One - Rôle du SE
Multiplexe/mappe de nombreux threads utilisateur à un seul
thread noyau.
La gestion des threads est gérée par la bibliothèque de threads
dans l'espace utilisateur; ce qui est ecace par nature;
La concurrence est limitée et ce modèle n'exploite pas les
multi-processeurs;
La version initiale des threads Java sur Solaris implémentait ce
modèle.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Multithreading models - One-to-One
Parmi les premières implémentations du vrai multithreading;
Ce modèle crée un thread noyau distinct pour gérer chaque
thread utilisateur créé par l'utilisateur;
La plupart des implémentations de ce modèle limitent le
nombre de threads pouvant être créés car chaque thread créé
peut accéder au noyau et leur accès simultané est dangereux
s'ils sont nombreux;
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Devoir
Pour chacun des modèles de multhreading vu, trouvez un exemple
de SE qui les implémentent parmi les SE existants.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Threads Vs Processus - Analogie d'utilisation de processus
dans la synchronisation
Observez le schéma ci-dessous:
Figure: Threaded process
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Petit rappel sur les threads
Un thread/l d'exécution est une unité d'exécution composée
de (Cf image page précédente):
I son propre compteur de programme
I une pile
I un ensemble de registres
Un thread ne peut pas exister en dehors d'un processus.
Remarque
Les threads sont également appelés processus légers tandis que les
processus proprement dits sont appelés processus lourds.
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Problématique de la synchronisation
Dans un SE,
Plusieurs processus s'exécutent pseudo-simultanément
Ces processus s'éxécutent ainsi en partageant plusieurs
ressources. Eg. espace mémoire, CPU, I/O, etc.
Mais alors,
Parmi ces ressources partagées, il en existe qui ne peuvent pas être
utilisées par plus d'un processus à la fois; et dont Donc, l'utilisation
concurrente peut entrainer des incohérences si aucune précaution
n'est prise.
La question donc est: "Comment s'aasurer de la bonne utilisation
de ce type de ressource?"
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Illustrons cela avec un exemple pratique
Exercice
Considérons une telle ressource qu'on nommera X et que nous
assimilerons à un compte bancaire d'un certain Abdou.
Abdou voudrait d'abord créditer son compte de 1000 et ensuite le
débiter de 500. Si on suppose au départ que son compte a 2000,
faites l'exécution des opérations en sachant que X est une variable
globale et r1 et r2 sont des variables locales à chaque
processus/thread.
Thread1: X = +1000 Thread2: X = -500
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Illustrons cela avec un exemple pratique - Solution pour un
cas de concurrence sans problème
Figure: Exécution pour un cas de concurrence sans problème
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Illustrons cela avec un exemple pratique - Solution pour un
cas de concurrence avec problème
Figure: Exécution pour un cas de concurrence avec problème
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Quelques dénitions
Dans l'exemple vu, la ressource "compte/X" est une ressource dite
critique dans les SE.
Dénition
On parle de ressource critique lorsque des accès concurrents
à cette ressource peuvent résulter en un état incohérent du SE.
Pratiquement, une ressource critique est une ressource qui
peut être utilisée par au plus un processus à la fois.
Une section critique quant à elle est la section d'un
programme manipulant une ressource critique.
Une section de programme est dite atomique lorsqu'elle ne
peut pas être interrompue par un autre processus manipulant
les mêmes ressources critiques.
l'exclusion mutuelle est un mécanisme permettant d'assurer
l'atomicité d'une section critque.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Exclusion mutuelle
En fait,
Resoudre un problème de conit d'accès reviendrait à s'assurer que
deux processus ne se retrouvent jamais en section critique en même
temps au moyen de l'exclusion mutuelle
Ainsi,
Réaliser une exclusion mutuelle sur une ressource critique manipulée
dans une section critique revient à réaliser la synchronisation sur
les processus concurrents.
Généralement, le code des processus exécutant une section critique
est dans l'ordre:
1. Section non critique 2. Demande d'entrée en section critique 3.
Section critiques 4. Demande de sortie de la section critique 5.
Section non critique.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Exclusion mutuelle
En réalité, l'exclusion mutuelle est la gestion
critique en respectant ces conditions:
eective de la section
Deux processus ne peuvent être en même temps en section
critique;
Aucune hypothèse ne doit être faite sur les vitesses relatives
des processus et sur le nombre de processeurs;
Aucun processus bloqué en dehors d'une section critique ne
doit bloquer les autres processus (inter-blocage/deadlock);
Aucun processus ne doit attendre trop longtemps avant
d'entrer en section critique (famine/starvation);
Tous les processus doivent avoir la même chance d'entrer en
section critique.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Approches d'exclusion mutuelle
Plusieurs approches ont été proposées pour assurer l'exclusion
mutuelle dans les systèmes d'exploitation. Nous les citerons toutes,
mais ne décrirons que quelques unes parmi elles.
Masquage des interruptions:
avant d'entrer dans une
section critique, le processus masque les interruptions. Et à la
sortie de la SC, il les restaure. De cette façon, il est garanti
qu'il ne peut être interrompu durant l'exécution de la section
critique.
Inconvénient
Ne marche que dans les systèmes mono-processeur; ou s'il arrive
que le processus à la n de la SC ne parvienne pas à restaurer les
interruptions, alors le système ne pourra plus fonctionner.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Approches d'exclusion mutuelles
Attente active:
ici,le processus qui veut entrer en SC teste
continuellement une variable partagée par tous les processus
(verrou). Si sa valeur est égale à une certaine valeur donnée, il
entre en SC. Sinon, il continue son attente.
Inconvénient
Famine, gaspillage du temps processeur.
Le verrou tournant: Devoir Lire
L'instruction TestAndSet Lock
Blocage et reveil Devoir Lire
Les sémaphores
Devoir Lire
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Introduction
La contribution la plus importante faite au problème de
synchronisation de processus est celle du physicien et
informaticien Edsger Dijkstra.
C'est une structure de données à 2 éléments:
1
2
une variable entière non négative (pouvant être nulle) donnant
le nombre de ressources disponibles;
une le d'attente de processus
Un sémaphore se manipule uniquement à l'aide de trois opérations
atomiques (non interruptibles jusqu'à la n de leur exécution):
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Introduction
Init(sem, nombre_de_ressources): procédure
d'initalisation du sémaphore: le nombre de ressources
disponibles de sem est initialisé à nombre_de_ressources et la
le d'attente de processus de sem est vide. Cette opération
n'est eectuée qu'une et une seule fois.
P(sem).
Avec P pour Proberen qui signie tester ou encore
"Puis-je?": procédure qui met le processus dans la le
d'attente si le nombre de ressources du sémaphore sem est à 0
et décrémente le nombre de ressources sinon.
V(sem) Avec V pour Verhogen qui signie incrémenter ou
encore "Vas-y!": procédure qui incrémente le nombre de
ressources du sémaphore sem ou réveille un processus s'il y en
a en attente.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
De façon concrète,
Conceptuellement,
Un sémaphore est vu comme un distributeur de tickets, qui,
initialement dispose d'un certain nombre de tickets, éventuellement
nul.
Pour un processus utilisateur du sémaphore,
Il demande un ticket en invoquant l'opération
P():
I si au moins un ticket est disponible, le processus appelant le
prend et poursuit son exécution.
I Sinon, le processus demandeur est mis dans une le d'attente
et est bloqué dans l'attente de l'obtention d'un ticket.
l'opération P n'est exécutable par le processus appelant que
s'il existe un ticket libre, et peut se retrouver bloquante dans le
cas contraire
P décroît la valeur du sémaphore d'une unité à condition que le
Introduction
Processus
Threads
Synchronisation
Pour un processus utilisateur du sémaphore,
Il dépose un ticket en invoquant l'opération
Les sémaphores
V():
I Si des processus sont en attente dans la le du sémaphore, le
premier d'entre eux est débloqué et obtient son ticket.
Exercies
Introduction
Processus
Algorithme de P()
Tantque sem<=0 Faire
Rien
FinTantque
Décrementer semaphore
Algorithme de V()
Incrementer semaphore
Threads
Synchronisation
Les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Variante de sémaphores
Sémaphores privés: Un sémaphore est privé à un processus
dit propriétaire, si seul ce processus peut eectuer une
opération P sur ce sémaphore. Il ne peut donc y avoir qu'au
plus un processus en attente derrière un sémaphore privé, le
processus propriétaire, et il n'est pas nécessaire alors d'avoir
une le d'attente associée à un sémaphore privé. Tout
processus, y compris le propriétaire, peut, par contre, exécuter
une opération V sur le sémaphore privé.
Sémaphores binaires:
Un sémaphore binaire est une variante
du mécanisme de sémaphore général. Le compteur associé au
sémaphore est simplement remplacé par un booléen, qui ne
peut donc prendre que les valeurs Vrai ou Faux.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exclusion mutuelle par sémaphores
Le problème de l'exclusion mutuelle peut être simplement résolu à
l'aide d'un sémaphore dont la valeur initiale est xée à 1. Un tel
sémaphore est couramment appelé sémaphore d'exclusion mutuelle
ou mutex.
Le repect de la section critique peut être garanti à l'encadrant par
les appels P() et V()
Figure: Exclusion mutuelle par les sémaphores
Exercies
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Exclusion mutuelle par sémaphores
D'après la gure,
Le premier processus désirant entrer en section critique (on
suppose que celle-ci est libre), eectue un appel à P(), et
prend donc le seul ticket disponible. La valeur du sémaphore
passe à 0;
Dès lors, tout autre processus désirant entrer en section
critique, se voit mis en attente sur le sémaphore (lors de son
appel à P()), car la valeur de ce dernier est nulle;
Enn, lorsque l'exécution de la section critique est terminée, le
processus l'ayant occupé eectue son appel à V an de rendre
son ticket : la valeur du sémaphore redevient positive, en
l'occurrence égale à 1, et le (ou les) processus éventuellement
bloqués peuvent accéder, à tour de rôle et selon la méthode
précédemment décrite, à la section critique.
Introduction
Processus
Threads
Synchronisation
Les sémaphores
Exercies
Exclusion mutuelle par sémaphores
La section critique étant protégée par un sémaphore ne disposant
que d'un ticket : un seul processus peut exécuter l'opération P
avant celle-ci ne devienne bloquante, et seul l'opération V exécutée
après la n de la section critique autorise à nouveau l'exécution de
P. Donc l'exclusion mutuelle est donc bien assuré.
Introduction
Processus
Threads
Synchronisation
Exposés
Le coieur endormi > Groupe 1
Le coieur toujours endormi > Groupe 2
Producteurs / Consomateurs > Groupe 3
Lecteur / Rédacteurs > Groupe 4
Dîner des philosophes > Groupe 5
Les sémaphores
Exercies
Téléchargement