Devoir Surveillé - Systèmes d’exploitation

Page 1 sur 1Lecteur de document UniversityLib

Devoir Surveillé - Systèmes d’exploitation

Systèmes d'exploitation, Programmation, Mathématiques · exam

***Ecole Nationale des Sciences de l’Informatique A. U. : 2011/2012***

**Devoir Surveillé**

**Classes :** II2 **Date  :** 16/11/2011

**Module :** Systèmes d’exploitation **Durée  :** 2h00

**Documents :** Non autorisés **Nb. Pages :**2

**Enseignants:** F. Najjar, M. S. Ouerghi, Z. Bouyahia & N. Ben Yahia

Exercice 1 : Questions de cours (8 points— 1+10\*0.5+1+1)

1. Que signifient les termes PCB, scheduler ? à quoi servent-ils? 2. Expliquez succinctement la différence entre les termes qui composent  chacune des paires suivantes: 1. Un processus et un thread ? 2. Un noyau et un micronoyau ? 3. Une ressource partagée et une ressource critique ? 4. Le mode maître (ou kernel mode) et le mode esclave (ou user mode) ? 5. Une synchronisation et une communication ? 6. Une attente active et une attente passive (blocage) ? 7. Une famine et un excès de politesse ? 8. *wait(pid, etat)* et *sleep(temps)* ? 9. Un processus zombi et un processus orphelin ? 10. Un sémaphore et un moniteur ? 3. Quels sont les avantages du multithreading par rapport au multitâches ? 4. Est-ce que les sémaphores peuvent être utilisés comme moyen de synchronisation entre processus distants (c’est-à-dire dans les systèmes distribués)?. Expliquez succinctement.

**Exercice 2: IPC- Moniteur** (6 points)

Un ensemble de N (N > 4) processus, où chacun dispose d’une priorité unique. Ces processus partagent 3 imprimantes LP0, LP1, LP2. Pour éviter de mélanger les lignes sorties de chaque processus, le processus Pi doit réserver l’imprimante avant de l’utiliser. Les codes des deux fonctions: *allouer()* et *liberer()*sont comme suit:

| | | | | | | | --- | --- | --- | --- | --- | --- | | ***public void allouer()*** | | | | ***public void liberer()*** | | | *{ int id;* *…………………* *id = getpid();* *At\_proc[Nb\_At]= id;* *Sort(At\_proc);* *…………………* *}* | | | | *{* *…………………* *}* | |

Ecrire un moniteur, ‘’Printer’’, qui alloue trois imprimantes identiques à ces processus, en favorisant le plus prioritaire d’abord. Pour cela, on vous demande de compléter les procédures publique allouer() et liberer() utilisant les variables et fonctions suivantes :

* Dispo : un entier indiquant le nombre d’imprimantes actuellement disponible * Nb\_At : un entier indiquant le nombre de processus en attente d’allouer une imprimante * At\_Proc : un tableau contenant les identificateurs des processus en attente. * C : une variable condition qui gère le flux des processus demandeurs * Sort : une procédure qui prend en paramètre un tableau d’id. de processus et retourne en résultat le tableau trié selon la priorité (décroissante).

**Exercice 3 : Synchronisation par sémaphores (6 points)**

L’Assemblée constituante tunisienne est formée de N=217 membres élus. La plupart des travaux de cette assemblée se font en séance plénière ouverte au public. Lorsqu’il s’agit de voter un texte de loi, les travaux de cette assemblée se fait en comité restreint à ses membres

Pour que la réunion de l’assemblée puisse démarrer, afin de discuter et puis voter un texte de loi, un quorum égal au moins au 2/3 des membres élus doit être atteint.

L’avis d’un élu concernant une loi à voter est restreint à un choix parmi : (favorable, défavorable, sans opinion). Son choix est porté sur un bulletin de vote, disponible en un seul exemplaire pour chaque votant.

Une fois les discussions terminées, le vote peut avoir lieu. Les votants glissent à tour de rôle leur bulletin de vote dans l’urne.

Publicité

Un texte de loi voté ne peut être signé par le Président de l’Assemblé que s’il reçoit 51% d’avis favorables.

On vous demande de compléter la solution suivante, à base de sémaphores, qui suppose l’existence de 3 processus à synchroniser, à savoir :

* Se\_reunir : gère le démarrage d’une séance de l’assemblée ; * Voter: concerne le déroulement du vote ; et * Signer\_texte\_loi : comptabilise les voix et décide de la signature ou non du texte de loi.

**Variables partagées**

*#define N 217*

*#define Quorum 2\*(N div 3) ;*

