You are on page 1of 15

4

Gestion des processus

Syst`mes dexploitation e
Licence dinformatique Facult des Sciences de Luminy e 11 avril 1995, dure 3 heures, aucun document nest autoris. e e

Considrons un ordonnanceur simpli qui suit la stratgie du tourniquet : e e e e tat : tableau[0 .. max-1] de {pr^t, non-pr^t} e e <sauver le MEP et le contexte du processus courant pc> rpter e e pc := (pc + 1) modulo max; jusqu` (tat[pc] = pr^t); a e e <restaurer le contexte et le MEP de pc> On veut endormir un processus pendant un certain temps (exprim en secondes). Vous avez ` votre e a disposition une fonction temps() qui renvoie le temps coul en secondes depuis le dmarrage de la e e e machine. a) Dnissez les structures de donnes supplmentaires de lordonnanceur et dtaillez les tats possibles e e e e e dun processus. b) Ecrivez la fonction endormir processus(p, s) qui endort le processus p pendant au moins s secondes. c) Comment lordonnanceur rveille-t-il les processus endormis (donnez le nouvel algorithme de lordone nanceur) ? On veut maintenant ger les processus pour les continuer plus tard. Attention : ger un processus endormi ne revient pas ` faire dispara le temps dattente (voir le schma ci-dessous). a tre e <----- 40 s -----> <---- 20 s ---> ------+----------------+--- - - - - - - - - ----+-------------+----endormir figer le continuer le rveil du e pendant 60 s processus processus processus d) Dcrivez les tats possibles dun processus et le graphe des transitions entre les tats. Vous prciserez e e e e la cause de chaque transition. e) Programmez les deux fonctions figer processus(p) et continuer processus(p).

Les commutations de contexte

Une commutation de contexte est une opration indivisible qui change la valeur du mot dtat du processeur e e (MEP). a) Quelles sont les composantes du MEP obligatoirement modies par une commutation de contexte. e Justiez votre rponse pour chaque composante (modication obligatoire ou pas). e b) Sur certains processeurs le masque dinterruption nest pas modi par la commutation de contexte. e Quelles sont les consquences de ce comportement ? e

Gestion de la mmoire e

Quel est le sens des registres RB et RL dans les cas suivants (limitez vos rponses ` une phrase par registre e a et par cas) : a) syst`me ` partition(s), e a b) mmoire segmente, e e c) mmoire pagine simple, e e d) mmoire pagine ` plusieurs niveaux. e e a

Les smaphores e

Un smaphore binaire s est constitu dun drapeau s.c (qui est vrai si le smaphore est pris et faux dans e e e les autres cas) et dune le s.f de processus qui attendent la libration de s. e a) Quelle est la valeur initiale du drapeau dun smaphore binaire ? e b) Programmez les deux primitives Pb(s) et Vb(s) en ne vous proccupant pas des probl`mes dexclusion e e mutuelle entre lexcution de Pb et Vb. e c) Programmez (en utilisant les smaphores binaires) les trois sections de code  init ,  prologue  et e  pilogue  de mani`re ` ce que n processus au plus puissent excuter leur section critique en mme e e a e e temps.

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 28 mars 1997, dure 3 heures, e Tous les documents sont autoriss. e

d) On vous demande maintenant de dnir un algorithme an de vrier la validit de la FAT. Cet algorithme e e e doit dresser la liste des des des des blocs occups qui ne gurent dans aucun chier, e blocs occups qui apparaissent dans plusieurs chiers, e blocs libres ou dfectueux mais prsents dans un chier, e e chiers incorrects.

e) Discutez des avantages et des inconvnients lis ` ce codage des chiers sur le disque. e e a

Codage des chiers sur disque

(8 points)

Choix de la victime

(4 points)

Le syst`me MS-DOS reprsente ltat du disque au moyen dune table dentiers appele la FAT pour File e e e e Allocation Table. Cette table est place au dbut du disque. Chaque entre de cette table est dnie comme suit : e e e e
0 n

FAT[i] =

si le bloc physique i est le dernier du chier auquel il appartient, avec n > 0, si le bloc physique n suit le bloc i dans le mme chier, e 1 si le bloc physique i est libre, 2 si le bloc physique i est dfectueux. e

Lalgorithme FINUFO choisit la page victime en se basant sur un bit dutilisation qui est mis ` jour automaa tiquement par le matriel. Cet algorithme nutilise pas le bit modif et donc il ne choisit pas en priorit les pages e e qui nont pas t modies. ee e Proposez une modication de FINUFO pour choisir en priorit e les pages propres et non utilises, e les pages sales et non utilises, e etc.

Pour simplier, partons du principe que la FAT et le rpertoire du disque ont t amens en mmoire centrale. e ee e e On dispose donc des dclarations suivantes : e var rep fat : tableau [ 1 .. NB FICHIERS ] de couples nom : cha ne, adr : entier : tableau [ 1 .. TAILLE DISQUE ] dentiers

Synchronisation de processus

(8 points)

Le schma ci-dessous illustre le codage des chiers au moyen de la FAT. e

fat 1
-

On se propose de tirer partie dune machine multi-processeurs pour acclerer lexcution dun processus. e e Ce processus est compos de sept portions de code notes C1 ` C7 . Lanalyse de ces portions nous rv`le les e e a e e contraintes suivantes : 1. 2. 3. 4. lexcution e lexcution e lexcution e lexcution e de de de de C3 C2 C4 C7 doit doit doit doit se se se se placer placer placer placer apr`s e apr`s e apr`s e apr`s e C5 et C1 , C4 et C7 , C5 , C3 et C6 , C1 et C6 ,

-1 5 7 9 3 0 6 0
    

2 3 5 6 7

rpertoire e hello test 2 8

4 . -2

a) Donnez un ordre dexcution squentiel qui respecte les contraintes nonces. e e e e b) Imaginons que dans un processus on puisse utiliser les notations suivantes : cobegin P1 ; . . . Pn ; coend begin S1 ; . . . Sm ; end pour indiquer au S.E. que les instructions P1 , . . . , Pn peuvent se drouler en parall`le tandis que les inse e tructions S1 , . . . , Sm doivent tre excutes de mani`re squentielle. Une instruction cobegin/coend se e e e e e termine quand toutes les instructions qui la composent sont termines. e Utilisez ces notations pour rendre le plus parall`le possible lexcution des sept portions de code. Tout le e e paralllisme potentiel est-il utilis ? (justiez votre rponse). e e e c) En utilisant des smaphores, les cobegin/coend et les begin/end, pouvez vous reformuler lalgorithme e suivi par le processus pour utiliser tout le paralllisme potentiel. Noubliez pas de prciser, pour chaque e e smaphore, la valeur initiale du compteur. e d) Mme question que prcdemment si la contrainte 2 est modie comme suit : e e e e 2. lexcution de C2 doit se placer aprs C1 et C6 ou bien apr`s C5 . e e e

8 9

On dispose galement de deux fonctions qui permettent la lecture ou lcriture dun bloc sur le disque : e e lire bloc(n : entier, var b : bloc) Dans ces conditions, traitez les questions suivantes : a) Donnez lalgorithme permettant de lire en acc`s direct un bloc dans un chier dni par son nom : e e sgf lire bloc(chier : cha ne, nu : entier, var b : bloc) : entier Cette routine renvoie 0 en cas de russite, e -1 si le chier nexiste pas et -2 si le bloc nexiste pas. b) Donnez lalgorithme de la routine sgf ajouter bloc(chier : cha ne, b : bloc) : entier qui ajoute un bloc ` un chier existant. Cette routine renvoie 0 en cas de russite, -1 si le chier nexiste pas et -2 si il ny a e a plus de place disponible. Ne vous souciez pas de sauver sur le disque les modications ventuelles de la e FAT ou du rpertoire. e c) On dsire maintenant allouer un espace contigu sur disque pour un chier. Donnez lalgorithme de la routine e allocation contigue(nbblocs : entier) : entier qui alloue nbblocs blocs contigus en suivant la stratgie e best-t. Cette routine renvoie ladresse du premier bloc en cas de russite et -1 en cas dchec. e e et ecrire bloc(n : entier, b : bloc)

