École Supérieure des Sciences et de la Technologie de Hammam Sousse
TP : Système D’exploitation 2 Durée : 1h30 / Classe : LI1
Enseignant : Ben Khlifa Hamza Année universitaire : 2025-2026
💻 TP4 : Les Sémaphores
Introduction
Les sémaphores sont des mécanismes de synchronisation permettant de contrôler l'accès à des ressources
partagées dans un environnement multitâche. Ils sont largement utilisés pour éviter les problèmes de conditions
de course et garantir l'exclusion mutuelle.
Rappels sur les concepts fondamentaux
🔒 Section critique et exclusion mutuelle
Une section critique est une partie de code qui accède à une ressource partagée. Pour éviter les conflits d'accès,
l'exclusion mutuelle garantit que seule une entité (processus ou thread) peut accéder à cette ressource à la fois.
🎭 Objet critique vs Section critique
• Objet critique : C'est une ressource partagée qui doit être protégée contre les accès concurrents. Il peut
s'agir d'une variable, d'un fichier, d'une base de données ou d'un périphérique.
• Section critique : C'est la partie du programme où cet objet critique est manipulé. Pour garantir la
cohérence des données, seule une entité (processus ou thread) doit pouvoir y accéder à un instant
donné.
🏛 Définition d'un sémaphore
Un sémaphore est une variable partagée qui peut prendre plusieurs valeurs et qui est utilisée pour synchroniser
l'exécution des processus ou threads.
🎭 Opérations sur les sémaphores
• Init(s, valeur) : Initialise le sémaphore s avec une valeur donnée.
• P(s) ou Wait(s) : Décrémente s et bloque si s <= 0 (attente de libération).
• V(s) ou Signal(s) : Incrémente s, libérant un processus ou un thread en attente.
📜 Pseudo-code des opérations sur les sémaphores
Initialisation d'un sémaphore
Init(s, valeur) {
s = valeur;
file_attente = vide;
}
1/3
TP : Système D’exploitation 2 Durée : 1h30 / Classe : LI1
Enseignant : Ben Khlifa Hamza Année universitaire : 2025-2026
💻 TP4 : Les Sémaphores
Introduction
Les sémaphores sont des mécanismes de synchronisation permettant de contrôler l'accès à des ressources
partagées dans un environnement multitâche. Ils sont largement utilisés pour éviter les problèmes de conditions
de course et garantir l'exclusion mutuelle.
Rappels sur les concepts fondamentaux
🔒 Section critique et exclusion mutuelle
Une section critique est une partie de code qui accède à une ressource partagée. Pour éviter les conflits d'accès,
l'exclusion mutuelle garantit que seule une entité (processus ou thread) peut accéder à cette ressource à la fois.
🎭 Objet critique vs Section critique
• Objet critique : C'est une ressource partagée qui doit être protégée contre les accès concurrents. Il peut
s'agir d'une variable, d'un fichier, d'une base de données ou d'un périphérique.
• Section critique : C'est la partie du programme où cet objet critique est manipulé. Pour garantir la
cohérence des données, seule une entité (processus ou thread) doit pouvoir y accéder à un instant
donné.
🏛 Définition d'un sémaphore
Un sémaphore est une variable partagée qui peut prendre plusieurs valeurs et qui est utilisée pour synchroniser
l'exécution des processus ou threads.
🎭 Opérations sur les sémaphores
• Init(s, valeur) : Initialise le sémaphore s avec une valeur donnée.
• P(s) ou Wait(s) : Décrémente s et bloque si s <= 0 (attente de libération).
• V(s) ou Signal(s) : Incrémente s, libérant un processus ou un thread en attente.
📜 Pseudo-code des opérations sur les sémaphores
Initialisation d'un sémaphore
Init(s, valeur) {
s = valeur;
file_attente = vide;
}
1/3