Université de Bouïra – Département d'Informatique – Année universitaire 2018-2019
Systèmes d'exploitation – Première année Master ISIL
Série de Travaux Dirigés N°2 : Synchronisation
Exercice 1
Considérons trois processus P1, P2 et P3 tels que :
- P1 calcule la somme S1 = A + B.
- P2 calcule S2 = 2 * S1 + 4.
- P3 calcule S3 = S1 + S2.
Écrire les codes des trois processus en utilisant les sémaphores.
Exercice 2
On considère un ensemble de six processus A, B, C, D, E et F. Les règles de dépendance sont les suivantes :
- Le processus A doit précéder les processus B, C et D.
- Les processus B et C doivent précéder le processus E.
- Les processus D et E doivent précéder le processus F.
Réaliser la synchronisation de ces processus en utilisant les sémaphores.
Exercice 3
Soit l'exécution parallèle des deux processus suivants :
Processus A() {while (1) {I1;}}Processus B() {while (1) {I2;}}- Utiliser un sémaphore pour synchroniser les deux processus de telle manière que l'exécution de l'instruction I1 ne soit jamais simultanée avec l'exécution de l'instruction I2.
- Utiliser deux sémaphores pour synchroniser les deux processus de telle manière que les instructions I1 et I2 se déroulent toujours dans l'ordre : I1, I2, I1, I2, I1, I2...
- Utiliser deux sémaphores pour synchroniser les deux processus de telle manière que les instructions I1 et I2 se déroulent toujours dans l'ordre alterné : I1, I2, I2, I1, I2, I2, I1, I2, I2...
Exercice 4
Problème des Producteurs/Consommateurs
Dans le problème des producteurs et consommateurs, plusieurs processus partagent une mémoire tampon de taille fixe. Les producteurs y déposent des informations (messages), tandis que les consommateurs les retirent. Voici les règles à respecter :
- Les producteurs ne peuvent produire que si le tampon n'est pas plein. Ils doivent être bloqués tant que le tampon est pleine.
- Les consommateurs ne peuvent retirer les informations que si le tampon n'est pas vide. Ils doivent être bloqués tant que le tampon est vide.
- Les processus ne doivent pas accéder simultanément au tampon.
Écrire les algorithmes des deux processus permettant leur synchronisation au niveau de l'accès au tampon à l'aide des sémaphores.
Résoudre le même problème dans l'hypothèse où le tampon est non bornée (tampon de taille infinie).
FAQ
Qu'est-ce qu'un sémaphore en systèmes d'exploitation ?
Un sémaphore est un mécanisme de synchronisation utilisé pour contrôler l'accès à une ressource partagée entre plusieurs processus. Il permet d'éviter les conditions de course et les interblocages.
Comment synchroniser des processus avec des sémaphores ?
Les sémaphores peuvent être utilisés pour bloquer ou débloquer des processus en fonction de l'état de la ressource. Par exemple, un producteur utilise un sémaphore pour vérifier si le tampon est pleine avant de produire.
Quelle est la différence entre un tampon borné et non borné ?
Un tampon borné a une taille fixe, ce qui nécessite une synchronisation stricte pour éviter les débordements. Un tampon non borné, de taille infinie, simplifie la synchronisation mais peut poser des problèmes de performance.