Allocation contige de la mmoire u e

(6 points)

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 3 avril 1998, dure 3 heures, e Tous les documents sont autoriss. e

On consid`re la suite de demandes dallocation (+) et de libration () suivantes, dans un e e espace mmoire de 1000 blocs. e +300, +200, +240, 200, +100, 300, +250, +400, 240, +150, +95, 100, 95, +200, 150, 250, +100, 400, 100, 200 a) Si la mmoire est initialement vide, comment le S.E. ralise les allocations en partant du e e principe quil applique la stratgie de la premi`re zone libre. On compl`te cette stratgie par e e e e lapplication dun algorithme de tassage si aucune des zones libres ne convient. b) Mme question si le syst`me applique la stratgie du meilleur ajustement. Comparez ces deux e e e stratgies en utilisant le nombre de tassages eectus et la quantit de donnes dplaces. e e e e e e c) Lalgorithme par subdivision est-il intressant sur cet exemple (justiez votre rponse) ? e e

Utilisation des chiers

(8 points)

Sur certains syst`mes dexploitation, il est possible de  monter  des chiers en mmoire. Cette e e opration passe gnralement par un appel syst`me qui a la forme suivante : e e e e void* mmap( char* fichier, int dbut, int longueur) ; e Lorsquun processus utilisateur appelle cette routine syst`me tout se passe comme si une partie e du chier (dnie par dbut et longueur) avait t charge en mmoire ` partir de ladresse e e ee e e a renvoye par mmap. On peut, ` partir de l`, utiliser cette adresse pour exploiter le chier en lecture e a a ou en criture comme le montre lexemple ci-dessous e { int k; char* c; c = mmap("mon_fichier", 100, 1024); for(k = 0; k < 1024; k++) putchar(c[k]); for(k = 0; k < 1024; k++) c[k] = A; ummap(c); } Dans ce cadre, rpondez aux questions suivantes : e a) Quels sont les modules du syst`me dexploitation qui sont touchs par cette fonctionnalit ? e e e La fonction mmap() nest prsente que si le syst`me dexploitation est capable de grer une mmoire e e e e virtuelle pagine. Indication : Sur ce type de syst`me, chaque entre de la table des pages virtuelles e e e ` la forme suivante a prsente, modif, protection, nu. page physique, information . e 1 bit 7 bits 1 bit 3 bits 20 bits Le champ information est libre et vous pouvez lutiliser comme vous le voulez. b) Quelles sont les modications opres par lappel syst`me mmap() pour prparer lassociation ee e e entre un chier et une portion de la mmoire dun processus ? e c) Proposez un mcanisme permettant au syst`me dexploitation damener les informations du e e chier en mmoire centrale quand le processus en a besoin. e d) Comment rpercuter sur le chier (stock sur disque) les modications eectues en mmoire e e e e centrale par le processus ?

Synchronisation de processus

(6 points)

On se propose de tirer partie dune machine multi-processeurs pour acclerer lexcution dun e e processus. En tudiant ce processus, nous avons trouv la ligne suivante : e e
x = foo(2, gnu(gnat(zip(a,b),flup(c,d)) + flup(e,f))) + foo(zip(b,a),flup(d,c))

/* /* /* /*

monter le fichier afficher son contenu modifier le contenu dmonter le fichier e

*/ */ */ */

a) En partant du principe que les fonctions zip et flup sont commutatives, dcomposez et e simpliez cette ligne de code en utilisant autant de variables intermdiaires que ncessaire. e e b) Imaginons que dans un processus on puisse utiliser les notations suivantes : cobegin P1 ; . . . Pn ; coend begin S1 ; . . . Sm ; end pour indiquer au S.E. que les instructions P1 , . . . , Pn peuvent se drouler en parall`le tandis e e que les instructions S1 , . . . , Sm doivent tre excutes de mani`re squentielle. Une instruction e e e e e cobegin/coend se termine quand toutes les instructions qui la composent sont termines. e Utilisez ces notations pour rpartir au mieux le calcul sur les processeurs disponibles. e c) En utilisant des smaphores, les cobegin/coend et les begin/end, pouvez vous reformuler e lalgorithme suivi par le processus pour utiliser tout le paralllisme potentiel. Noubliez pas de e prciser, pour chaque smaphore, la valeur initiale du compteur. e e d) Lanalyse du code de gnu() et foo() nous rv`le que ces fonctions utilisent un espace global e e commum lors de leur excution. Quel est leet de cette constatation sur le code de la question e c). Proposez une correction.

Synchronisation de processus

(6 points)

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 5 mai 1999, dure 3 heures, e Tous les documents sont autoriss. e

Certaines rues dAmsterdam sont tellement troites, quil ny a pas assez de place pour faire passer deux voies e de tramway. Pour rgler ce probl`me, il existe un tronon de voie unique comme le montre le schma ci-dessous. e e c e

Sud

d A dx

B
x d d

Nord

Pour tudier ce probl`me, nous allons simuler le comportement des tramways en utilisant un processus par e e vhicule. Nous utiliserons galement des smpahores pour rgler les probl`mes de synchronisation. Dans ce cadre, e e e e e rpondez aux questions suivantes : e

Gestion dune mmoire virtuelle e

(9 points)

Certaines machines (comme le processeur IBM RS-6000) nutilisent pas une table des pages virtuelles pour chaque processus. Sur ce type de syst`me, ltat de la mmoire est dcrit par une seule table qui dispose dune entre e e e e e pour chaque page physique. Chaque entre a la forme suivante e id-processus, nu-page-virtuelle, protection, modif, util Une adresse virtuelle gnre par le processeur a maintenant la forme suivante e ee id-processus, nu-page-virtuelle, dplacement e Dans ce cadre, rpondez aux questions suivantes : e a) A-t-on, du point de vue dun processus, les mmes capacits dadressage mmoire que dans un syst`me e e e e plus classique ? b) Dcrivez, sous la forme dun algorithme, le processus de transformation des adresses virtuelles en adresses e physiques. Je vous rappelle quune adresse physique est un couple nu-page-physique, dplacement . e Dans cet algorithme, le dfaut de page va correspondre ` lappel dune fonction : e a defaut_de_page( a : adresse-virtuelle ).

a) Donnez lalgorithme appliqu au passage du point A et du point B par les tramways qui assurent le trajet e Sud-Nord. Lobjectif est simple : il faut viter les collisions. e b) Lobjectif est toujours le mme, mais pour viter lapparition dun bouchon nous changeons un peu la e e stratgie. Si il existe des tramways en attente des deux cots, la voie unique doit tre utilise alternativee e e e ment dans les deux sens. Noubliez pas de prciser la valeur initiale des variables partages et des smaphores e e e que vous utilisez. Conseil : utilisez une variable partage qui reprsente ltat de la voie unique. e e e c) Visiblement, lactivit alternative de la voie unique ne permet pas dobtenir un rendement susant. Pour e palier ce dfaut, modiez votre algorithme de faon ` respecter lalternance, mais tous les cinq passages. e c a

Traitement des interblocages

(5 points)

Considrons un syst`me dallocation de ressources portant sur 5 processus et 4 classes de ressources. Ltat e e e du syst`me est donn par les informations suivantes : e e Allocation R1 R2 R3 0 0 1 1 0 0 1 3 5 0 6 3 0 0 1 Max R2 0 7 3 6 6

P0 P1 P2 P3 P4

R4 2 0 4 2 4

P0 P1 P2 P3 P4

