Systèmes d'Exploitation Avancés
Révision
Amine DHRAIEF
Mastère professionnel en
Modélisation, Bases de Données et
Intégration des Systèmes
ESEN, Univ. Manouba
GESTION DE LA MÉMOIRE
Exercice I
• Considérez un système de gestion de mémoire
qui a les caractéristiques suivantes :
– Un adressage virtuel sur 32 bits (dont 14 bits pour
les numéros de segments et 6 bits pour les numéros
de pages)
– Une taille de Page de 4Ko
– Une mémoire physique de 1 Mo
• Supposez que le système utilise la
segmentation paginée
Exercice I
1. Quelle est la taille du plus grand
segment (en pages/Ko)?
2. Quelles sont les données manquantes à ce
problème pour traduire l’adresse virtuelle de
32 bits suivante : 0xAE854C9C en adresse
physique ? Si vous aviez ces informations,
identifiez brièvement les étapes à suivre
pour effectuer cette translation.
Exercice I
• Supposons maintenant que le système
considéré utilise une pagination à deux
niveaux, où les entrées du de la table de
page de premier niveau sont sur 4 octets
• La structure de l’adresse virtuelle est
composée de
#page niveau 1
#page niveau 2
Déplacement page
(10bits)
(10bits)
(12 bits)
EXERCICE I
Exercice I
3. Si un processus utilise tout l’espace adressable qui lui est
fourni, combien de pages seront-elles nécessaires pour
contenir toutes les tables de pages de ce processus
4. Un second processus nécessite 22Mo pour s’exécuter
entièrement (son code, ses données, pile…). La partie
contenant son code est disposée dans sa mémoire virtuelle
aux adresses suivantes [2Mo à 6Mo-1], les données sont
quant à elles dans l’intervalle [12Mo à 21Mo-1]. Si nous
devons charger les tables de pages associées à ces deux
parties, combien de pages de niveaux 2 seront chargées en
mémoire centrale.
Correction exercice I
1. @virtuelle : #seg. (14bits) | #p (6bits) | depl. (12 bits)
@ physique: #case (20bits) | depl. (12 bits)
Plus grand segment : 26 =64 pages ou encore 26*212=256Ko
2. Il manque la table des segments qui va nous
indiquer la table de pages associée au segment
désiré. Cette table des pages nous permettra
d’obtenir le cadre associé à notre adresse.
L’adresse physique est obtenue en remplaçant les
numéros de segment et de page par le numéro du
cadre
Correction exercice I
3. Table de premier niveau : nombre d’entrées = 210 entrées
• Nombre de table de second niveau = 210 tables
• Chaque entrée d’une table de second niveau pointe sur un cadre de
page
• Nombre d’entrée par table de second niveau 210 entrées
• → nombre de cadres de pages = (210 tables de second niveau)*(210
entrées par table de second niveau) = 220
• Un déplacement de 12 bits = taille max d’une page 212 bits = 4* 210 bits
= 4 Koctets
• → Taille totale en KOctets = 4 220 KO= 4 210 * 210 KO = 4Go
Correction exercice I
4. Chaque entrée de la table des pages de niveau 2 est
associée à un cadre de 4Ko (212). Sachant qu’une table de
pages de niveau 2 contient 210 entrées, elle référence 210 *
212 o =4Mo de la mémoire virtuelle. La première table de
niveau 2 référence la mémoire virtuelle comprise entre [0,
4Mo-1], la seconde [4Mo, 8Mo-1] et ainsi de suite…..
• pour le code → 2 tables de pages de niveaux 2 seront
nécessaires (c-à-d 2 pages)
• pour les données 3 tables de pages de niveaux 2 seront
nécessaires (c-à-d 3 pages).
Exercice II: Taille de cache
• Soit la suite d’accès aux pages suivantes
{0,1,2,3,1,2,3,4,2,3,4,5,1,0,2,3,2,5}
• Une mémoire tampon de 3 pages
• Faites l’analyse des fautes de pages pour les
algorithmes PAPS et LRU
• Lequel semble préférable ?
• Si la mémoire tampon est portée à 4 pages,
la conclusion change-t-elle?
Correction Exercice II
0
0
-
-
1
0
1
-
2
0
1
2
3
3
1
2
1
3
1
2
2
3
1
2
3
3
1
2
4
3
4
2
2
3
4
2
3
3
4
2
4
3
4
2
5
3
4
5
1
1
4
5
0
1
0
5
2
1
0
2
3
3
0
2
0
1
2
2
3
0
2
5
3
5
2
Publicité
L’analyse des fautes de pages pour les algorithmes
PAPS : la page la plus ancienne est remplacé
→ 11 défaut de pages
Correction Exercice II
0
0
-
-
1
0
1
-
2
0
1
2
3
3
1
2
1
3
1
2
2
3
1
2
3
3
1
2
4
3
4
2
2
3
4
2
3
3
4
2
4
3
4
2
5
3
4
5
1
1
4
5
0
1
0
5
2
1
0
2
3
3
0
2
0
1
2
2
3
0
2
5
3
5
2
LRU: La page qui n'a pas été utilisée pendant le plus de
temps qui est retirée
→ 11 défaut de pages
Correction Exercice II
0
0
-
-
1
0
1
-
2
0
1
2
-
3
0
1
2
3
1
0
1
2
3
2
0
1
2
3
3
0
1
2
3
4
4
1
2
3
2
4
1
2
3
3
4
1
2
3
4
4
1
2
3
5
4
5
2
3
1
4
5
1
3
0
4
5
1
0
2
2
5
1
0
3
2
3
1
0
0
1
2
3
2
2
3
1
0
5
Publicité
2
3
5
0
L’analyse des fautes de pages pour les algorithmes PAPS : la page la plus ancienne est
remplacé
→ 11 défaut de pages bien qu’on dispose plus de mémoire
ANOMALIE DE BELADY: le taux de défaut de page PEUT CROITRE en même temps que le
nombre de cadre de page alloués
Fournir plus de mémoire à un processus n’accroit pas forcément ses performances
Correction Exercice II
0
0
-
-
1
0
1
-
2
0
1
2
-
3
0
1
2
3
1
0
1
2
3
2
0
1
2
3
3
0
1
2
3
4
4
1
2
3
2
4
1
2
3
3
4
1
2
3
4
4
1
2
3
5
4
5
2
3
1
4
5
1
3
0
4
5
1
0
2
2
5
1
0
3
2
3
1
0
0
1
2
3
2
2
3
1
0
5
2
3
5
0
LRU: La page qui n'a pas été utilisée pendant le plus de temps qui est retirée
11 défaut de pages bien qu’on dispose plus de mémoire
ANOMALIE DE BELADY: le taux de défaut de page PEUT CROITRE en même temps
que le nombre de cadre de page alloués
Fournir plus de mémoire à un processus n’accroit pas forcément ses performances
Exercice III: algorithme LRU dans le pire cas
• Soit la suite d’accès aux pages suivantes: {0,1,2,3, 0,1,2,3,
0,1,2,3,….} et une mémoire tampon de 3 pages
1. Proposez une méthodologie d’échange qui soit optimale
pour ce cas précis
2. En moyenne, pour une longue séquence de ce genre, quel
est le nombre de fautes de pages de LRU par rapport à la
solution optimal ?
3. Que se passe-t-il si on passe à la séquence {0,1,2,3,4,
0,1,2,3,4, 0,1,2,3,4, …} avec un tampon de 4 pages ? Qu’en
déduire pour les performances de LRU par rapport à
l’algorithme optimal ?
Correction Exercice III
0
0
1
1
2
2
3
3
0
0
1
1
2
2
3
3
0
0
0
1
2
1
1
2
2
0
0
3
3
3
3
1
2
1
2
0
0
1
1
• Avec LRU : il y a un défaut de page à
chaque accès
Correction Exercice III
0
0
1
1
0
1
2
2
Publicité
3
0
1
3
0
1
1
2
2
2
3
2
3
0
1
2
3
0
1
3
0
1. Avec MRU : Most Recently Used, on remplace la page utilisée la plus
récemment
2. Pour une séquence infinie de ce genre, il y a en moyenne une faute pour 3
accès.
– Une page reste en mémoire pour 9 accès successifs, et il y a 3 pages en cache
– LRU est 3 fois pire que l’algorithme MRU
3. avec une séquence {0,1,2,3,4, 0,1,2,3,4, 0,1,2,3,4, …} avec un tampon de 4 pages
, LRU présentera toujours une faute par accès, MRU, une faute pour 4 accès.
Exercice IV
● Une mémoire virtuelle à une taille de page de 1024 mots, 8 pages
virtuelles et 4 pages physiques. Sa table des pages est la suivante :
● 1- Donner la liste des adresses qui provoquent un défaut de page.
● 2- Quelles sont les adresses physiques de 0, 3727, 1023, 1024,
7425, et 4196.
Correction Exercice IV
● La taille de la page est 1024, Calculons pour
commencer les plages d’adresses de chaque
page :
Correction Exercice IV
● La table des pages indique que seules les
pages virtuelles 2, 3, 5, 7 provoqueront un
défaut de pages. Ce qui correspond donc
aux plages d’adresses 2048 à 3071, 3072
à 4095, 3072 à 4095 et 7168 à 8191.
● @ physique = Taille de la page * n° de
page réelle + Offset
Examen janvier 2012
Question de cours
1. Quels sont les deux dispositifs matériels qui permettent au
système d'exploitation la protection des processus en
exécution ? les décrire brièvement.
2. Dire quelle est la différence principale entre les termes de
chacune des paires suivantes :
1. Une segmentation et une pagination
2. Une fragmentation interne et une fragmentation externe
3. Un évitement d’un interblocage et une prévention d’interblocage
4. Un ordonnancement préemptif et un ordonnancement non
préemptif
3. Citez 4 moyens de synchronisation multithread
Question de cours
1. Dans un système de gestion mémoire virtuelle à
pagination
1. Quand est-ce qu’un défaut de page se produit
2. Dans quel cas est-il nécessaire de réécrire la page sur l’espace
de swap
3. En déduire son coût en termes entrées/sorties disque
2. Dans le graphe d’allocation de ressources qui suit, dire
s’il apparaît un interblocage? Justifiez votre réponse.
CORRECTION QUESTION DE
COURS
• Quels sont les deux dispositifs matériels
qui permettent au système d'exploitation
la protection des processus en exécution
? les décrire brièvement.
– L'unité de gestion de la mémoire (MMU)
empêche les processus d'écrire n'importe où
dans la mémoire.
– Les modes kernel/user empêchent les
processus d'exécuter certaines instructions.
CORRECTION QUESTION DE
COURS
• Une segmentation et une pagination ?
• partitionnement de l’espace d’adressage
logique/physique ;
• La segmentation considère la mémoire comme des
espaces, ou des régions, dédiés à une utilisation
particulière par exemple : le code d'un programme, les
données, la pile, un ensemble de sous-programmes, des
modules, un tableau, etc. La segmentation reflète cette
organisation.
la pagination est un partitionnement qui exige les même
tailles de pages et de cases.
•
CORRECTION QUESTION DE
COURS
• Une fragmentation interne et une fragmentation externe?
– suite aux allocations mémoire des fragments très petits ne seront jamais suffisant pour
contenir un processus (frag. Interne) alors que la fragmentation externe apparaît suite à
une demande d’espace contigüe qui n’est pas disponible bien la somme des fragments
séparés dépasse la taille demandée.
• Un évitement d’un interblocage et une prévention d’interblocage ?
– l’évitement garantit qu’il ne peut y avoir d’interblocage suite à des restrictions alors que
la prévention vérifie si l’état suivant est sécurisant ou pas.
• Un ordonnancement préemptif et un ordonnancement non préemptif ?
– Si la cpu est allouée à un processus, elle peut lui être réquisitionnée à tout moment
avant sa fin alors que l’ordonnancement non préemptif garde le processeur alloué au
processus du début à sa fin.
CORRECTION QUESTION DE
COURS
• Citez 4 moyens de synchronisation multithread ?
– join (pthread_join()), mutex, sémaphore, et variable conditionnelle.
• Dans un système de gestion mémoire virtuelle à pagination
– Quand est-ce qu’un défaut de page se produit ? si bit de présence
=0 dans la table des page ; c-à-d que la page demandée est absente
en mémoire.
– Dans quel cas est-il nécessaire de réécrire la page sur l’espace de
swap ? si le bit de modification = 1 dans la table des pages ; c-à-d
que la page demandée a été modifiée depuis son chargement.
– En déduire son coût en termes entrées/sorties disque ? meilleur
cas 1 E/S et au pire cas 2 E/S.
CORRECTION QUESTION DE
COURS
• Dans le graphe d’allocation de ressources qui
suit, dire s’il apparaît un interblocage? Justifiez
votre réponse.
– Pas d’interblocage car P2 (resp. P4) peut terminer et libérer
une copie R1 (resp. R2) qui peut être allouée à P1 (resp.
P3). De sa part P1 (resp. P3) termine et libère R1 et R2. En
conclusion, le graphe est réduit de la des nœuds isolés.
12/15/16
Systèmes d’Exploitation et Programmation
Concurrente
29
SYNCHRONISATION &
CONCURRENCE
Coiffeur endormie
• Soit un salon de coiffure avec
– un coiffeur,
– un fauteuil de coiffure
– et n chaises pour les clients qui attendent.
• En l’absence de clients, le coiffeur s’assoit dans le fauteuil et
s’endort.
• Le premier client qui arrive réveille le coiffeur.
• Les clients suivants doivent s’asseoir sur une chaise (s’il y en a
de libres) ou partir (si toutes les chaises sont occupées).
• Completer le programme du coiffeur et des clients en évitant
les interblocages
Coiffeur endormie
Coiffeur endormie
Define CHAIRS 5
typedef int semaphore ;
semaphore customers==…………… ;
semaphore barbes==…………… ;
semaphore mutex=…………… ;
int waiting==…………… ;
Coiffeur endormie
void barber(void){
while(TRUE){
down(&customers) ;
/go to sleep if # of customers is 0/
…………… ; /acquire access to ‘waiting’
/
waiting=waiting
1 ;
/*decrement
count of waiting customers*/
up(&barabers) ;
/one barber is now ready to cut hair/
…………… ;/release ‘waiting’/
cut_hair() ;/ cut hair (outside critical region/
Publicité
}
}
Coiffeur endormie
void customer (void)
{
down(&mutex) ; /enter critical region/
if(waiting …………… CHAIRS){
leave*/
/* if there are no free chairs,
waiting=waiting +1 ; /increment count of waiting customers/
…………… ; /wake up baber if necessary/
up(&mutex) ; /release access to ‘waiting’/
…………… ; /*go to sleep if # of free barbers is
0*/
get_haircut() ; / be seated and be serviced/
}else{
down(&mutex) ; /shop is full, do not wait /
}
Solution Coiffeur endormie
Define CHAIRS 5
typedef int semaphore ;
semaphore customers=0 ;
semaphore barbes=0 ;
semaphore mutex=1 ;
int waiting=0
Solution Coiffeur endormie
void baraber(void){
while(TRUE){
down(&customers) ;
is 0*/
down(&mutex) ;
/*go to sleep if # of customers
/acquire access to ‘waiting’
/
waiting=waiting
customers*/
up(&barabers) ;
1 ;
/*decrement
count of waiting
/one barber is now ready to cut hair/
up(&mutex) ;/ release ‘waiting’/
cut_hair() ;/ cut hair (outside critical region/
}
}
Solution Coiffeur endormie
void customer (void)
{
down(&mutex) ; /enter critical region/
if(waiting < CHAIRS){
leave*/
/* if there are no free chairs,
waiting=waiting +1 ; /*increment count of waiting
customers*/
up(&customers) ; /wake up barber if necessary/
up(&mutex) ; /release access to ‘waiting’/
down(&barabers) ; /*go to sleep if # of free barbers
is
0*/
get_haircut() ; / be seated and be serviced/
}else{
down(&mutex) ; /shop is full, do not wait /
}
Rendez-vous
● Le problème à traiter concerne la mise au point d’un
rendez-vous de travail entre N personnes.
● Chaque personne doit se rendre au lieu du rendez-
vous et attendre le début de travaux qui ne peut
commencer que lorsque tout le monde est présent.
● Le dernier arrivé donc débloquera la situation et les
travaux de l’assemblée peuvent démarrer.
● Résoudre ce problème en utilisant des sémaphores
et considérant que les personnes sont des
processus citoyens.
Correction Rendez-vous
Gestion des
processus/threads
Exercice I
● Répondre par OUI ou NON en justifiant
vos réponses.
– 1. Un processus est une entité produite après compilation
– 2. Un processus est une entité produite après chargement
d’un binaire en mémoire
– 3. Le pseudo-parallélisme impose aux processus de se
connaître mutuellement
Correction Exercice I
● 1. Un processus est une entité produite après
compilation
– Non, car un processus est une image d’un programme en exécution
● 2. Un processus est une entité produite après chargement d’un
binaire en mémoire
– Oui, car une fois terminé le chargement d’un programme en mémoire un
processus est créé
● 3. Le pseudo-parallélisme impose aux processus de se
connaître mutuellement
– Non, car en pseudo-parallélisme les processus perdent la main au profit du
système d’exploitation qui allouera le CPU pour un processus éligible
Exercice II
● Écrire un programme qui crée 10 processus fils.
Chacun d’entre eux devra afficher dix fois
d’affilé son numéro d’ordre entre 0 et 9 ainsi
que son PID.
Correction Exercice II
Exercice III
● Considérez le code suivant :
Exercice III
● Dessinez l’arbre généalogique des processus
engendrés par ce programme.
● Décrivez en quelques mots quels sont tous les
possibles affichages à l’écran de ce programme.
● Que se passe t-il si l’on déplace la ligne 10 à la
ligne 7 ? Justifiez votre réponse.
● Sans modifier les lignes de 8 à 11, modifiez le
programme de façon à ce que les processus
fassent leur affichage par ordre alphabétique
inversé du nom.
Correction Exercice III
● Dessinez l’arbre généalogique des processus
engendrés par ce programme.
Correction Exercice III
● Décrivez en quelques mots quels sont tous les
possibles affichages à l’écran de ce
programme.
– La chaîne de caractères Mon nom est <c > j ’ ai dormi n
secondes s’affichera 5 fois, avec c = A,B,C,D,E et n un
nombre arbitraire entre 0 et 3 (inclus). L’ordre de la
affichage dépendra seulement du temps choisi pour dormir
(et l’ordonnancement), et donc il sera arbitraire.
Correction Exercice III
● Que se passe t-il si l’on déplace la ligne 10 à la
ligne 7 ? Justifiez votre réponse.
– Chaque processus s’endormira le même nombre de
seconds. En effet, le générateur de nombres aléatoires est
initialisé une fois seule, par le processus ancêtre (appel à la
fonction srand avec en paramètre le valeur de retour de
l’appel système getpid, i.e. le pid du processus ancêtre). Par
conséquence tous les processus choisiront (avec rand à la
ligne 11) le premier nombre de la même suite aléatoire
infinie.
Correction Exercice III
● Sans modifier les lignes de 8 à 11, modifiez le
programme de façon à ce que les processus
fassent leur affichage par ordre alphabétique
inversé du nom.
– Nous pouvons forcer chaque père à attendre la morts de
son enfant avant faire son affichage. Pour cela nous
pouvons ajouter à la ligne 12. : wait ( NULL );
Exercice IV
● Qu'est e qu'un multithreading et quelle est la
diférence avec la multiprogrammation ?
● Dans une application qui partage des données
en mémoire, faut-il privilégier les processus ou
les threads ? Justifiez votre réponse ?
Correction Exercice IV
● Qu'est e qu'un multithreading et quelle est la
diférence avec la multiprogrammation ?
– Multithreading: exécution concurrente/parallèle de plusieurs
threads à l'intérieur d'un même processus alors que la
multiprogrammation c'est l'exécution concurrente de plusieurs
processus sur un monoprocesseur.
● Dans une application qui partage des données en
mémoire, faut-il privilégier les processus ou les
threads ? Justifiez votre réponse ?
– On privilégie les threads par rapport aux processus afin de gagner
en performance en particulier la commutation est moins coûteuse.
FIN