*int Nb\_Votant=Nb\_vote=0 ;*

*semaphore ……………….*

| | | | | --- | --- | --- | | **Processus Se\_Reunir** | **Processus Voter** | **Processus Signer\_texte\_loi** | | *………….* *Nb\_Votant++ ;* *if (Nb\_Votant<quorum)* *………….* *else if (Nb\_Votant ==quorum)* *………….* | *………….* *Faire\_choix()* *………….* *Deposer\_bulletin\_vote();* *Nb\_Vote++;* *………….* *If (Nb\_Votant== Nb\_vote)* *………….* | *………….* *depouiller(Nb\_favorable, Nb\_defavorable) ;* *………….* |

**Proposition de Correction**

**DS SE&PC du 16/11/2011**

Exercice 1: Questions de cours (8 points— 1+10\*0.5+1+1)

1. Que signifient les termes PCB, scheduler ? à quoi servent-ils?

**PCB—Process Control bloc: il sert au système afin gérer le processus corresp. Par contre, un scheduler est un ordonnanceur —module système servant à ordonnancer les processus prêts afin d’en allouer le processeur.**

1. Expliquez succinctement la différence entre les termes qui composent  chacune des paires suivantes: 1. Un processus et un thread ?

🡪 **Un processus est une unité de structuration (Code+données+pile d’exécution) et un thread est un processus léger ou encore une unité d’exécution.**

* 1. Un noyau et un micronoyau ? 🡪 **un micronoyau est un noyau système minimaliste (client/serveur) c-à-d le reste du système (serveur sous-système) est chargé dans la mémoire utilisateur et à la demande.** 2. Une ressource partagée et une ressource critique ?

🡪 Une ressource critique est une ressource partagée à accès exclusif ou encore le nombre de point d’accès est égal à 1.

Publicité

* 1. Le mode maître (ou kernel mode) et le mode esclave (ou user mode) ? 🡪 mode maître (privilégié) mode user(mode non privilégié) 2. Une synchronisation et une communication ? 🡪une synchronisation suppose le partage de mémoire alors la communication se fait par passage de messages. 3. Une attente active et une attente passive (blocage) ? 🡪 **une attente active occupe le processeur (par boucle vide –*while (ressource\_occupee) ;*) alors qu’un blocage libère le processeur.** 4. Une famine et un excès de politesse ? 🡪 **pareil ! un processus en attente infinie d’une ressource partagée car d’autres plus prioritaire l’occupent toujours !** 5. *wait(pid, etat)* et *sleep(temps)* ? 🡪 **la fct wait est un moyen de synchronisation entre père et fils alors que sleep est un moyen pour ralentir l’exécution d’un processus !** 6. Un processus zombi et un processus orphelin 🡪 un zombi est un processus qui a terminé son exécution sans avoir le signaler à son père alors qu’un orphelin est un processus dont son père est terminé avant lui. 7. Un sémaphore et un moniteur ? 🡪 tous deux sont des moyens de synchronisation mais un moniteur est à un niveau d’abstraction plus haut dans le sens qu’il garantit implicitement l’exclusion mutuelle

1. Quels sont les avantages du multithreading par rapport au multitâches ? 🡪 amélioration du débit (rendement) ; meilleure structuration des programmes concurrents ; meilleure disponibilité des processus et meilleure utilisation des ressources 2. Est-ce que les sémaphores peuvent être utilisés comme moyen de synchronisation entre processus distants (c’est-à-dire dans les systèmes distribués)?. Expliquez succinctement.

🡪 Une synchronisation par partage de mémoire et une communication par passage de messages

**Exercice 2: IPC-Moniteur (6 points)**

**Monitor printers *{***

***//Declaration+ init* (2 points—4\*0,5/variable)**

**int Dispo = 3;**

**int At\_Proc[MAX\_PROC];**

**int NbAtt=0;**

**condition c;**

**public void allouer()**

***{ int id ;***

**if (Dispo > 0)**

***{* Dispo--; // (0,5)**

**exit;**

***}***

***id = getpid();***

**At\_Proc[Nb\_At] = id;**

Publicité

**Nb\_At ++; // (0,25)**

**sort(At\_proc);**

**while (!Dispo && (At\_Proc[0] != id)) // (1,5)**

**wait(C);**

**At\_Proc[0] = At\_Proc[Nb\_At-1];**

**Nb\_At--; // (0,25)**

**sort(At\_proc);**

**Dispo --;**

***}***

**Public void release printer()**

***{* Dispo++; // (0,75)**

**broadcast(C); // (0,75)**

***}***

***}***