R1 0 1 2 0 0

R3 1 5 5 5 5

R4 2 0 6 2 6

R1 1

Dispo R2 R3 5 2

R4 0

Dans ce cadre, rpondez aux questions suivantes en utilisant lalgorithme des banquiers : e c) Quel est limpact de la taille des pages sur la performance du processus de transformation des adresses. Justiez votre rponse en prsentant quelques exemples chirs. Quels sont les moyens, matriels et/ou e e e e logiciels, qui permettent de rduire le cot de cette transformation. e u d) Donnez lalgorithme suivi par la fonction defaut_de_page. Pour simplier, vous pouvez considrer quil e existe une zone de pagination pour chaque processus. Vous disposez alors des deux routines : lire page( p :id-processus, src :nu-page-virt, dest :nu-page-phys) e crire page( p :id-processus, src :nu-page-phys, dest :nu-page-virt) a) Donnez la matrice des besoins. b) Le syst`me est-il dans un tat sain ? justiez votre rponse. e e e c) Si le processus P1 dpose la requte (0, 4, 2, 0), cette requte est-elle accepte immdiatement ? (justiez e e e e e votre rponse). e d) A partir de la situation initiale, si le processus P4 dpose la requte (1, 4, 2, 0), quel est le rsultat ? e e e

e) Comment le partage de pages peut-il sorganiser dans ce syst`me ? e

1000 octets ` partir de ladresse 500 (de 500 ` 1499) ; a a

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 11 mai 2000, dure 3 heures, e Tous les documents sont autoriss. e

11000 octets ` partir de ladresse 120000 (de 120000 ` 130999) ; a a 3000 octets ` partir de ladresse 260000 (de 260000 ` 262999) ; a a b) Si le syst`me dexploitation ne conserve aucun bloc en mmoire centrale entre les acc`s (hormis e e e le descripteur du chier ouvert), ces trois lectures dans un chier ncessitent combien doprations e e lmentaires de lecture dun bloc physique ? (prcisez votre calcul pour chacun des trois cas) ee e c) Mme question que prcdemment si le syst`me conserve deux blocs en mmoire centrale entre les e e e e e acc`s (prcisez quels sont les blocs conservs). e e e

Synchronisation de lacc`s aux ressources e

(7 points)

Partons du principe quil existe deux ressources R1 et R2 ayant les mmes capacits mais de qualit e e e dirente (par exemple une imprimante rapide et une autre plus lente). On se propose de raliser les e e fonctions permettant ` un processus de demander lallocation dune ressource et sa libration. Pour grer a e e ces oprations, nous allons utiliser une version adapte des smaphores, les bi-smaphores : e e e e bi-smaphore = e libre : tableau[1..2] de boolens ; F1,F2 : Files de processus e

d) Sans changer le codage des chiers sur disque, proposez une amlioration des acc`s alatoires qui e e e consomme peu de mmoire centrale (quelques centaines doctets). e

Mmoire segmente e e

(7 points)

libre[i] est vrai ssi la ressource Ri est libre. Avec un bi-smaphore, lutilisateur va tre capable e e deectuer une demande gnrale (il a besoin de R1 ou R2 ), ou une demande particuli`re pour la ressource e e e R1 (la plus rapide). Les deux les sont l` pour reprsenter les processus en attente sur chaque type de a e demande. a) Donnez la valeur initiale dun bi-smaphore pour le probl`me qui nous intresse. e e e b) Donnez lalgorithme suivi par la fonction dallocation gnrale. Cette fonction bloque le processus e e appelant si les deux ressources sont occupes. e Fonction allouer Ri ( var s : bi-smaphore ) : nu-de-ressource ; e c) Donnez lalgorithme suivi par la fonction dallocation particuli`re. Cette fonction bloque le processus e appelant si la ressource R1 est occupe. e e Procdure allouer R1( var s : bi-smaphore ) ; e d) Donnez lalgorithme suivi par la fonction de libration. Cette fonction favorise toujours les processus e qui eectuent des demandes gnrales. e e Procdure librer( var s : bi-smaphore ; i : nu-de-ressource ) ; e e e e) Quels reproches peut-on faire ` ce syst`me dallocation ? Comment pourrait-on lamliorer ? a e e

Soit un syst`me bas sur une mmoire segmente. La taille maximale de chaque segment est xe e e e e e ` 128 ko (soit 217 octets). La taille dun segment est toujours multiple de 28 . La mmoire logique dun a e processus est dnie par la table des segments suivante : e Segment 0 1 2 3 4 Dans ce cadre, traitez les questions suivantes : a) Pourquoi la taille des segments est-elle multiple de 256 ? Comment faut-il lire les valeurs prsentes e dans la table des segments ? b) Quelles sont les rapports entre la taille de la mmoire centrale et la taille (en nombre de bits) de e chaque colonne de la table des segments ? c) Quelles sont les adresses physiques pour les adresses logiques suivantes ? 430, 131082, 263474, 393616, 524400 d) Quel est limpact de la mmoire segmente, sur ltape de compilation dun programme ? Ou, en e e e dautres termes, comment le compilateur peut-il prendre en compte la segmentation pour gnrer e e un programme plus performant ? Base 100 250 10 80 92 Taille 3 1 5 10 6

Lecture dun chier sur disque

(6 points)

On vous donne les lments suivants : le bloc lmentaire dentre/sortie est x ` 0,5 ko (512 octets), ee ee e ea un numro de bloc est cod sur quatre octets et les chiers sont represents sur disque ` laide de tables e e e a dallocation ` un seul niveau. a a) Si un processus eectue les lectures suivantes dans cet ordre dans un chier dj` ouvert, quels ea sont les numros des blocs logiques lus par le syst`me ? (justiez votre rponse) e e e

Gestion des processus

(6 points)

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 4 mai 2001, dure 3 heures, e Tous les documents sont autoriss. e

Soit un processus dont le travail consiste ` calculer (pendant 1 seconde) et ` sauver le rsultat dans a a e un chier (pendant 4 secondes) le tout dix fois. Questions : a) Quel est le temps de rponse de ce processus et le taux dutilisation de la CPU sur la priode e e considre ? ee b) Admettons que le syst`me alloue un tampon de sortie pouvant contenir 2 secondes dentre/sortie. e e Dans ces conditions rpondez ` la question a) et donnez la trace de lexcution. e a e

Implantation physique des chiers


bloc = tableau [ 0..255 ] dentiers ;

(7 points)

Le bloc est lunit lmentaire dentre/sortie sur disque. Il est dni comme suit : e ee e e

