- Teacher: Abdelhakim HERROUZ

Résumé du Cours : Systèmes d’Exploitation 2
Objectifs du cours
Cette matière vise à étudier les principes fondamentaux du parallélisme dans les systèmes d’exploitation, en particulier sous Unix. L’accent est mis sur la synchronisation des processus et des threads, la gestion de l’accès concurrent aux ressources, les mécanismes de communication interprocessus et l’analyse des interblocages. Les séances de travaux dirigés et pratiques permettent d’aborder les modèles classiques de synchronisation et leur implémentation en langage C.
1. Rappels sur les systèmes d’exploitation
Un système d’exploitation (SE) assure la gestion des ressources matérielles et le contrôle de l’exécution des programmes.
Les notions essentielles incluent :
Programme, processus, thread
- Programme : séquence d’instructions stockées de manière statique.
- Processus : instance active d’un programme avec son espace mémoire propre.
- Thread : unité d’exécution au sein d’un processus, partageant ses ressources.
Ressources partagées
Les processus peuvent partager des variables, des fichiers ou des zones mémoire, ce qui nécessite des mécanismes de contrôle.
Expression du parallélisme
- Notions abstraites: parbegin/parend, fork/join.
- Mécanismes Unix : fork(), wait(), threads POSIX (pthread_create, pthread_join).
2. Synchronisation des processus
2.1 Problème de l’accès concurrent
L'accès simultané à une ressource peut produire des résultats incohérents. Les sections critiques sont les zones de code nécessitant un accès exclusif.
Le but est de garantir l’exclusion mutuelle, l’absence d’attente indéfinie et l’équité.
2.2 Mécanismes de synchronisation
- Verrous / Mutex : assurent l’exclusion mutuelle simple.
- Sémaphores : sémaphores binaires et compteurs, opérations P() et V().
- Moniteurs : encapsulation de données partagées et d’opérations, avec des variables conditionnelles.
2.3 Modèles classiques
- Producteur – Consommateur : gestion d’un tampon partagé, problèmes de tampon vide ou plein.
- Lecteurs – Rédacteurs : priorité, équité, évitement de la famine.
- Philosophes autour de la table : métaphore illustrant les risques de blocage et les stratégies de synchronisation.
3. Communication interprocessus (IPC)
3.1 Mémoire partagée
Permet l’échange direct de données mais implique une synchronisation rigoureuse.
3.2 Boîtes aux lettres (mailboxes)
Mécanisme intermédiaire permettant une communication asynchrone entre processus.
3.3 Échange de messages
Mode de communication directe ou indirecte, synchrone ou asynchrone.
Utilisé dans de nombreux modèles coopératifs comme producteur/consommateur.
4. Interblocages (Deadlocks)
4.1 Définition
Un interblocage survient lorsque chaque processus d’un ensemble attend indéfiniment une ressource détenue par un autre processus.
4.2 Conditions nécessaires (Coffman)
- Exclusion mutuelle
- Maintien et attente
- Absence de préemption
- Attente circulaire
4.3 Graphe d’allocation des ressources
Modélisation visuelle permettant d’identifier les cycles d’attente, sources d’interblocages.
4.4 Techniques de traitement
- Prévention : éliminer une des conditions de Coffman.
- Évitement : vérifier l’absence d’état dangereux (ex. : algorithme du banquier).
- Détection et récupération : identifier l’interblocage et libérer des ressources.
- Ignorer : utilisé dans certains systèmes où l’interblocage est jugé rare.
Résumé télégraphique (révision rapide)
Objectifs
- Comprendre parallélisme et synchronisation sous Unix
- Manipuler processus/threads en C
- Résoudre accès concurrents, IPC, interblocages
- Étudier modèles classiques (prod/cons, lecteurs/rédacteurs, philosophes)
Rappels SE
- Programme = code statique ; Processus = instance active ; Thread = exécution légère
- Ressources partagées → risques d’incohérence
- Utiliser fork/join, fork(), threads POSIX
Synchronisation
- Section critique → nécessité d’exclusion mutuelle
- Outils :
- Mutex/verrou
- Sémaphore (binaire/compteur, P/V)
- Moniteur (données + procédures + variables conditionnelles)
- Modèles :
- Prod./Cons. → tampon partagé
- Lecteurs/Rédacteurs → gestion de priorités
- Philosophes → risques de blocage/famine
IPC
- Mémoire partagée → rapide mais nécessite synchronisation
- Mailboxes → communication asynchrone
- Messages → envoi/réception, synchrone ou asynchrone
Interblocages
- Conditions Coffman (4) → exclusion, attente, non-préemption, cycle
- Graphe ressources/processus → détection des cycles
- Solutions :
- Prévention
- Évitement (banquier)
- Détection + récupération
- Ignorer (cas Unix)
Conclusion
Ce cours offre une compréhension avancée des mécanismes essentiels au fonctionnement des systèmes parallèles : gestion des processus, synchronisation, communication interprocessus et résolution d’interblocages. L’apprentissage repose à la fois sur une base théorique approfondie (modèles classiques) et sur une mise en pratique rigoureuse via la programmation en C sous Unix, permettant d’acquérir des compétences indispensables à la conception de systèmes robustes et sûrs.
- Teacher: Abdelhakim HERROUZ