Académique Documents
Professionnel Documents
Culture Documents
Systèmes d’Exploitation
Cours 7/13 : Partiel 2016-2017
Nicolas Sabouret
Université Paris-Sud
Licence 3 - semestre S5
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
5 Conclusion
Cycle de vie
Cycle de vie
Exécution
Prêt En Attente
Ordonnancement
Ordonnancement
P1 0 1 P2, P3 2 3 4 5 6
Mémoire paginée/segmentée/virtuelle
Mémoire paginée/segmentée/virtuelle
page 3 page
page page
page
Synchronisation
Synchronisation
P1 Section Critique
Mutex
P2 Section Critique
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
5 Conclusion
Ordonnancement
On considère cinq processus. Nous indiquons la date d’arrivée dans
l’ordonnanceur et la durée estimée :
Ordonnancement
On considère cinq processus. Nous indiquons la date d’arrivée dans
l’ordonnanceur et la durée estimée :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3 P5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3 P5 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3 P5 P4 P2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3 P5 P4 P2 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P3 P5 P4 P2 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5 P1 P2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5 P1 P2 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Date
UC P1 P2 P3 P4 P5 P1 P2 P1
(0 + 8 + 1) + (2 + 8) + 5 + 6 + 7) 37
= = 7.4
5 5
Ordonnancement
Comparaison
Quel est le meilleur algorithme suivant le critère du temps d’attente
moyen ? Et suivant le critère du temps d’attente min-max ?
Ordonnancement
Comparaison
Quel est le meilleur algorithme suivant le critère du temps d’attente
moyen ? Et suivant le critère du temps d’attente min-max ?
Ordonnancement
Commutation
Si le temps de commutation est de 0,5 unités de temps, quel est le
temps total d’exécution des algorithmes ?
Ordonnancement
Commutation
Si le temps de commutation est de 0,5 unités de temps, quel est le
temps total d’exécution des algorithmes ?
Ordonnancement
Ordonnancement
À discuter. . .
Dilemme famine (SRT) vs réactivité (RR) vs performance
Algorithmes avec priorité Linux/Windows
Temps total de chaque processus ?
Info32b Systèmes d’Exploitation Nicolas Sabouret 15/28
Questions de cours Ordonnancement Processus Synchronisation Conclusion
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
5 Conclusion
Code C
# include ...
# define N 100
int k = 1;
int main () {
int t [ N ];
int i ;
for ( i =0; i < N ; i ++)
t [ i ] = rand ()% N ;
Code C
# include ...
# define N 100 Processus 1
int k = 1; Que fait le processus 1 ?
int main () {
int t [ N ];
int i ;
for ( i =0; i < N ; i ++)
t [ i ] = rand ()% N ;
Code C
# include ...
# define N 100 Processus 1
int k = 1; Que fait le processus 1 ?
int main () {
int t [ N ]; Attention : c’est celui pour lequel
int i ;
for ( i =0; i < N ; i ++) fils6=0 !
t [ i ] = rand ()% N ;
Code C
# include ...
# define N 100 Processus 0
int k = 1; Que fait le processus 0 ?
int main () {
int t [ N ];
int i ;
for ( i =0; i < N ; i ++)
t [ i ] = rand ()% N ;
Code C
# include ...
# define N 100 Processus 0
int k = 1; Que fait le processus 0 ?
int main () {
int t [ N ]; Attention : c’est le fils !
int i ;
for ( i =0; i < N ; i ++)
t [ i ] = rand ()% N ;
Ü Le tableau a été initialisé par
pid_t fils = fork ();
le père
if ( fils ==0) {
k =0; Ü Calcule le maximum des
for ( i =0; i < N ; i ++)
if ( t [0] < t [ i ]) éléments dans t[0]
t [0]= t [ i ];
} Ü Affiche le résultat
else {
for ( i =1; i < N ; i ++)
t [0]+= t [ i ];
waitpid ( fils , NULL ,0);
}
Concurrence
Erreur
Y a-t-il un risque pour que les deux processus ne fournissent pas le
résultat souhaité ?
Concurrence
Erreur
Y a-t-il un risque pour que les deux processus ne fournissent pas le
résultat souhaité ?
Ce qui est à craindre, c’est que chacun bousille le tableau de l’autre. . .
Concurrence
Erreur
Y a-t-il un risque pour que les deux processus ne fournissent pas le
résultat souhaité ?
Ce qui est à craindre, c’est que chacun bousille le tableau de l’autre. . .
Concurrence
Communication
Comment faire pour que les processus puissent utiliser le résultat
de l’autre processus ?
Concurrence
Communication
Comment faire pour que les processus puissent utiliser le résultat
de l’autre processus ?
Ce qui ne marche pas, c’est d’utiliser le code retour du fils : ça ne passe que
dans un sens !
Concurrence
Communication
Comment faire pour que les processus puissent utiliser le résultat
de l’autre processus ?
Ce qui ne marche pas, c’est d’utiliser le code retour du fils : ça ne passe que
dans un sens !
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
5 Conclusion
Données du problème
Une route reliant Paris et l’Université Paris-Sud. La particularité de
cette route est d’être à circulation alternée : des voitures peuvent y
circuler ensemble dans le sens Orsay → Paris ou dans le sens Paris
→ Orsay, mais elles ne doivent jamais pouvoir se croiser.
Nous avons donc deux classe d’utilisateurs : VP→O (voitures de
Paris vers Orsay) et VO→P .
Analyse du problème
Section critique
Rappeler la définition d’une section critique ainsi que les trois
critères qui y sont associés.
Analyse du problème
Section critique
Rappeler la définition d’une section critique ainsi que les trois
critères qui y sont associés.
Ü Une section critique est une portion de code qu’on ne peut
pas interrompre car elle contient des variables partagées.
Ü On souhaite garantir l’exclusion mutuelle, le déroulement et
l’attente bornée (ou vivacité).
Analyse du problème
Section critique
Rappeler la définition d’une section critique ainsi que les trois
critères qui y sont associés.
Ü Une section critique est une portion de code qu’on ne peut
pas interrompre car elle contient des variables partagées.
Ü On souhaite garantir l’exclusion mutuelle, le déroulement et
l’attente bornée (ou vivacité).
Problème similaire
Expliquez l’analogie avec le problème des lecteurs-écrivains (TD4).
Analyse du problème
Section critique
Rappeler la définition d’une section critique ainsi que les trois
critères qui y sont associés.
Ü Une section critique est une portion de code qu’on ne peut
pas interrompre car elle contient des variables partagées.
Ü On souhaite garantir l’exclusion mutuelle, le déroulement et
l’attente bornée (ou vivacité).
Problème similaire
Expliquez l’analogie avec le problème des lecteurs-écrivains (TD4).
Ü C’est un problème de lecteurs-écrivains, sauf qu’il peut y avoir
plusieurs écrivains en même temps.
Info32b Systèmes d’Exploitation Nicolas Sabouret 23/28
Questions de cours Ordonnancement Processus Synchronisation Conclusion
Solution
Sémaphores
En utilisant des sémaphores, écrivez les fonctions de demande
d’accès et de sortie pour le tronçon Paris → Orsay et Orsay →
Paris.
Solution
Sémaphores
En utilisant des sémaphores, écrivez les fonctions de demande
d’accès et de sortie pour le tronçon Paris → Orsay et Orsay →
Paris.
Il faut au moins 3 sémaphores :
Un pour bloquer l’accès à la route (dans le sens contraire)
Un qui sert de MUTEX pour qu’un seul véhicule s’engage
dans le sens P→O
Un qui sert de MUTEX dans le sens O→P
Et une variable pour savoir s’il reste des gens sur la route. . .
Solution
Sémaphores
En utilisant des sémaphores, écrivez les fonctions de demande
d’accès et de sortie pour le tronçon Paris → Orsay et Orsay →
Paris.
Sempahore route, mutexOP, mutexPO;
int nbOP, nbPO;
fonction OPaccess :
mutexOP.verrouiller();
nbOP++;
si (nbOP == 1) route.acquerir();
mutexOP.relacher();
fonction OPexit :
mutexOP.acquerir();
nbOP--;
si (nbOP == 0) route.relacher();
mutexOP.relacher();
Ça se complique. . .
Camions
Le camion de travaux ne peut accéder à un tronçon que s’il n’y a
aucun autre camion et aucun autre automobiliste.
Proposer une solution pour ajouter cette contrainte.
Ça se complique. . .
Camions
Le camion de travaux ne peut accéder à un tronçon que s’il n’y a
aucun autre camion et aucun autre automobiliste.
Proposer une solution pour ajouter cette contrainte.
Ü Il faut rajouter deux fonctions entreeCamion et
sortieCamion qui prennent le sémaphore route.
Ça se complique. . .
Camions
Le camion de travaux ne peut accéder à un tronçon que s’il n’y a
aucun autre camion et aucun autre automobiliste.
Proposer une solution pour ajouter cette contrainte.
Ü Il faut rajouter deux fonctions entreeCamion et
sortieCamion qui prennent le sémaphore route.
Sempahore route, mutexOP, mutexPO;
int nbOP, nbPO;
fonction OPaccessCamion :
route.verrouiller();
fonction OPexitCamion :
route.relacher();
Étude du résultat
Famine
Y’a-t-il un risque de famine ?
Étude du résultat
Famine
Y’a-t-il un risque de famine ?
La réponse dépend de la solution donnée !
Ü Dans le corrigé ci-avant, oui, il y a risque de famine
Un groupe de voiture en continu dans un sens peut maintenir la route
verrouillée avec des nbXX++.
Ü Il faudrait un sémaphore en plus (dans chaque sens et pour le
camion) pour demander l’accès
(attention à l’ordre pour ne pas créer d’interblocage !)
Plan
1 Questions de cours
2 Ordonnancement
3 Processus
4 Synchronisation
5 Conclusion
Pour conclure. . .
Bonnes révisions !