c) Du point de vue du syst`me dexploitation, est-il intressant dallouer un tampon de sortie dont la e e taille est suprieur ` 4 secondes (justiez votre rponse) ? e a e d) Admettons maintenant que le chier ainsi cr soit stock sur une pseudo partition de rpartition ee e e construite ` laide de deux disques. Quel est limpact de cette organisation sur lexcution du proa e cessus ?

Les lectures de blocs se font au moyen de la fonction lire_bloc(nu:entier; var b:bloc). Un descripteur de chiers est un bloc qui contient les informations relatives ` limplantation physique du chier. a Ce descripteur a la structure suivante : Les cases de 0 ` 234 contiennent des informations diverses. a Les cases de 235 ` 244 contiennent respectivement les adresses physiques des blocs de donnes 0 ` a e a 9 du chier en question. Les cases de 245 ` 254 contiennent respectivement les adresses physiques des blocs dindex 0 ` 9 a a du chier en question. La case 255 contient ladresse physique du dernier bloc dindex. Chaque entre dun bloc index contient ladresse physique dun bloc de donnes sauf la derni`re (n 255) e e e qui contient ladresse du bloc dindex suivant et lavant derni`re (n 254) qui contient ladresse du bloc e dindex prcdent. e e Questions : a) Quelle est la nature de ce codage ? b) Existe-t-il une limite pour la taille des chiers avec cette organisation ? c) Ecrivez la fonction fonction adresse physique( desc :bloc ; nubloc :entier ) : entier ; qui rend ladresse physique du bloc de donnes dadresse logique nubloc dans le chier dcrit par e e desc. Vous ne vous proccuperez pas des probl`mes de dbordement ou des erreurs dentre/sortie. e e e e d) Si on cherche ` lire 1000 entiers ` partir de ladresse 782800 (en entiers), combien de blocs physiques a a le syst`me dexploitation doit-il lire en partant du principe quaucun bloc nest gard en mmoire (` e e e a lexception du descripteur) ? e) Comment amliorer les acc`s squentiels avec cette architecture ? e e e

Mmoire segmente et pagine e e e

(7 points)

Soit un syst`me bas sur une mmoire segmente pagine. La taille des pages est xe ` 210 octets. La e e e e e e a taille maximale de chaque segment est xe ` 256 pages. La mmoire logique dun processus est dnie e a e e par la table des segments suivante : N de Segment 0 1 2 Voila un extrait des tables de pages adresse 1200 : n p. phys. 0 100 1 250 . . . . . . 253 254 255 Questions : a) Expliquez le sens des valeurs 1200, 700 et 750 prsentes dans la table des segments. e b) Quelle est la taille totale de la mmoire occupe par ce processus ? e e c) Dcrivez les composantes (taille et nature) dune adresse logique segmente et pagine dans un tel e e e syst`me. e d) Quelles sont les adresses physiques pour les adresses logiques suivantes ? 262154, 2024, 335048, 525324, 259972 e) Pourquoi avoir choisi la limite de 256 pages pour la taille des segments ? Quelles en sont les avantages ? 80 adresse 700 : n p. phys. 0 600 . . . . . . 70 900 71 . . . . . . adresse 750 : n p. phys. 0 1000 1 1100 2 1150 3 . . . . . . table des pages Taille 1200 254 700 71 750 3

Syst`mes dexploitation e
Licence dinformatique Facult de Luminy e 6 septembre 2001, dure 3 heures, e Tous les documents sont autoriss. e

adresse 1200 : n p. phys. 0 100 . . . . . . 125 126 . . . 255 Questions : 80 81 . . . . . .

adresse 700 : n p. phys. 0 655 . . . . . . 10 11 . . . 255 110 120 . . . . . .

adresse 750 : n p. phys. 0 210 1 215 2 220 . . . . . . . . . . . . . . 255 .

Synchronisation de processus

(7 points)

a) Expliquez le sens des valeurs 1200, 700 et 750 prsentes dans la table des segments. e b) Quelle est la taille totale de la mmoire occupe par ce processus ? e e c) Dcrivez les composantes (taille et nature) dune adresse logique segmente et pagine dans un tel e e e syst`me. e d) Quelles sont les adresses physiques pour les adresses logiques suivantes ?

On vous propose dtudier le code de synchronisation suivant. Il utilise deux variables publiques (disponible e et tour) et une variable prive (ticket). e <init> disponible = 1 tour = 1 ticket = disponible disponible = disponible + 1 rpter e e jusqu` (ticket = tour) a tour = tour + 1

<prologue>

129124, 808970, 272404, 200, 526546 e) Pourquoi avoir choisi la limite de 256 pages pour la taille des segments ? Quelles en sont les avantages ? f) Est-il possible de voir appara plusieurs fois la mme valeur dans les tables de pages ? Que signie tre e cette rptition ? e e

<pilogue> e Questions :

a) Ce code est sens rgler un dfaut li aux solutions dattente active. Quel est ce dfaut et comment e e e e e est-il supprim ? e b) Ce code est-il une solution correcte au probl`me de lexclusion mutuelle ? Expliquez votre rponse. e e c) Proposez une nouvelle version correcte base sur le mme principe. Vous pouvez utiliser une nouvelle e e variable publique et linstruction XRM.

Traitement des interblocages

(5 points)

Considrons un syst`me dallocation de ressources portant sur 5 processus et 4 classes de ressources. e e Ltat du syst`me est donn par les informations suivantes : e e e Allocation R1 R2 R3 1 0 0 0 0 1 5 3 1 3 6 0 1 0 0 Max R2 0 7 3 6 6

Mmoire segmente et pagine e e e

(8 points)

Soit un syst`me bas sur une mmoire segmente pagine. La taille des pages est xe ` 210 octets. La e e e e e e a taille maximale de chaque segment est xe ` 256 pages. La mmoire logique dun processus est dnie e a e e par la table des segments suivante : N de Segment 0 1 2 3 4 Voil` un extrait des tables de pages a table des pages Taille 1200 127 700 200 750 50 850 20 600 20

P0 P1 P2 P3 P4

R4 2 0 4 2 4

P0 P1 P2 P3 P4

R1 1 5 5 5 5

R3 0 1 2 0 0

R4 2 0 6 2 6

R1 2

Dispo R2 R3 5 1

R4 0

Dans ce cadre, rpondez aux questions suivantes en utilisant lalgorithme des banquiers : e a) Donnez la matrice des besoins. b) Le syst`me est-il dans un tat sain ? Justiez votre rponse. e e e c) Si le processus P1 dpose la requte (2, 4, 0, 0), cette requte est-elle accepte immdiatement ? e e e e e (justiez votre rponse). e d) A partir de la situation initiale, si le processus P4 dpose la requte (2, 4, 1, 0), quel est le rsultat ? e e e

Questions :

Syst`mes dexploitation e
Licence dinformatique Facult des Sciences de Luminy e 12 Juin 2002, dure 3 heures, e Tous les documents sont autoriss. e

a) Quels sont les tats possibles de la ressource R1 (au sens du graphe dallocation de ressources) ? e b) Quels sont les tats possibles du processus P1 indpendamment de P2 ? e e c) Quel est le nombre dtats possibles pour le syst`me dallocation de ressources (il est conseill e e e de faire une tude de cas sur ltat de chaque ressource) ? e e d) Si on applique lalgorithme des banquiers, combien reste-t-il dtats possibles pour le syst`me e e dallocation de ressources ?

Gestion des processus


Soit le processus ci-dessous faire 4 fois | calculer pendant 1 seconde | crire sur le fichier F1 pendant 2 secondes e n-faire faire 4 fois | calculer pendant 1 seconde | crire sur le fichier F1 pendant 3 secondes e n-faire

(6 points)

e) Pour viter les interblocages, on peut associer un ordre ` chaque ressource (par exemple e a R1 < R2 ) et interdire les demandes dallocation qui ne respectent pas cet ordre. Dans ces conditions, combien dtats sont encore possibles ? e

Mmoire virtuelle pagine e e

(6 points)

Sur certains processeurs, ltape de transformation des adresses virtuelles pagines en adresses e e physiques est particuli`rement simple. En eet, ces processeurs utilisent seulement leur mmoire e e associative sans eectuer dacc`s ` la table des pages (voir ci-dessous) : e a <npv,dp> := adresse_virtuelle_pagine e e si il existe un couple <npv,npp> dans la mm. associative e alors adresse_physique := <npp,dp> e sinon gnrer une interruption de dfaut de mmoire associative e e e e n si Questions : a) Sur ces processeurs il existe une instruction ajouter_en_mmoire_associative <npv,npp> e

Les deux sries dcritures sont indpendantes. e e e Questions : a) Quel est le temps de rponse de ce processus et le taux dutilisation de la CPU sur la priode e e considre ? ee b) Si le processus est maintenant structur sous la forme de deux threads, chacun soccupant e dune boucle, quel est le nouveau temps de rponse et le taux dutilisation de la CPU ? e c) Pour amliorer son code, le programmeur dcide de garder les threads, mais de produire deux e e chiers dirents (F1 et F2 par exemple). A quelles conditions peut-on obtenir une amlioration e e et laquelle (temps de rponse et taux de CPU) ? e e) Admettons que le syst`me alloue deux tampons de sortie pouvant contenir 2 secondes dentre/sortie e e (un pour chaque thread). Dans ces conditions, rpondez ` la question a) et donnez la trace e a de lexcution. e

Que fait, dapr`s vous, cette instruction ? e b) Mme si le processeur nutilise plus la table des pages virtuelles, cette structure de donnes e e est-elle toujours utile (justiez votre rponse) ? e c) Donnez les grandes lignes du traitant associ ` linterruption  dfaut de mmoire associative . ea e e d) Quels sont les avantages et les inconvnients de cette implantation de la pagination par rapport e ` la formule classique ? a e) Cette implantation pose un probl`me dans le choix dune victime. Dcrivez le probl`me et e e e proposez une solution.

