Professional Documents
Culture Documents
Gestion de la mmoire
mmoire principale est le lieu o se trouvent les programmes et les donnes quand le processeur les excute. On loppose au concept de mmoire secondaire, reprsente par les disques, de plus grande capacit, o les processus peuvent sjourner avant dtre excuts. La ncessit de grer la mmoire de manire optimale est toujours fondamentale, car en dpit de sa grande disponibilit, elle nest, en gnral, jamais sufsante. Ceci en raison de la taille continuellement grandissante des programmes. Nous verrons quil y a plusieurs schmas pour la gestion de la mmoire, avec leurs avantages et inconvnients.
A
9.1 Introduction
9.1.1 Rappels sur la compilation
La production dun programme passe par plusieurs phases, comme illustr la gure 9.1 : criture en langage source (C/C++, Pascal,... ). Compilation en module objet (langage machine). Peuvent inclure des bibliothques. Appel aux bibliothques : point de branchement. Assemblage en image binaire. dition de liens statiques. dition de liens dynamiques. Chargement en mmoire pour excution. 1
2
Modules source
Bibliothque statique
diteur de liens
Module excutable
Chargeur
Bibliothque dynamique
Image mmoire
F IG . 9.1 Phases de la compilation. Reprsentation des adresses mmoire Code source : adresses symboliques. Par exemple : int compteur Module objet : adresses traduites. Par exemple le 50me mot depuis le dbut despace mmoire. Module excutable, chargement : adresses absolues. Par exemple lemplacement mmoire situ ladresse FFF7 Liaison dadresses Le programme rside sur disque comme Fichier excutable. Il est ensuite charg en mmoire pour tre excut. Il peut rsider, le plus souvent, dans une partie quelconque de la mmoire. On les appelle Programmes translatables 1 . Les programmes .com de MS/DOS constituent cependant une exception car la compilation est statique.
Translation sera synonime de traduction dans notre contexte, et pourront tre utiliss indistinctement.
1
9.1. INTRODUCTION
Liaison des instructions des adresses mmoire
Pendant la compilation : Si lemplacement du processus en mmoire est connu, le compilateur gnre des adresses absolues. Pendant le chargement : Code translatable si lemplacement du processus en mmoire nest pas connu. Pendant lexcution : dplacement dynamique du processus possible. Utilise des fonctions du matriel. Espace dadressage logique ou physique Lunit centrale manipule des adresses logiques (emplacement relatif). Les programmes ne connaissent que des adresses logiques, ou virtuelles. Lespace dadressage logique (virtuel) est donc un ensemble dadresses pouvant tre gnres par un programme. Lunit mmoire manipule des adresses physiques (emplacement mmoire). Elles ne sont jamais vues par les programmes utilisateurs. Lespace dadressage physique est un ensemble dadresses physiques correspondant un espace dadresses logiques.
Traiter le va-et-vient (swapping ) entre le disque et la mmoire principale lorsque cette dernire ne peut pas contenir tous les processus. Possder un mcanisme de calcul de ladresse physique (absolue) car, en gnral, les adresses gnres par les compilateurs et les diteurs de liens sont des adresses relatives ou virtuelles. En gnral, pour ne pas ralentir laccs la mmoire le calcul des adresses est ralis par le matriel. Comme nous allons le voir, les techniques de gestion de la mmoire sont trs conditionnes par les caractristiques du systme (monoprogramm ou multiprogramm) et du matriel (registres de base et limite, MMU). Nous passerons en revue un certain nombre de mthodes de gestion de la mmoire.
premires adresses du systme, comme illustr la gure 9.3. Les composantes principales dun systme dexploitation prsentes dans la section du moniteur sont le vecteur dinterruptions qui donne accs aux services dE/S et les tables PCB (Bloc de Contrle de Processus). 0 Moniteur . . . n-1 F IG . 9.3 Moniteur rsident. Un exemple de tel type de moniteur est celui de MS-DOS. Un seul processus utilisateur est en mmoire un instant donn (cette technique nest plus utilise de nos jours). On trouve en mmoire, par exemple, le systme dexploitation en mmoire basse, les pilotes de priphriques en mmoire haute (dans une zone allant de 640 Ko 1 Mo) et un programme dutilisateur entre les deux (voir gure 9.4). Pilotes en ROM (BIOS) Programme dutilisateur (RAM) Systme dexploitation (RAM) F IG . 9.4 Organisation de la mmoire du PC sous MS-DOS. Lorsque la mmoire est organise de cette manire, il ne peut y avoir quun seul processus qui sexcute un instant donn. Lutilisateur entre une commande sur un terminal et le systme dexploitation charge le programme demand en mmoire puis lexcute. Lorsquil se termine, le systme dexploitation afche une invitation sur le terminal et attend la commande suivante pour charger un nouveau processus qui remplace le prcdent. Pour protger le code et les donnes du systme dexploitation des changements que peuvent provoquer les programmes des utilisateurs, il
Programmes
y a un registre limite (montr la gure 9.5) qui contient ladresse partir de laquelle commencent les instructions et donnes des programmes des utilisateurs. Chaque adresse (instruction ou donne) gnre par un programme est compare avec le registre limite. Si ladresse gnre est suprieure ou gale la valeur du registre, on laccepte, sinon on refuse laccs et on interrompt le processus avec un message daccs illgal de mmoire.
Registre limite
UCT
Mmoire
F IG . 9.5 Registre limite. Toute rfrence la mmoire doit tre vrie, ce qui implique un ralentissement du systme. Il y a plusieurs stratgies pour implanter le registre limite. Lune dentre elles consiste utiliser une valeur xe, enregistre au niveau matriel ou au dbut du dmarrage du systme. Cependant si la valeur choisie est trop petite et que le systme dexploitation grandisse, il se retrouvera dans une zone non protge, ou au contraire, lespace pour les programmes serait diminu. Une solution est lexistence dun registre variable pour permettre dinitialiser diffrentes valeurs dadresses au registre limite. Celui-ci peut tre charg par le systme dexploitation qui utilise des privilges spciaux, cest dire, on excute le systme dexploitation en mode moniteur.
site la prsence de plusieurs processus en mmoire. La mmoire est donc partage entre le systme dexploitation et plusieurs processus. Il se pose cependant le problme suivant : comment organiser la mmoire de manire faire cohabiter efcacement plusieurs processus tout en assurant la protection des processus ? Deux cas sont alors distinguer : Multiprogrammation sans va-et-vient. Dans ce cas, un processus charg en mmoire y sjournera jusqu ce quil se termine (pas de va-etvient entre la mmoire et le disque). Multiprogrammation avec va-et-vient. Dans ce cas, un processus peut tre dplac temporairement sur le disque (mmoire de rserve : swap area ou backing store ) pour permettre le chargement et donc lexcution dautres processus. Le processus dplac sur le disque sera ultrieurement recharg en mmoire pour lui permettre de poursuivre son excution. Ce schma pose dautres difcults : tant donn que les processus sont chargs diffrentes adresses, les adresses relatives gnres par les compilateurs et les diteurs de liens sont diffrentes des adresses physiques, alors comment raliser la translation dadresses ? Dun autre cot, la cohabitation de plusieurs processus en mmoire doit assurer leur protection : il ne faut pas permettre un processus dun utilisateur dadresser la mmoire des processus des autres utilisateurs. Quelle est la meilleur manire dassurer la protection des processus contre les intrusions des autres ?
consiste effectuer les liens des adresses dans le temps dexcution, et ajouter chaque adresse gnre par le programme la valeur du registre limite. De cette faon les programmes vont manipuler des adresses logiques et le matriel de gestion de mmoire les convertira en adresses physiques, comme montr la gure 9.7. 0 Moniteur
Programmes
. . . n-1
UCT
Mmoire
9.4 Swapping
Le schma de moniteur rsident a t utilis depuis lintroduction des premiers systmes dexploitation multiprogramms. On utilise une partie de la mmoire pour le moniteur rsident et le reste pour les programmes des utilisateurs. Quand le systme dexploitation rend le contrle au programme suivant, le contenu de la mmoire est copi un stockage temporaire, et les donnes et les instructions dun nouveau programme sont rcu-
prs depuis le stockage secondaire vers la mmoire principale. Ce schma est connu sous le nom de swapping . Le stockage temporaire peut tre un disque rapide, ayant lespace ncessaire pour contenir les images mmoire de tous les programmes en excution (rsidents dans la le de prts). videmment le temps de swapping est trop grand compar au temps de lUCT, cest pourquoi il est prfrable que chaque processus qui obtient le contrle de lUCT sexcute pour un temps suprieur au temps de swap (voir gure 9.8).
Stockage temporaire Moniteur buffer 1 3 buffer 2 1 swap-out 2 1 swap-in 1 Prog. utilisateur 1 Prog. utilisateur 2
F IG . 9.8 (1) Tant que le programme sexcute, le systme dexploitation fait un swapping de 2 processus, lun qui sort (swap out) et lautre qui rentre (swap-in). (2) Quand le processus en excution se termine, ses donnes et instructions passent au buffer 2 pour ensuite faire swap-out de ce processus. (3) Depuis le buffer 1 on extrait les donnes et les instructions dun nouveau processus sexcuter.
10
Avec MFT, le nombre et la taille des partitions sont xs lavance. Par exemple, avec une mmoire de 32 Ko, et un moniteur utilisant 10 Ko, le reste de 22 Ko peut tre divis en 3 partitions xes de 4Ko, 6 Ko et 12 Ko. La dcision sur le nombre et la taille des partitions dpend du niveau de multiprogrammation voulu. En tout cas, le programme avec le plus grand besoin de mmoire doit avoir au moins, une partition pour y mettre ses donnes et instructions. MFT doit implanter des mcanismes de protection pour permettre plusieurs programmes de sexcuter sans envahir lespace dadresses dautre programme. Pour cela il existe deux registres qui indiquent la plage des adresses disponibles pour chaque programme. Les deux interprtations courantes sont les registres limite et les registres base-limite.
11
SE CPU
adresse <
adresse
Mmoire
SE UCT
adresse <
Mmoire F
F IG . 9.11 Registres de base et limite. Quand on lance un processus, on charge dans le registre de base la limite infrieure de la partition qui lui est attribue (adresse absolue du dbut de la partition) et dans le registre limite la longueur de la partition. Pendant lexcution dune instruction, les adresses relatives rfrences par linstruction sont translates en adresses physiques en ajoutant le contenu du registre de base chaque adresse mmoire rfrence, on vrie ensuite si les adresses ne dpassent pas le registre limite an dinterdire tout accs en dehors de la partition courante3 . Un important avantage du registre de base est que les programmes peuvent tre dplacs en mmoire aprs le dbut de leur excution. Il suft
Le PC sous MS-DOS utilise une version simplie de ce mcanisme. Voir la note la n de ce chapitre.
3
12
pour cela de changer la valeur du registre de base, et ventuellement celle du registre limite.
9.5.3 Fragmentation
Avec le schma MFT, on fait face au problme de fragmentation, puisquon gnre deux types despaces de mmoire non utiliss : la partie dune partition non utilise par un processus est nomme fragmentation interne. Ceci est d au fait quil est trs difcile que tous les processus rentrent exactement dans la taille de la partition. Les partitions qui ne sont pas utilises, engendrent la fragmentation externe. Le phnomne de fragmentation est montr sur la gure 9.12.
Moniteur Partition 2K Fragmentation interne
Partition 4K
Fragmentation externe
Partition 6K
Mmoire
13
Nouveaux processus
Nouveaux processus
F IG . 9.13 File dentre multiple gauche, et le unique droite. Files dentre multiples Chaque nouveau processus est plac dans la le dattente de la plus petite partition qui peut le contenir. Lespace inutilis dans une partition alloue un processus est perdu cause de la fragmentation interne. La situation suivante peut se produire : des processus en attente alors quil y a des partitions vides. La solution ce problme consiste en lutilisation dune seule le dattente. File dentre unique Les processus sont placs dans une seule le dattente jusqu ce quune partition se libre. Lorsquune partition se libre, il faut choisir dans la le dentre le prochain processus charger dans la partition. Le processus charg rsidera en mmoire jusqu ce quil se termine (pas de va-et-vient). Il y a cependant des inconvnients comme la fragmentation interne et le fait que le nombre de processus en excution est xe. Exemple 1. Considrez la conguration montre sur la gure 9.14 pour une le dentre unique, on voit que le processus qui a besoin de 5 Ko entre dans la partition de 6 Ko, le processus de 2 Ko dans la partition de 2 Ko. Le troisime processus de la le reste en attente, bloquant le quatrime processus, qui pourrait sexcuter dans la partition de 4K, qui est libre, mais
14
aussi le processus de 1 Ko pourrait tre excut dans cette partition. Cette dcision montre lalternative entre le concept best-t-only (cest dire, excuter le processus le plus adquat en termes despace) et rst-t only, o on excute le processus avec une priorit plus haute, qui est en tte de la liste.
Moniteur Partition 2K
4K 1K 5K 3K 1K 2K 5K
Partition 4K
Partition 6K
Mmoire
Moniteur 1K 2K Partition 2K
Partition 4K 4K 3K
6K 6K
Partition 6K
Mmoire
F IG . 9.15 Conguration de les multiples. Pour assurer la protection des processus dans le systme IBM 360, IBM fut oblige :
15
Diviser la mmoire en blocs de 2Ko et assigner 4 bits de protection chaque bloc. Le mot dtat ou PSW (program status word ) contenait une cl de 4 bits. Le 360 droutait toutes tentatives daccs la mmoire dont les codes de protection diffraient de la cl du PSW. Ce mcanisme interdisait les interactions entre les processus ou entre les processus et le systme dexploitation. Lorganisation de la mmoire en partitions xes sans va-et-vient est une mthode facile mettre en uvre pour les systmes traitement par lots. Mais avec les systmes temps partag, la situation est diffrente. Puisque la mmoire ne peut pas contenir les processus de tous les utilisateurs, il faut placer quelques uns sur le disque, en utilisant le va-et-vient. Il faut, bien sr, ramener ces processus en mmoire principale avant de les excuter. Le mouvement des processus entre la mmoire principale et le disque est appel va-et vient (swapping en anglais). Un autre inconvnient de la partition xe est la perte de place cause des programmes qui sont plus petits que les partitions.
16
quand un nouveau processus doit sexcuter, on trouve un espace de mmoire assez grande pour lui contenir et on met toutes ses donnes et instructions dans cet espace pour lexcuter. Avec des partitions variables le nombre et la taille des processus en mmoire varient au cours du temps. Lallocation de la mmoire varie en fonction de larrive et du dpart des processus et de la mmoire principale. Cette forme dallocation conduit ventuellement lapparition des trous. Exemple 2. Considrez les caracteristiques suivantes dun ensemble de processus : Processus 1 2 3 4 5 Besoins de mmoire 60K 100K 30K 70K 50K Temps 10 5 20 8 15
TAB . 9.1 Leur ordonancement et besoins mmoire sont montrs sur les gures 9.16 et 9.17.
0K Moniteur 40K processus 1 100K 100K 40K processus 1 0K Moniteur
processus 3
processus 3
F IG . 9.16 Sous un ordonnanceur robin-round (a) le premier qui termine et libre de la mmoire est le processus 2. On peut runir les espaces inutiliss en une seule partition en dplaant tous les processus vers le bas, comme le fait le compactage de mmoire montr sur la gure 9.18. Cette mthode nest gnralement pas utilise car
17
processus 4
processus 3
processus 3
d)
F IG . 9.17 Selon FCFS (b) le processus 4 entre. Aprs le processus 1 termine (c) et le processus 5 entre en excution (d). elle requiert beaucoup de temps processeur. En revanche, elle est utilise sur les grands ordinateurs car ils possdent des circuits spcialiss 4 . Lallocation est simple si les processus ont une taille xe quils ne modient jamais. Si par contre, les tailles des segments de donnes des processus peuvent varier (par exemple par lutilisation dallocation dynamique), on a des difcults ds quun processus demande de la mmoire. Sil existe un espace libre adjacent au processus, ce dernier pourra occuper cet espace mmoire. Si cela nest pas le cas, il faut soit le dplacer dans un emplacement plus grand qui peut le contenir, soit dplacer un ou plusieurs processus sur le disque pour crer un emplacement de taille sufsante. Si la mmoire est sature et si lespace de va-et-vient sur le disque ne peut plus contenir de nouveaux processus, il faut tuer le processus qui a demand de la mmoire. La taille des processus augmente, en gnral, au cours de leur excution. On peut donc allouer chaque processus dplac ou recopi partir du disque un peu plus de mmoire quil en demande an de rduire le temps systme perdu pour cette gestion. Il faut cependant recopier sur disque uniquement la mmoire rellement utilise par le processus. Pour grer lallocation et la libration de lespace mmoire, le gestionnaire doit connatre ltat de la mmoire. Il existe trois manires de mmoriser loccupation de la mmoire :
Il faut 1 seconde pour compacter la mmoire de 1 Mo sur un PC. La CDC Cyber a de circuits qui compactent la mmoire la vitesse de 40 Mo/s.
4
18
0K SE 40K 90K 100K processus 5
processus 4 processus 3
F IG . 9.18 Compactage de mmoire. 1. Les tables de bits ou bitmaps. 2. Les listes chanes. 3. Les subdivisions.
F IG . 9.19 Table de bits. Inconvnient : Lorsquon doit ramener un processus de k units, le gestionnaire de la mmoire doit alors parcourir la table de bits la recherche de k zros conscutifs. Cette technique est rarement utilise car la mthode de recherche est lente. La gure 9.20 montre ltat de la mmoire avec trois processus qui tournent et la table de bits correspondante.
19
20
0 5 7
occup
a)
libre
O 0 5
L 5 2
O 7 5
L 12 20
O 32 3
b)
F IG . 9.21 a) tat de mmoire. b) Liste chane. 4me cas. Modier lindicateur de ltat du segment (il passe libre). Fusionner les trois segments. X Allocation despace Lallocation dun espace libre pour un processus peut se faire suivant quatre stratgies principales : le premier ajustement ou rst t, la zone libre suivante , le meilleur ajustement ou best t et le pire ajustement ou worst t. 1re zone libre (rst t ) Dans le cas du premier ajustement , on recherche le premier bloc libre de la liste qui peut contenir le processus quon dsire charger. La zone est scinde en deux parties : la premire contient le processus et la seconde est lespace inutilis (sil noccupe pas toute la zone). Inconvnient : Fragmentation externe (Segments libres entre processus). Zone libre suivante Il est identique au prcdent mais il mmorise en plus la position de lespace libre trouv. La recherche suivante commencera partir de cette position et non partir du dbut. Meilleur ajustement (best t ) On cherche dans toute la liste la plus petite zone libre qui convient. On vite de fractionner une grande zone dont on pourrait avoir besoin ultrieurement. Cet algorithme est plus lent que le premier. Il a tendance remplir la mmoire avec de petites zones libres inutilisables.
21
Plus grand rsidu ou pire ajustement (worst t ) Il consiste prendre toujours la plus grande zone libre pour que la zone libre restante soit la plus grande possible. Les simulations ont montr que cette stratgie ne donne pas de bons rsultats.
Par exemple, supposons que la taille maximale de mmoire principale est de 1 Mo et que un processus de 70 Ko demande tre charg. Le gestionnaire dtermine dabord la taille du bloc qui lui sera allou : qui est gale la plus petite puissance de 2 qui lui est suprieure, soit 128 Ko. Comme il ny a pas de blocs libres de taille 128 Ko, 256 Ko ou 512 Ko, la mmoire de 1 Mo est divise en deux blocs de 512 Ko. Le premier bloc est divis en deux blocs de 256 Ko. Enn, le premier des deux blocs nouvellement crs est divis en deux blocs de 128 Ko. Lespace allou au processus est situ entre ladresse 0 et 128 Ko.
Il peut y avoir dautres systmes, comme par exemple celui de Fibonnaci, o la relation de rcurrence est : #%$'&)(01#2$435#%$768(@9A#%BC01#)(0ED
5
22
Lallocation par subdivision est rapide mais elle est assez inefcace en ce qui concerne lutilisation de la mmoire, car arrondir les tailles une puissance de 2 implique une certaine fragmentation interne. Linux utilise cet algorithme pour lassignation de mmoire [?].
Mmoire utilisateur
F IG . 9.22 Espace de va-et-vient. Le systme de va-et-vient, sil permet de pallier le manque de mmoire ncessaire plusieurs processus, nautorise cependant pas lexcution de programmes de taille suprieure celle de la mmoire centrale. Une solution consiste permettre lutilisateur de diviser son programme en segments (segments de recouvrement ou overlays en anglais) et charger un segment en mmoire. Le segment 0 sexcute en premier. Lorsquil se termine, il appelle un autre segment de recouvrement.
23
Cette solution nest pas intressante, car cest le programmeur qui doit se charger du dcoupage de son programme en segments de recouvrement. Une autre solution consiste dcharger le programmeur de cette tche. Le systme dexploitation charge en mmoire les parties du programme qui sont utilises. Le reste du programme est stock sur le disque. On peut ainsi excuter des programmes dont la taille dpasse celle de la mmoire. Ces techniques appeles mmoire virtuelle seront lobjet dtude du Chapitre ??, Mmoire virtuelle.
24
adresse : indique ladresse o on projettera le chier. Normalement on met la valeur NULL pour laisser au systme le choix. longueur : longueur de la projection. protection : mode de protection. PROT_READ (lecture), PROT_WRITE (criture) ou PROT_EXEC (excution) ou leurs combinaisons. Le mode de protection doit tre compatible avec le mode daperture du chier. fd : descripteur du chier. attribut : permet dtablir des certaines proprits de la zone. dcalage : correspond la position dans le chier de la projection. On nest pas oblig de projeter tout le chier. MAP_SHARED : Zone partage. Les modications vont affecter le chier. Un processus ls partage cette zone avec le pre. MAP_PRIVATE : Zone prive. Les modications naffectent pas le chier. Un processus ls ne partage pas cette zone avec son pre, il obtient un dupliqu. MAP_FIXED : Le chier va se projeter exactement dans ladresse spcie par le premier paramtre sil est F 0.
25
bleau de caractres, et ensuite manipulera cette projection en mmoire pour changer le premier caractre avec le dernier, le deuxime avec lavant dernier, etc. Effectuer la mme tche avec des oprations read() et write() peut savrer beaucoup plus compliqu.
G
# include # include # include # include # include < f c n t l . h> < s t d i o . h> < u n i s t d . h> < sys/ s t a t . h> < sys/mman . h>
10
i n t main ( i n t a r g c , char I argv [ ] ) { char I projection ; int fichier ; struct stat etat_fichier ; long taille_fichier ; int i; char tmp ; i f ( argc ! = 2 ) { p r i n t f ( " Syntaxe : % s f i c h i e r a i n v e r s e r\n " , argv [ 0 ] ) ; exit (1); } f i c h i e r = open ( argv [ 1 ] , O_RDWR) ; s t a t ( argv [ 1 ] , & e t a t _ f i c h i e r ) ; taille_fichier = etat_fichier . st_size ; p r o j e c t i o n = ( char I ) mmap(NULL , t a i l l e _ f i c h i e r , PROT_READ | PROT_WRITE , MAP_SHARED , f i c h i e r , 0 ) ; i f ( p r o j e c t i o n = = ( char I ) MAP_FAILED) { p e r r o r ( "mmap" ) ; exit (0); } close ( fi c h ie r ) ; f o r ( i = 0 ; i < t a i l l e _ f i c h i e r / 2 ; i ++) { tmp = p r o j e c t i o n [ i ] ; projection [ i ] = projection [ t a ille _ fic h ier P p r o j e c t i o n [ t a i l l e _ f i c h i e r P i P 1 ] = tmp ; } munmap ( ( void I ) p r o j e c t i o n , t a i l l e _ f i c h i e r ) ; return 0 ;
20
30
i P 1];
40 }
26
Q
leibnitz> cat > test.txt No hay nada que canse mas a una persona que tener que luchar, no contra su espiritu, sino contra una abstraccion. -Jos Saramago. ^D leibnitz> mmap1 test.txt leibnitz> cat test.txt .ogamaraS soJ.noiccartsba anu artnoc onis ,utiripse us artnoc on ,rahcul euq renet euq anosrep anu a sam esnac euq adan yah oNleibnitz> leibnitz> mmap1 test.txt leibnitz> cat test.txt No hay nada que canse mas a una persona que tener que luchar, no contra su espiritu, sino contra una abstraccion. -Jos Saramago. leibnitz>
9.11. EXERCICES
16M Mmoire tendue 1M + 64K Zone de mmoire trs haute 1M Zone de mmoire haute 64K 0 Mmoire conventionnelle programmes E/S, ROM Pilotes Cache et RAM disque
27
9.11 Exercices
1. Expliquez la fonction principale dun diteur de liens dans la gnration de lespace adresse dun processus. Pourquoi doit-on relocaliser les adresses dans le chier excutable qui est gnr par lditeur de liens ? Quels lments du code doivent tre relocaliss ? Pourquoi doit-on aussi relocaliser des adresses lors de lexcution dun programme ? 2. Expliquez lune des raisons pour laquelle un processus peut tre dallou de la mmoire principale avant la n de son excution. 3. Comparez la fragmentation interne la fragmentation externe pour la mmoire, et expliquez laquelle pnalise le plus la performance du systme. 4. Identiez les zones de mmoire o sont sauvegards les divers lments dun programme en tat dexcution. 5. Donnez un avantage pour lutilisation de partitions xes de mmoire, et un avantage pour lutilisation de partitions variables de mmoire. 6. Laquelle des stratgies dallocations de partitions (rst t, best t, worst t ) minimise le plus la fragmentation ? 7. Quel avantage procure au systme dexploitation lutilisation de registres de relocation ? 8. Lequel des algorithmes dallocation de mmoire nous fournirait le meilleur degr de multiprogrammation ? Expliquer.
28
9. Parmi les algorithmes dordonnancement de processus, lequel rsulterait en un meilleur degr de multiprogrammation ? Expliquez. 10. Considrez un systme dont lespace mmoire utilisateur compte 1 Mo. On dcide deffectuer une partition xe de cet espace mmoire en trois partitions de tailles respectives 600 Ko, 300 Ko, 100 Ko. On suppose que les processus arrivent dans le systme comme montr sur la table 9.2. Instant t t=0 t = 10 t = 30 t = 40 t = 50 t = 70 vnement A(200 Ko, 35) arrive B(400 Ko, 65) arrive C(400 Ko, 35) arrive D(80 Ko, 25) arrive E(200 Ko, 55) arrive F(300 Ko, 15) arrive
TAB . 9.2 Besoins de mmoire et temps darrivage. A(200 Ko, 35) veut dire que le processus A ncessite une partition de 200 Ko et que son temps de sjour en mmoire centrale est 35 units de temps. Bien entendu, un processus qui ne peut pas tre charg en mmoire est plac sur la le des processus en attente de chargement en mmoire. Un processus charg en mmoire y sjournera jusqu la n de son excution. Donnez les tats successifs doccupation de la mmoire si : Lordonnanceur de haut niveau fonctionne selon le schma plus court dabord (SJF) et le mode dallocation des trous utilise un algorithme du type best t. Lordonnanceur fonctionne selon PAPS (FCFS) et le mode dallocation des trous utilise un algorithme du type First Fit. 11. Considrez un gestionnaire de mmoire utilisant la stratgie de partitions variables. Supposez que la liste de blocs libres contient des blocs de taille de 125, 50, 250, 256, 160, 500, et 75 octets. Le bloc de 125 octets est en tte de liste et le bloc de 75 octets est en n de liste. Lequel des blocs reprsente le meilleur espace disponible pour un processus ncessitant une taille de mmoire de 84 octets. Lequel des blocs reprsente le plus grand espace disponible pour un processus ncessitant une taille de mmoire de 221 octets. Lequel des blocs reprsente le premier espace disponible pour un processus ncessitant une taille de mmoire de 178 octets.
9.11. EXERCICES
29
12. Pour chacune des stratgies dallocation de blocs de mmoire libre (meilleur, plus grand, ou premier), expliquez de quelle faon la liste de blocs libres devrait tre organise an dobtenir une performance optimale. 13. Considrez un systme nutilisant pas de registres de relocation. Par consquent, cest le chargeur de programme qui soccupe de la relocation des instructions dans limage mmoire partir de lexcutable. Serait-il possible de dcharger et de recharger limage mmoire du programme durant le cycle dexcution ? Expliquez comment cela pourrait tre ralisable ou pourquoi cela ne pourrait pas tre ralisable.