2LMD Chap4
2LMD Chap4
2LMD Chap4
29
A l'origine, la mmoire centrale tait une ressource chre et de taille limite. Elle devait tre gre avec soin. Sa taille a considrablement augment depuis, puisqu'un compatible PC a souvent aujourd'hui la mme taille de mmoire que les plus gros ordinateurs de la fin des annes 60. Nanmoins, le problme de la gestion reste important du fait des besoins croissants des utilisateurs. Le but de ce chapitre est de dcrire les problmes et les mthodes de gestion de la mmoire principale.
Registres (0 ns)
Mmoire cache (10 ns) Mmoires volatiles Mmoire principale (50 ns) Vitesse Mmoires non volatiles Disque magntique (10 ms)
Les niveaux suprieurs sont chers mais rapides. Au fur et mesure que nous descendons dans la hirarchie, le cot par bit diminue alors que le temps daccs augmente. En plus de la vitesse et du cot des divers systmes de stockage, il existe aussi le problme de la volatilit de stockage. Le stockage volatile perd son contenu quand lalimentation lectrique du dispositif est coupe. La mmoire cache (antmmoire) :
LOUKAM Mourad
30
La mise en mmoire cache est un principe important des systmes informatiques autant dans le matriel que dans le logiciel. Quand une information est utilise, elle est copie dans un systme de stockage plus rapide, la mmoire cache, de faon temporaire. Quand on a besoin dune information particulire, on vrifie dabord si elle se trouve dans la mmoire cache, sinon on ira la chercher la source et on mmorise une copie dans la mmoire cache, car on suppose quil existe une grande probabilit quon en aura besoin une autre fois.
Mmoire
Processeur
Dans ce schma, la valeur du registre de translation est additionne chaque adresse logique gnre par un processus utilisateur. Par exemple, si ladresse de base est 14000, un accs lemplacement 314 est converti lemplacement 14314. Il est noter que le programmeur naperoit en gnral pas les adresses physiques ; il manipule uniquement des adresses logiques.
31
0 Systme dexploitation
Exemple : Ltat de la mmoire dun systme est dcrit par la figure suivante. Le systme a une file de travaux dcrit par le tableau suivant : Etat de la mmoire 0 Systme dexploitation 400K File dattente des travaux Processus P1 P2 P3 P4 P5 Mmoire 600 K 1000 K 300 K 700 K 500 K Temps 10 5 20 8 15
2160 K libres
2560K
Les figures suivantes montre les diffrents tats successifs de la mmoire aprs les entres et les sorties de processus.
LOUKAM Mourad
P1, P2 et P3 entrent P2 termine 0 Systme dexploitation 400K P1 1000K P2 2000K P3 2300K 2300K 2560K 2560K 2000K P3 1000K 400K P1 0 Systme dexploitation
P4 entre P1 termine 0 Systme dexploitation 400K P1 1000K 1700K 2000K P3 2300K 2300K 2560K 2560K P4 400K 0 Systme dexploitation
P4
P3
33
2560K
Ainsi chaque instant, on dispose dune liste de tailles de blocs disponibles et la file dattente des processus prts. Le SE peut scheduler la file dattente selon un algorithme de scheduling. La mmoire est alloue aux processus jusqu ce quil nexiste aucun bloc de mmoire suffisamment grand pour contenir ce processus. Mais comment allouer un espace de taille n un processus partir dune liste de trous libres ?. On peut utiliser lun des trois algorithmes suivant : first-fit, best-fit, worst-fit. Algorithme First-fit (Le premier trouv) : On alloue au processus le premier trou suffisamment grand. Algorithme Best-fit (Le meilleur choix) : On alloue au processus le trou le plus petit suffisamment grand ; cest dire celui qui provoquera la plus petite miette possible. Cet algorithme ncessite le parcours de toute la liste des espaces libres. Algorithme Worst-fit (Le plus mauvais choix) : On alloue au processus le trou le plus grand. Cet algorithme ncessite le parcours de toute la liste des espaces libres.
Exemple : Ltat de la mmoire dun systme est dcrit par la figure suivante. On suppose quun processus P demande un espace mmoire de 80K.
SE P1 Trou T1 P2 Trou T2 P3 Trou T3 En fonction de lalgorithme choisi, on choisirait le trou T1, T2 ou T3. Algorithme First-Fit : trou T1. Algorithme Best-Fit : trou T3. Algorithme Worst-Fit : trou T2.
LOUKAM Mourad
4.3.2 La fragmentation :
Les algorithmes dallocation de la mmoire contigu prcdents, produisent la fragmentation de la mmoire. En effet, suite aux diffrentes entres et sorties de processus, des miettes spares se froment dans la mmoire. 0 400 700 900 1000 1400 2000 2100 P3 Si le processus P dsire entrer dans le systme en occupant 500K, il ne pourrait pas bien que lespace total disponible est de 700 K. P2 SE P1
La solution au problme de la fragmentation peut tre le compactage. Le principe est de rassembler tous les trous en un seul bloc. Avant compactage Aprs compactage 0 400 700 900 1000 1400 2000 2100 2100 P3 P2 SE P1 0 400 700 800 1400 SE P1 P2 P3
Inconvnient : Lopration de compactage est une opration trs coteuse pour le SE.
4.4 LA PAGINATION :
Une autre solution au problme de la fragmentation consiste permettre que lespace dadressage logique dun processus ne soit plus contigu, autorisant ainsi lallocation de la mmoire physique un processus l o elle est disponible. La technique de la pagination est une manire implmenter cette solution.
35
taille appele pages. Quand on doit excuter un processus, on charge ses pages dans les cadres de pages partir de la mmoire auxiliaire. Adresse logique Processeur P d f Adresse physique d Mmoire Physique
d f
On divise chaque adresse gnre par le processeur en deux parties : numro de page P et dplacement dans la page D.
On utilise le numro de page comme indice une table de pages. La table de pages contient ladresse de base de chaque page dans la mmoire physique. Cette adresse de base est combine avec le dplacement dans la page afin de dfinir ladresse physique. La taille de la table de page est une puissance de 2 variant entre 512 octets et 8192 octets, selon larchitecture de lordinateur. Le choix dune puissance de 2 comme taille de page facilite la traduction dune adresse logique en un numro de page et un dplacement dans la page. Si la taille de lespace m n adresse logique est de 2 et la taille de la page est de 2 units dadressage (mots ou octets), les m-m bits de poids forts dune adresse logique dsignent le numro de page et les n bits de poids faible dsignent le dplacement dans la page.
P m-n
d m
Lexemple suivant montre un systme ayant une mmoire logique de 4 pages et une mmoire physique de 8 pages.
LOUKAM Mourad
36
Table de pages 1 4 3 7 0 1 2 3 4 5 6 7
Mmoire physique
Page3
Les cadres de pages sont allous comme des units. Si les besoins en mmoire dun processus ne tombent pas sur les limits des pages, le dernier cadre de page peut ne pas tre plein. Par exemple, si les pages sont de 2048 octets, un processus de 72766 octets aura besoin de 35 pages, plus 1086 octets. On lui allouera donc 36 cadres de pages, en provoquant une fragmentation de 2048-1086=962 octets. Dans le pire des cas, un processus demandera n pages plus un octet. On lui allouera n+1 cadres de pages, provoquant ainsi une fragmentation de presque une page entire. Cette considration suggre quil est souhaitable davoir des pages de petites tailles. Cependant, il existe une surcharge due chaque entre de la table de pages et elle est rduite si la taille de la page augmente. De nos jours, les pages sont gnralement dune taille de 2 4 Ko. Un aspect important de la pagination est la sparation nette entre la vue de lutilisateur de la mmoire et la mmoire physique relle. Le programme utilisateur conoit cette mmoire comme un espace unique contigu, mais en ralit le programme utilisateur est clat dans toute la mmoire physique qui contient ventuellement dautres programmes.
4.4.3 Protection :
La protection de la mmoire dans un environnement pagin est accomplie avec des bits de protection associs chaque cadre de page. Normalement, ces bits sont stocks dans la table de pages. Un bit peut dfinir que lon accde une page en lecture et criture, ou en lecture seulement. Mmoire logique Page 0 Page 1 Page 2 Page 3 0 1 2 3 Table de pages 1 4 3 7 1 1 0 1 0 1 2 3 4 5 6 7 Mmoire physique
Bit de protection
Page3
37
100
500 550
800
900
P1 N de page
P2 N de page
P1 est le numro de la table de pages interne. P2 est le dplacement dans la page de la table de page externe. La traduction dune adresse logique en adresse physique dans un systme pagin 2 niveaux est prsente par le schma suivant :
P1
P2
LOUKAM Mourad
38
P1
P2 d Table de pages externe Page de la table de page Page dsire Fig. 4.7 Traduction dadresses pour une architecture de pagination 2 niveaux.
3 4 6 1 Table de pages de P1
3 4 6 7 Table de pages de P2
0 1 2 3 4 5 6 7
3 4 6 2 Table de pages de P3
Mmoire physique
Fig. 4.8 Partage de code dans un environnement de pagination. Le schma prcdant montre que les 3 pages de code de lditeur de textes sont partages par les 3 processus. Chaque processus, par contre, possde sa propre page de code.
39
Le code rentrant (encore appel code pur) est un code invariant ; cest dire quil ne change jamais pendant lexcution. Ainsi, deux ou plusieurs processus peuvent excuter le mme code en mme temps. Chaque processus possde sa propre copie de registres et son stockage de donnes. On doit maintenir en mmoire physique une seule copie de lditeur. La table de pages de chaque processus correspond la mme structure physique de lditeur, mais les cadres de pages sont transforms des cadres de pages diffrents. Ainsi, pour supporter 40 utilisateurs nous navons besoin que dune copie de lditeur (ie 150 Ko), plus 40 copies de lespace de donnes de 50 Ko par utilisateur. Lespace requis est donc de 2150 Ko au lieu de 8000 Ko.
4.5 LA SEGMENTATION :
La segmentation rejoint la pagination pour consacrer un principe important dans les SE actuels, savoir la sparation entre la vue de lutilisateur de la mmoire et la mmoire physique. La vue de lutilisateur de la mmoire nest pas le mme que la mmoire physique relle ; le SE se charge de convertir lune dans lautre. Il est admis que le programmeur nimagine pas la mmoire comme un tableau linaire doctets. Il prfre voir la mmoire comme un ensemble de segments de taille variable, sans quil y ait un ordre entre les segments.
Programme principal
Procdure P1 Procdure Pi
Fonction F1 Fonction Fj
La segmentation consiste dcouper lespace logique en un ensemble de segments. Chacun des segments est de longueur variable ; la taille dpend de la nature du segment dans le programme. Chaque segment possde un numro et une longueur. Pour cibler une zone mmoire spcifique, on doit donc dsigner deux paramtres : un numro de segment et un dplacement. : Numro de segment dplacement
De ce point de vue , la segmentation est diffrente de la pagination, puisque dans la pagination, lutilisateur ne spcifie quune seule adresse qui est dcode par le SE en un numro de page et un dplacement. En segmentation la conversion dune adresse logique en une adresse physique est faite grce une table de segments. Chaque entre de la table de segment possde deux valeurs : La base : cest ladresse de dbut du segment en mmoire. La limite : spcifie la taille du segment. S Limite
LOUKAM Mourad
Base
40
Une adresse logique est constitue de 2 parties : un numro de segment S et un dplacement dans ce segment d. On utilise le numro de segment comme indice dans la table de segments. Le dplacement d de ladresse logique doit se trouver entre 0 et la limite du segment. Si ce nest pas le cas, il y a un droutement vers le SE pour tentative dadressage hors limite. Si le dplacement est correct, on ladditionne la base du segment pour calculer ladresse physique de lemplacement dsir. Exemple : Soit un espace dadressage logique contenant quatre segments.
0 1400
Programme principal Segment 0 Procdure 1 Segment 1 Limite 1000 400 400 1100 Base 1400 6300 4300 3200
Segment 0
2400
Procdure 2 Segment 2
0 1 2 3
3200
Segment 3
4300
Segment 2
4700 6300
Mmoire physique
41
Adresse physique 4300+53=4353 3200+852=4052 Provoque un droutement vu que le dplacement est hors limite
Ainsi la possibilit dexcuter un programme se trouvant partiellement en mmoire prsenterait plusieurs bnfices : Un programme nest plus limit par la quantit de mmoire physique disponible. Les utilisateurs pourront crire des programmes pour un espace adresse virtuel extrmement grand, simplifiant ainsi la tche de programmation. Comme chaque programme utilisateur pourrait occuper moins de mmoire physique, il serait possible dexcuter plus de programme en mme temps.
L mmoire virtuelle fournit donc un espace dadressage extrmement grand alors que la mmoire physique est limite. Cela est possible en utilisant une mmoire auxiliaire comme espace de travail pour charger et dcharger les diffrentes pages par le SE.
Mmoire physique
Mmoire auxiliaire
LOUKAM Mourad
42
La mmoire virtuelle est communment implmente avec la pagination la demande. Quand un processus doit tre transfr en mmoire, la routine de pagination devine quelles pages seront utilises avant que le processus soit mis en mmoire axilliaire de nouveau. Au lieu de transfrer en mmoire un processus complet, la routine de pagination ramne seulement les pages qui lui sont ncessaires. Ainsi, elle vite que lon charge en mmoire des pages qui ne seront jamais employes, en rduisant le temps de swaping et la quantit de mmoire dont on a besoin. Avec cette technique, le SE doit disposer de moyens pour distinguer les pages qui sont en mmoire, et celles qui sont sur disque. Par exemple, on peut utiliser dans la table des pages un bit valide/invalide pour dcrire si la page est charge en mmoire ou non.
Cadre de page
A B C D E F G H
Mmoire logique
0 1 2 3 4 5 6 7
4 6
1 0 1 0 0 1 0 0
Table de pages
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A C
A D
B E
C F
Mmoire physique Fig. 4.12 Mmoire pagine avec certaines pages en mmoire.
Disque
Que se passe-t-il si un processus essaie dutiliser une page qui nest pas en mmoire ?. Laccs une page marque invalid provoque un dfaut de page. En essayant daccder cette page, il y a un droutement vers le SE. La procdure permettant de traiter ce dfaut de page est la suivante : Sassurer que la rfrence de la page est correcte. Sassurer que la page dsire est bien en mmoire auxilliare. Trouver un cadre de page libre et charger la page. 3 SE 1
Charger la page P
2 0 4
Cadre de page libre
43
2 : Il y a un droutement vers le SE. 3 : Le SE vrifie si la page existe bien en mmoire auxilliare. 4 : Le SE vrifie sil y a un cadre de page libre, auquel cas il y charge la page absente. 5 : Le SE met jour la table de page. 6 : Redmarrer linstruction du processus qui a provoqu le dfaut de page.
P V
0 1
4 Victime 2
Lgende : 1 : Swap out de la page victime. 2 : Mettre le bit de la page invalide 3 : Swap in de la page dsire. 4 : Mettre le bit de la page valide
Afin de dterminer le nombre de dfauts de pages pour une chane de rfrences et un algorithme de remplacement particulier, on doit galement connatre le nombre de cadres de pages disponibles.
LOUKAM Mourad
44
Evidemment, au fur et mesure que le nombre de cadres de pages augmente, le nombre de dfauts de pages doit diminuer, comme le montre la figure suivante :
45
Afin dillustrer les problmes rencontrs avec un algorithme de remplacement FIFO, on peut envisager la chane de rfrences suivantes : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. La figure suivante montre le nombre de dfauts de pages en fonction des cadres de pages disponibles.
14 12 10 8 6 4 2 0 1 2 3 4 5 6
Cadres de pages 1 2 3 4 5 6
Dfauts de pages 12 12 9 10 6 6
Fig. 4.16 Anomalie de Belady On remarque que le nombre de dfauts de pages pour 4 cadres de pages (ie : 10) est suprieur au nombre de dfauts de pages pour 3 cadres de pages (ie : 9) !. Ce rsultat fort inattendu est connu sous le nom de lanomalie de Belady. Elle dcrit une situation o le taux de dfauts de pages augmente au fur et mesure que le nombre de cadres de pages augmente, contrairement la rgle gnrale.
Malheureusement, lalgorithme optimal est difficile mettre en uvre car il requiert une connaissance future de la chane de rfrences. Il est utilis essentiellement pour faire des tudes comparatives.
LOUKAM Mourad
46
47
4.6.5 Ecroulement :
Si la quantit de cadres de pages alloue un processus de basse priorit descend en dessous du nombre minimum requis par larchitecture de lordinateur, nous devons arrter lexcution de ce processus. Nous devrions ensuite transfrer les pages restantes sur disque, librant ainsi tous les cadres de pages qui lui ont t allous. En fait, on peut envisager le cas dun processus ne possdant pas suffisamment de cadres de pages. Bien quil soit techniquement possible de rduire le nombre de cadres de pages allous au minimum, il existe un nombre de pages (suprieur) en utilisation active. Si le processus ne possde pas ce nombre de cadres de pages, il produira trs rapidement des dfauts de pages. A ce moment l, il doit remplacer une page. Cependant comme toutes ses pages sont en utilisation active, il devra nouveau remplacer une page ncessaire tout de suite aprs. Il produira donc trs rapidement un dfaut de pages nouveau, et ainsi de suite. Le processus continuera produire des dfauts de pages, en remplaant des pages dont il aura besoin tout de suite aprs. Cette haute activit de pagination est appele croulement. Un processus scroule sil passe plus de temps paginer qu sexcuter.
LOUKAM Mourad