Allocation de ressources

(8 points)

Soit deux processus (P1 et P2 ) et deux ressources non partageables (R1 et R2 ). Les deux processus vont utiliser les deux ressources (la matrice Max de lalgorithme des banquiers ne contient que des 1).

Les philosophes et les banquiers

(6 points)

Syst`mes dexploitation e
Licence dinformatique Facult des Sciences de Luminy e 19 Juin 2003, dure 3 heures, e Tous les documents sont autoriss. e

Un beau jour de juin, n philosophes dcident daller manger ensemble des spaghettis. Le restaue rateur dresse une table ronde, mais place seulement n fourchettes (une entre chaque assiette). Pour manger, un philosophe a besoin de deux fourchettes : celle place ` sa droite et celle place ` sa e a e a gauche. Questions : a) Montrez quil existe un risque dinterblocage et proposez une solution simple ` ce probl`me. a e

Paralllisme et utilisation des  threads  e

(10 points)

b) Pour viter les interblocages, les philosophes dcident dappliquer lalgorithme des banquiers. e e Donnez la matrice Max et le vecteur Dispo. c) Pour ce probl`me bien particulier donnez lalgorithme simpli permettant de dterminer e e e si oui ou non, le syst`me est dans un tat sain. e e d) Sans vous proccuper des probl`mes de paralllisme et de synchronisation, donnez lalgorithme e e e appliqu par le i`me philosophe avant de manger. e e e) Face ` ce probl`me, le restaurateur dcide de placer une assiette au centre de la table dans a e e laquelle il pose les n fourchettes. Les philosophes vont chercher les fourchettes sur cette assiette et les y reposent apr`s avoir mang. Dans ce cadre, existe-t-il un risque dinterblocage ? e e f) Donnez la nouvelle version de la matrice Max et du vecteur Dispo.

Vous venez dacqurir une nouvelle machine dote de quatre processeurs. Pour lexploiter au e e mieux, vous dcidez de modier vos anciens programmes an de les adapter ` cette architecture. e a Pour ce faire, le syst`me dexploitation vous ore deux fonctions pour grer des  threads  : e e int thread_create(); /* cration dun thread */ e void thread_exit(); /* suicide dun thread */ Cette fonction cre un nouveau  thread  ls par recopie ` lidentique du  thread  courant e a (le p`re). Le  thread  ls dmarre son excution comme si il revenait de lappel ` la fonction e e e a e thread create. La fonction renvoie 0 chez le ls, -1 en cas derreur et le numro du ls (un entier positif) chez le p`re. e Questions : a) Le programme A est compos de trois parties (notes A1 , A2 et A3 ). A3 a besoin des rsultats e e e de A1 et A2 et lexcution de A1 est toujours plus longue que celle de A2 . Dans ce cadre, e donnez une version qui utilise le paralllisme de A et expliquez le gain attendu. e b) Mme question, mais on ne conna pas le plus long des deux codes A1 et A2 . Jinsiste : vous e t ne disposez de rien dautre que les deux fonctions prsentes ci-dessus. Par contre, je vous e e rappelle que les  threads  partagent les variables globales. Quelle critique pouvez-vous faire de la solution que vous proposez ? c) Le programme B est compos de quatre parties. Le code B2 a besoin du rsultat de B1 , tandis e e que B4 a besoin de B2 ou B3 . Proposez une version parall`le et ventuellement montrez les e e dfauts de votre solution. e d) La nouvelle version du syst`me vous ore les trois fonctions ci-dessous. Dans ce cadre, rpondez e e ` la question c). a sem_t sema_create(int compteur); /* cration dun smaphore */ e e void sema_wait(sem_t s); /* prise dun smaphore (P) */ e void sema_signal(sem_t s); /* libration dun smaphore (V) */ e e e) Comment modier la rponse ` la question prcdente pour tre sr que le  thread  initial e a e e e u est bien le dernier ` terminer son excution (utilisez les smaphores). a e e

Mmoire virtuelle pagine e e

(4 points)

Soit un syst`me bas sur une mmoire virtuelle pagine. La taille des pages est xe ` 210 e e e e e a octets. Dans un programme C on dclare la tableau ci-dessous. Pour lexcution de ce programme, e e le syst`me a rserv 8 pages physiques qui sont initialement vides. e e e char tableau[32][2048]; Questions : a) Dans ce cadre, combien de dfauts de page sont gnrs par le code suivant (on part du e e ee principe que les indices sont dans des registres) : for(i=0; i<32; i++) for(j=0; j<2048; j++) tableau[i][j] = A; Justiez votre rponse. Quel est limpact dun doublement de la mmoire physique (8 ` 16) ? e e a b) Mme question si le code devient (la mmoire physique est de 16 pages) : e e for(j=0; j<2048; j++) for(i=0; i<32; i++) tableau[i][j] = A; c) De combien faut-il augmenter le nombre de pages physiques pour que le nombre de dfaut de e page baisse de mani`re signicative ? e

Gestion des processus

(5 points)

Syst`mes dexploitation e
Licence dinformatique Facult des Sciences de Luminy e 9 Juin 2004, dure 3 heures, e Tous les documents sont autoriss. e

Soit un processus dont le travail consiste ` calculer (pendant 1 seconde) et ` sauver le rsultat a a e dans un chier (pendant 4 secondes) le tout dix fois. Questions : a) Quel est le temps de rponse de ce processus et le taux dutilisation de la CPU sur la priode e e considre ? ee b) Admettons que le syst`me alloue un tampon de sortie pouvant contenir 2 secondes e dentre/sortie. Dans ces conditions rpondez ` la question a) et donnez la trace de lexcution. e e a e

Producteur et consommateur

(9 points)

c) Du point de vue du syst`me dexploitation, est-il intressant dallouer un tampon de sortie e e dont la taille est suprieur ` 4 secondes (justiez votre rponse) ? e a e d) Admettons maintenant que le chier ainsi cr soit stock sur une pseudo partition de ee e rpartition construite ` laide de deux disques. Quel est limpact de cette organisation sur e a lexcution du processus ? e

Lactivit de gestion dun entrept est formalise par les variables partages dnies ci-dessous. e o e e e Un processus producteur a la charge de remplir le stock tandis quun processus consommateur ` la a charge de le vider. stock : tableau[0 ` Max-1] de produits; a nbTotalProduits : entier; nbTotalConsomms : entier; e Questions : a) proposez une version de lalgorithme du producteur et du consommateur base sur lattente e active pour rgler les probl`mes de synchronisation. Nutilisez ni smaphore ni instruction e e e particuli`re du processeur et indiquez clairement pourquoi votre solution dattente active est e correcte. b) Pour viter une perte de CPU, les concepteurs dcident dutiliser les smaphores ` compteur e e e a pour rgler les probl`mes de synchronisation. Donnez la nouvelle version de lalgorithme du e e producteur et du consommateur. c) Les concepteurs observent que le stock est toujours plein. Ceci est d au fait que le processus u producteur est plus rapide que le processus consommateur. Pour rgler ce probl`me, ils dcident e e e de placer deux consommateurs pour un producteur. Donnez la nouvelle version de producteur et des consommateurs. d) Si nous avons deux consommateurs, nous pourrions avoir deux stocks (un pour chaque consommateur) et le producteur pourrait placer sa production alternativement dans les deux stocks. Expliquez pourquoi la solution du stock unique est meilleure (donnez au moins deux bonnes raisons). e) Sur une machine mono-processeur quelle doit tre la nature du traitement eectu par les e e consommateurs pour que la multiplication de ces derniers soit intressante. e

Les philosophes et les banquiers

(6 points)

Un beau jour de juin, n philosophes dcident daller manger ensemble des spaghettis. Le restaue rateur dresse une table ronde, mais place seulement n fourchettes (une entre chaque assiette). Pour manger, un philosophe a besoin de deux fourchettes : celle place ` sa droite et celle place ` sa e a e a gauche. Questions : a) Montrez quil existe un risque dinterblocage et proposez une solution simple ` ce probl`me. a e b) Pour viter les interblocages, les philosophes dcident dappliquer lalgorithme des banquiers. e e Donnez la matrice Max et le vecteur Dispo. c) Pour ce probl`me bien particulier donnez lalgorithme simpli permettant de dterminer e e e si oui ou non, le syst`me est dans un tat sain. e e d) Sans vous proccuper des probl`mes de paralllisme et de synchronisation, donnez lalgorithme e e e appliqu par le i`me philosophe avant de manger. e e e) Face ` ce probl`me, le restaurateur dcide de placer une assiette au centre de la table dans a e e laquelle il pose les n fourchettes. Les philosophes vont chercher les fourchettes sur cette assiette et les y reposent apr`s avoir mang. Dans ce cadre, existe-t-il un risque dinterblocage ? e e f) Donnez la nouvelle version de la matrice Max et du vecteur Dispo.

Syst`mes dexploitation e
Troisi`me anne de la licence dinformatique U.F.R. des Sciences de Luminy e e 24 mai 2005, dure 3 heures, e Tous les documents sont autoriss. e

attente[i] := vrai; rpter e e Test-And-Set(copie, verrou) jusqu` (copie = faux) ou (attente[i] = faux) a < section critique > j := (i + 1) mod n; tant-que (j <> i) et (attente[j] = faux) faire j := (j + 1) mod n; attente[i] := faux si (i = j) alors verrou := faux sinon attente[j] := faux Questions : a) Combien de processus excutent leur section critique simultanment (justiez votre rponse) ? e e e b) Quel est le comportement particulier de ces processus et en quoi cette solution est-elle meilleur que la programmation classique du prologue et de lpilogue ? e c) Malgr ses qualits, il reste un dfaut ` cette solution. Lequel ? e e e a

Gestion dune mmoire virtuelle e

(8 points)

Considrons une machine qui comporte une mmoire compose de trois pages physiques initialement e e e vides. Lors de son excution, un processus unique acc`de dans lordre aux pages virtuelles suivantes : e e 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1. Questions : a) Pour chacun des algorithmes FIFO, LRU et OPT, donnez le contenu des pages physiques (c-`-d a un numro de page virtuelle) apr`s chaque acc`s. Prcisez galement le nombre total de dfauts de e e e e e e page provoqus par ces acc`s. (3 points) e e b) Si le nombre de pages physiques passe ` quatre, quel est le nombre de dfauts de page pour a e lalgorithme LRU (2 points) ? c) Quel est le meilleur compromis pour la taille de la mmoire physique (1 point) ? e d) Donnez la nouvelle trace de lexcution du processus en prenant comme hypoth`se que la taille des e e pages virtuelles a doubl (2 points). e

Codage des chiers


struct descripteur { int nbblocs; int data[10]; int premierIndex; int dernierIndex; }

(6 points)

Dans un syst`me de chiers, la position physique dun chier sur disque est dnie par un descripteur : e e /* /* /* /* taille du fichier en blocs */ adresses des 10 premiers blocs de donnes */ e adresse du premier bloc dindex */ adresse du dernier bloc dindex */

Synchronisation de processus

(6 points)

Soient n processus numrots P0 , P1 , . . . , Pn1 . Chaque processus acc`de aux variables partages e e e e suivantes : attente : tableau [ 0 ... n-1 ] de boolens; e verrou : boolen; e Ces variables sont toutes initialises ` la valeur faux. Les autres variables sont propres ` chaque processus. e a a Par ailleurs, nous disposons sur cette machine dune instruction cble de synchronisation dnie par a e e instruction Test-And-Set ( var copie:boolen, var verrou:boolen ) e e dbut e en exclusion mutuelle faire copie := verrou; verrou := vrai; n-faire n Le processus Pi a la forme suivante :

ee e Les blocs dindex sont cha es et peuvent contenir TAILLE INDEX rfrences aux blocs de donnes. Nous n disposons de deux fonctions pour manipuler ces index : int creerIndex(int bloc, int precedent) Cration dun nouvel index contenant une seule rfrence. e ee Cette fonction renvoie ladresse physique du nouvel index sur disque. void ajouterReference(int index, int bloc) Ajout dun rfrence ` un bloc dindex dont ladresse ee a physique est passe en param`tre. Un emplacement doit tre disponible dans lindex en question. e e e Dans ce cadre, rpondez aux questions suivantes : e a) Donnez une explication de ce codage (2 points). b) Donnez une implantation de la fonction ajouterBloc qui a la charge dajouter un bloc de donne e ` un descripteur en prenant soin, le cas chant, de crer un nouvel index. Attention : quatre cas a e e e sont ` tudier (4 points). ae void ajouterBloc(struct descripteur* d, int bloc)

Traitement des interblocages

(5 points)

Syst`mes e dexploitation
Responsable : Jean-Luc Massat

Troisi`me anne de la licence dinformatique e e U.F.R. Sciences de Luminy Universit de la Mditerrane e e e 16 mai 2006, dure 3 heures, e calculatrices et documents autoriss. e

Considrons un syst`me dallocation de ressources portant sur 5 processus et 4 classes de rese e sources. Ltat du syst`me est donn par les informations suivantes : e e e Allocation R1 R2 R3 0 0 1 1 0 0 1 3 5 0 6 3 0 0 1 R4 2 0 4 2 4 R1 0 1 2 0 0 Max R2 0 7 3 6 6 R3 1 5 5 5 5 R4 2 0 6 2 6

Synchronisation de processus

(9 points)

P0 P1 P2 P3 P4

P0 P1 P2 P3 P4

R1 1

Dispo R2 R3 5 2

R4 0

Dans ce cadre, rpondez aux questions suivantes en utilisant lalgorithme des banquiers : e a) Combien faut-il ajouter de ressources (pour chaque Ri ) de mani`re ` ce que les processus e a puissent sexcuter sans contrainte. e b) Le syst`me est-il dans un tat sain ? justiez votre rponse. e e e

On se propose de tirer parti dune machine multi-processeurs pour acclerer lexcution dun e e processus. Ce processus est compos de six portions de code notes A, B, C, D, E et F . Lanalyse e e de ces portions nous rv`le les contraintes suivantes : e e 1. 2. 3. 4. lexcution e lexcution e lexcution e lexcution e de de de de B doit se placer apr`s C, G et A, e D doit se placer apr`s A et G, e F doit se placer apr`s B ou bien D, e C doit se placer apr`s A et E, e

c) Si le processus P1 dpose la requte (0, 4, 2, 0), cette requte est-elle accepte immdiatement ? e e e e e (justiez votre rponse). e d) A partir de la situation initiale, si le processus P4 dpose la requte (1, 4, 2, 0), quel est le e e rsultat ? e

Nous navons aucune information sur la dure dexcution de ces portions de code. e e Questions : a) Donnez un ordre dexcution squentiel qui respecte les contraintes nonces. e e e e b) Imaginons que dans un processus on puisse utiliser les notations suivantes : cobegin P1 ; . . . Pn ; coend begin S1 ; . . . Sm ; end pour indiquer au syst`me que les instructions Pi peuvent se drouler en parall`le tandis que les e e e instructions Si doivent tre excutes de mani`re squentielle. Une instruction cobegin/coend e e e e e se termine quand toutes les instructions qui la composent sont termines. e Utilisez ces notations pour rendre le plus parall`le possible lexcution des six portions de e e code. Tout le paralllisme potentiel est-il utilis ? (justiez votre rponse). e e e c) En utilisant des smaphores, les cobegin/coend et les begin/end, pouvez vous reformuler e le processus pour utiliser tout le paralllisme potentiel. Noubliez pas de prciser, pour chaque e e smaphore, la valeur initiale du compteur. e d) Mme question que prcdemment si la contrainte 2 est modie comme suit : e e e e 2. lexcution de D doit se placer apr`s A et G ou bien apr`s E. e e e e) Si chaque portion calcule pendant une seconde, quel est le nombre de processeurs dont vous avez besoin ?

Gestion des processus


faire 3 fois | calculer pendant 1 seconde | crire sur le fichier F1 pendant 2 secondes e n-faire faire 2 fois | calculer pendant 1 seconde | crire sur le fichier F1 pendant 3 secondes e n-faire

(6 points)

Soit le processus ci-dessous excut sur une machine mono-processeur e e

Les deux sries dcritures sont indpendantes. e e e Questions : a) Quel est le temps de rponse de ce processus et le taux dutilisation de la CPU sur la priode e e considre ? ee b) Si le processus est maintenant structur sous la forme de deux threads, chacun soccupant e dune boucle, quel est le nouveau temps de rponse et le taux dutilisation de la CPU ? Dessinez e une trace de lexcution des threads. e c) Pour amliorer son code, le programmeur dcide de garder les threads, mais de produire deux e e chiers dirents (F1 et F2 par exemple). A quelles conditions peut-on obtenir une amlioration ? e e Evaluez cette amlioration en calculant le temps de rponse et le taux dutilisation de la CPU. e e e) Admettons que le syst`me alloue deux tampons de sortie pouvant contenir chacun 2 secondes e dentre/sortie (un pour chaque thread). Dans ces conditions, rpondez ` la question a) et e e a donnez la trace de lexcution. e

Gestion dune mmoire virtuelle e

(6 points)

Syst`mes e dexploitation
Responsable : Jean-Luc Massat

Troisi`me anne de la licence dinformatique e e U.F.R. Sciences de Luminy Universit de la Mditerrane e e e 16 mai 2007, dure 3 heures, e calculatrices et documents autoriss. e

Considrons une machine qui comporte une mmoire compose de trois pages physiques initiae e e lement vides. Lors de son excution, un processus unique acc`de dans lordre aux pages virtuelles e e suivantes : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1. Questions :

Paralllisme et utilisation des  threads  e

(10 points)

a) Pour chacun des algorithmes FIFO, LRU et OPT, donnez le contenu des pages physiques (cest-`-dire un numro de page virtuelle) apr`s chaque acc`s. Prcisez galement le nombre a e e e e e total de dfauts de page provoqus par ces acc`s. e e e b) Si le nombre de pages physiques passe ` quatre, quel est le nombre de dfauts de page pour a e lalgorithme LRU ? c) Donnez la nouvelle trace de lexcution du processus en prenant comme hypoth`se que la taille e e des pages virtuelles a doubl. e

Vous venez dacqurir une nouvelle machine dote de quatre processeurs. Pour lexploiter au e e mieux, vous dcidez de modier vos anciens programmes an de les adapter ` cette architecture. e a Pour ce faire, le syst`me dexploitation vous ore deux fonctions pour grer des  threads  : e e int thread_create(); void thread_exit(); /* cration dun thread */ e /* suicide dun thread */

Cette fonction cre un nouveau  thread  ls par recopie ` lidentique du  thread  courant e a (le p`re). Le  thread  ls dmarre son excution comme si il revenait de lappel ` la fonction e e e a thread create. La fonction renvoie 0 chez le ls, et 1 chez le p`re. e Questions :

Mmoire virtuelle pagine e e

(4 points)

Soit un syst`me bas sur une mmoire virtuelle pagine. La taille des pages est xe ` 210 e e e e e a octets. Dans un programme C on dclare la tableau ci-dessous. Pour lexcution de ce programme, e e le syst`me a rserv 8 pages physiques qui sont initialement vides. e e e char tableau[32][2048];

a) Le programme A est compos de trois parties (notes A1 , A2 et A3 ). A3 a besoin des rsultats e e e de A1 et A2 et lexcution de A1 est toujours plus longue que celle de A2 . Dans ce cadre, e donnez une version qui utilise le paralllisme de A et expliquez le gain attendu. e b) Mme question, mais on ne conna pas le plus long des deux codes A1 et A2 . Jinsiste : vous e t ne disposez de rien dautre que les deux fonctions prsentes ci-dessus. Par contre, je vous e e rappelle que les  threads  partagent les variables globales. Quelle critique pouvez-vous faire de la solution que vous proposez ? c) Le programme B est compos de quatre parties. Le code B2 a besoin du rsultat de B1 , tandis e e que B4 a besoin de B2 ou B3 . Proposez une version parall`le et ventuellement montrez les e e dfauts de votre solution. e d) La nouvelle version du syst`me vous ore les trois fonctions ci-dessous. Dans ce cadre, rpondez e e ` la question c). a sem_t sema_create(int compteur); /* cration dun smaphore e e */ void sema_wait(sem_t s); /* prise dun smaphore (P) e */ void sema_signal(sem_t s); /* libration dun smaphore (V) */ e e e) Comment modier la rponse ` la question prcdente pour tre sr que le  thread  initial e a e e e u est bien le dernier ` terminer son excution (utilisez les smaphores). a e e

Questions : a) Dans ce cadre, combien de dfauts de page sont gnrs par le code suivant (on part du e e ee principe que les indices sont dans des registres) : for(i=0; i<32; i++) for(j=0; j<2048; j++) tableau[i][j] = A; Justiez votre rponse. Quel est limpact dun doublement de la mmoire physique (8 ` 16) ? e e a b) Mme question si le code devient (la mmoire physique est de 16 pages) : e e for(j=0; j<2048; j++) for(i=0; i<32; i++) tableau[i][j] = A; c) De combien faut-il augmenter le nombre de pages physiques pour que le nombre de dfaut de e page baisse de mani`re signicative ? e

Paralllisme et utilisation des  threads  e

(6 points)

Syst`mes e dexploitation
Responsable : Jean-Luc Massat

Troisi`me anne de la licence dinformatique e e U.F.R. Sciences de Luminy Universit de la Mditerrane e e e 16 mai 2008, premi`re session, e dure 3 heures, e calculatrices et documents autoriss. e

Vous venez dacqurir une nouvelle machine dote de plusieurs processeurs. Pour lexploiter au e e mieux, vous dcidez de modier vos anciens programmes an de les adapter ` cette architecture. e a Pour ce faire, le syst`me dexploitation vous ore deux fonctions pour grer des  threads  : e e int thread_create(); void thread_exit(); /* cration dun thread */ e /* suicide dun thread */

Gestion de chiers

(10 points)

La fonction thread_create cre un nouveau  thread  ls par recopie ` lidentique du  thread  e a courant (le p`re). Le  thread  ls dmarre son excution comme si il revenait de lappel ` la fonction e e e a thread create. La fonction renvoie 0 chez le ls, et 1 chez le p`re. e Questions : a) Le programme A est compos de trois parties (notes A1 , A2 et A3 ). A3 a besoin des rsultats e e e de A1 et A2 et lexcution de A1 est toujours plus longue que celle de A2 . Dans ce cadre, e donnez une version qui utilise le paralllisme de A et expliquez le gain attendu. e b) Mme question, mais on ne conna pas le plus long des deux codes A1 et A2 . Jinsiste : vous e t ne disposez de rien dautre que les deux fonctions prsentes ci-dessus. Par contre, je vous e e rappelle que les  threads  partagent les variables globales. Quelle critique pouvez-vous faire de la solution que vous proposez ? c) Le programme B est compos de trois parties. Le code B3 a besoin des rsultats de B1 ou e e B2 . Proposez une version parall`le sans perte de CPU. Pour vous aider, on vous donne une e fonction non interruptible qui incrmente son argument et renvoie son ancienne valeur : e int test_and_set(int* verrou); /* renvoyer puis incrmenter e */
(4 points)

Considrons un disque gr ` laide dune FAT (File Allocation Table). Ce tableau dentiers e ee a poss`de autant de lignes que de blocs sur le disque. Un bloc i est libre si fat[i] = 0. Dans les autres e cas, il est utilis. e Questions : a) Ecrivez une fonction qui recherche un espace libre de n blocs conscutifs et renvoie son adresse e (ou -1 en cas dchec) en se basant sur la stratgie du premier trouv (rst-t) [2 points]. e e e int alloc_contigue(int fat[], int taille_fat, int n) b) Mme question pour la stratgie du meilleur ajustement (best-t) [3 points]. e e Descripteur. Un descripteur est un bloc qui permet lacc`s aux donnes dun chier. Pour un e e chier donn, si les blocs i et j se suivent, alors fat[i] = j. Si le bloc k est le dernier, alors e fat[k] = 1. struct descripteur { int taille_en_blocs; int adr_premier_bloc; int adr_dernier_bloc; }; Questions : c) Ecrivez la fonction  int verifier(struct descripteur d)  qui vrie le codage dun e chier (descripteur, taille et cha nage) et renvoie 1 en cas de succ`s et 0 sinon. [2 points] e d) Sachant que les descripteurs sont marqus -2 dans la FAT, crivez une fonction qui ache les e e blocs de donnes qui nappartiennent ` aucun chier (erreur de codage). [3 points] e a void verifier_disque(int fat[], int taille_fat); Vous avez ` votre disposition une fonction de lecture des descripteurs : a struct descripteur lire_descripteur(int adr); Conseil : utilisez un tableau supplmentaire qui donne ltat de chaque bloc du disque. e e

Mmoire virtuelle pagine e e


0 . . . RL = 120 RB = 300 70 71 . . . 119 120 . . .

Soit un syst`me bas sur une mmoire pagine. La e e e e taille des pages est xe ` 212 octets et la machine e a manipule des adresses et des entiers de 32 bits. La mmoire du processus courant est dcrite par les e e param`tres ci-contre. e

n p. phys. 600 . . . 900 950 . . . 210 350 . . .

Questions : a) Si la table des pages mesure au maximum une page, quelle est la taille maximun de la mmoire e allou ` un processus. Pourquoi cette limitation ? [1 point] ea b) Quelle est la taille de la mmoire alloue au processus courant. [0,5 point] e e c) Quelle est la taille maximum de la mmoire physique que le syst`me puisse grer. [1 point] e e e d) Donnez les adresses physiques des adresses pagines 3977, 288820 et 494640. [1,5 point] e Noubliez pas de justier vos rponses. e

Gestion des processus

(5 points)

Syst`mes e dexploitation
Responsable : Jean-Luc Massat

Troisi`me anne de la licence dinformatique e e U.F.R. Sciences de Luminy Universit de la Mditerrane e e e 12 juin 2008, deuxi`me session, e dure 3 heures, e calculatrices et documents autoriss. e

Soit un processus dont le travail consiste ` calculer (pendant 1 seconde) et ` sauver le rsultat a a e dans un chier (pendant 4 secondes) le tout dix fois. Questions : a) Quel est le temps de rponse de ce processus et le taux dutilisation de la CPU sur la priode e e considre ? [1 point] ee b) Admettons que le syst`me alloue un tampon de sortie pouvant contenir 2 secondes dentre/sortie. e e Dans ces conditions rpondez ` la question a) et donnez la trace de lexcution. [2 points] e a e c) Du point de vue du syst`me dexploitation, est-il intressant dallouer un tampon de sortie e e dont la taille est suprieur ` 4 secondes (justiez votre rponse) ? [2 points] e a e

Gestion dune mmoire virtuelle e

(9 points)

Certaines machines (comme le processeur IBM RS-6000) nutilisent pas une table des pages virtuelles pour chaque processus. Sur ce type de syst`me, ltat de la mmoire est dcrit par une seule table e e e e qui dispose dune entre pour chaque page physique. Cette table a la forme suivante e struct { int idp; int npv; int protection; int modif; } dpp[NB_PAGES_PHYSIQUES];

3
/* /* /* /* nu de processus nu de page virtuelle codage des permissions bit de modification */ */ */ */

Mmoire pagine ` deux niveaux e e a

(6 points)

Considrons un syst`me bas sur une mmoire pagine ` deux niveaux. La taille des pages est e e e e e a e xe ` 210 octets et la machine manipule des adresses et des entiers de 32 bits. La mmoire du e a processus courant est dcrite par les param`tres RL=31076, RB=600 et les pages ci-dessous. e e Adresse 150 : n p. phys. 0 950 . . . . . . . . . . . . 100 101 102 . . . 255 Questions : a) Donnez la composition dune adresse pagine dans ce syst`me (nature et taille en nombre de e e bits de chaque composante) ? [1 point] b) Quelle est la taille maximum de la mmoire allou ` un processus ? Comment procder pour e ea e augmenter cette limite ? [2 points] c) Quelle est la taille de la mmoire alloue au processus courant. [1 point] e e d) Donnez les adresses physiques des adresses pagines 2621440, 2726554, 3351702 et 31511528. e [2 points] Noubliez pas de justier vos rponses. e 500 190 100 . . . 550 Adresse 400 : n p. phys. . . . . . . 50 51 52 . . . . . . . . . 800 450 350 . . . . . . . . . Adresse 600 : n p. phys. 0 180 . . . . . . 10 11 12 . . . 120 121 150 170 900 . . . 400 401 Adresse 900 : n p. phys. . . . . . . . . . . . . . . . . . . 200 200 201 700 202 300 . . . . . .

Les pages physiques libres sont signales par le champ idp gal ` zro. Les adresses virtuelles et e e a e physiques ont maintenant la forme suivante : struct ADRV { int idp; int npv; int deplacement; }; struct ADRP { int npp; int deplacement; }; Questions : a) A-t-on, du point de vue dun processus, les mmes capacits dadressage mmoire que dans e e e un syst`me plus classique ? e b) Ecrivez la fonction de transformation des adresses virtuelles en adresses physiques. struct ADRP transformer(struct ADRV a) { ... } Dans cet algorithme, le dfaut de page va correspondre ` lappel de la fonction : e a struct ADRP defaut_de_page(struct ADRV a); c) Quel est limpact de la taille des pages sur la performance du processus de transformation des adresses. Justiez votre rponse en prsentant quelques exemples chirs. Quels sont les e e e moyens, matriels et/ou logiciels, qui permettent de rduire le cot de cette transformation. e e u d) Ecrivez la fonction defaut_de_page. Pour simplier, vous pouvez considrer quil existe une e zone de pagination pour chaque processus. Vous disposez alors des deux fonctions : charger_page( int idp, int npv, int npp); sauver_page ( int idp, int npp, int npv); e) Comment le partage de pages peut-il sorganiser dans ce syst`me ? e

You might also like