Vous êtes sur la page 1sur 6

Introduction Systmes dexploitation

Gestion de la mmoire
Mmoire ressource importante devant tre gre avec prudence Gestion de la mmoire du ressort du gestionnaire de la mmoire Ce gestionnaire doit :
Connatre les parties libres et occupes de la mmoire Allouer de la mmoire aux processus qui en ont besoin Rcuprer la mmoire utilise par un processus lorsque celui-ci se termine Traiter le va-et-vient (swapping ou swap) entre le disque et la mmoire principale lorsque cette dernire ne peut pas contenir tous les processus

Les systmes de gestion de la mmoire se rpartissent en 2 catgories :


1. 2. Les systmes qui dplacent les processus entre la mmoire principale et le disque (vaet-vient et pagination) Ceux qui ne le font pas

2me catgorie + simple Le va-et-vient et la pagination sont des artifices qui pallient un manque de mmoire princiaple

Monoprogrammation sans va-et-vient ni pagination


Gestion de la mmoire la + simple consite avoir un seul processus en mmoire un instant donn et lui permettre dutiliser toute la mmoire disponible La mmoire est partage entre le SE et un unique processus utilisateur LIBM PC (i8086->i8486) utilise ce schma :
Les pilotes sont en ROM (Read Only Memory), les programmes en ROM sont appels BIOS (Basic Input Output System) Le SE se trouve en bas de la mmoire vive (RAM, Random Access Memory) Le programme utilisateur au-dessus du SE en RAM

Multiprogrammation et utilisation de la mmoire : modlisation


La multiprogrammation permet damliorer le taux dallocation du processeur Supposons quun processus passe une fraction p de son temps attendre la fin dune E/S ; si n processus se trouvent en mmoire en mme temps, la probabilit quils soient tous en attente sur une E/S (et donc que le processeur soit inutilis) est pn ; nous avons donc : utilisation du processeur = 1 - pn
100 90

20 % d'attente sur E/S 50 % d'attente sur E/S

Pilotes priphriques en ROM Programme utilisateur SE en RAM

Utilisation du processeur (% )

80 70 60 50 40 30 20 10 0 0 1 2 3

80 % d'attente sur E/S

Lorsque la mmoire est organise de cette manire, il ne peut y avoir quun seul processus sexcutant un instant donn Lutilisateur tape une commande sur son terminal, le SE charge le programme en mmoire et lexcute ; lorsque le processus se termine le SE affiche une invite (prompt) sur le terminal et attend la commande suivante pour charger un nouveau processus qui remplace le prcdent

10

degr de multiprogrammation

Multiprogrammation avec des partitions fixes


Il est clair ( prsent) quil est souvent utile davoir + dun processus en mmoire la fois Comment alors organiser la mmoire le plus efficacement possible ? La mthode la + simple est de diviser la mmoire en n partitions (ventuellement de tailles ingales) Chaque nouvelle tche est place dans la file dattente de la plus petite partition qui peut la contenir

Code translatable et protection


La multiprogrammation soulve 2 problmes majeurs : la translation et la protection Au moment de ldition de liens, lditeur de liens doit connatre ladresse du dbut du programme ! Ex : appel dun procdure ladresse relative 100, si le programme est charg en partition 1, cet appel provoque un saut ladresse 100 qui se trouve dans le SE ! Ladresse devrait tre 100K + 100 Ce problme est est celui de la translation dadresse Une solution consiste modifier les instructions du programme charg en mmoire ; pour effectuer cette opration lditeur de liens doit inclure dans le code binaire une liste de mots mmoire qui sont des adresses pour les distinguer des codes doprations des constantes ou dlments qui ne doivent pas tre translats Translater les programmes au moment du chargement ne rsout pas le problme de protection : comme les programmes dans ce systme utilisent des adresses mmoire absolues, on ne ne peut empcher un programme de construire une instruction qui lit ou crit nimporte quel mot mmoire ! Une autre solution aux problmes de la translation dadresse et de la protection est de doter la machine de deux registres matriels spciaux : les registres de base et limite Quand on lance un processus, on charge dans le registre de base la limite infrieure de la partition et dans le registre limite la longueur de la partition ; on ajoute le registre de base chaque adresse mmoire gnre et on vrifie que cette adresse ne dpassent pas le registre de limite afin dinterdire tout accs en dehors de la partition LIBM PC utilise une version simplifie de ce mcanisme (sans registre limite) Autre avantage du registre de base : les programmes peuvent tre dplacs en mmoire aprs le dbut de leur excution, il suffit de modifier la valeur du registre

Partition 4
Files dentre multiples

700 K

Partition 4
File dentre unique

700 K

Partition 3
400 K

Partition 3 Partition 2 Partition 1 SE


400 K 200 K 100 K 0

Partition 2 Partition 1 SE

200 K 100 K 0

Trier les tches en fonction de leurs taille dans des files multiples prsente un inconvnient lorsque la file des grandes partitions est vide et celles des petites est pleine ; une alternative consiste utiliser 1 seule file Pas intressant dallouer une grande partition une petite tche: parcourir la liste et choisir la plus grande tche qui peut contenir la partition Cette stratgie dsavantage les petites tches (thoriquement il vaut mieux les traiter en priorit) ; une solution consiste interdire la non-slection dune tche plus de k fois Ce systme partitions fixes a t utilis par OS/360 (IBM), il sappelait MFT (Multiprogramming with a Fixed number of Tasks)

Le va-et-vient : introduction
La mmoire ne peut pas toujours contenir les processus de tous les utilisateurs, il faut placer quelques processus sur disque Il faut, bien sur, ramener ce 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)

Multiprogrammation avec partitions variables (1)


On peut, en principe, utiliser les partitions fixes pour les va-et-vient (ds quun processus se bloque, on le dplace sur disque et on le remplace par un autre) En pratique, les partitions fixes ne sont pas intressantes lorsque la mmoire est limite (on perd beaucoup de place cause des programmes qui sont plus petits que les partitions Il faut utiliser une autre solution : les partitions variables Avec des partitions variables, le nombre et la taille des processus en mmoire varient au cours du temps
A SE B A SE B A SE C B A SE C B SE C B D SE C D SE C E D SE

La diffrence fondamentale avec les partitions fixes est que le nombre, la position et la taille des partitions varient dynamiquement au fur et mesure que les processus entrent ou sortent de la mmoire Plus limite par un nombre fixe de partitions ou par la taille des partitions ; cette souplesse accrue amliore lusage de la mmoire mais complique son allocation et sa libration On peut runir les espaces inutilises en une seule partition, on effectue alors un compactage de la mmoire

Multiprogrammation avec partitions variables (2)


La taille mmoire alloue aux processus mrite une attention particulire Lallocation est simple si les processus ont une taille fixe quils ne modifient jamais ; si en revanche les processus allouent dynamiquement de la mmoire dans le tas, on a des difficults ds quun processus demande de la mmoire Sil existe un espace adjacent au processus, ce dernier pourra occuper cet espace ; mais sil est entour par deux autres processus, il faut soit le dplacer un emplacement mmoire susceptible de le contenir, soit dplacer un ou plusieurs processus sur disque pour crer une emplacement de taille suffisante Si la mmoire est sature et si le swap ne peut plus contenir de processus, il faut tuer le processus ! La taille des processus augmente en gnral au cours de leur excution ; on peut donc allouer chaque processus un peu plus de mmoire quil ne demande afin de rduire le temps systme perdu pour cette gestion ; il faut cependant recopier sur disque uniquement la mmoire rellement utilise par le processus Les processus ont 2 segments qui peuvent grandir (le tas et la pile), on place la mmoire disponible entre ces 2 segments et cet espace peut tre utilis indiffremment par un de ces segments ; si cet espace se remplit, il faut soit dplacer le processus un emplacement mmoire plus grand, soit le recopier sur disque jusqu ce quil y ait de la place en mmoire principale, soit le tuer Il existe 3 manires de mmoriser loccupation de la mmoire : les tables de bits (bit maps), les listes et les subdivisions (buddy)

Gestion mmoire par tables de bits


La mmoire est divise en units dallocation dont la taille varie de quelques mots plusieurs Mo A chaque unit, on fait correspondre un bit dans la table de bits (bit maps) qui est 0 si lunit est libre et 1 si elle est occupe La taille de lunit dallocation joue un rle important : plus elle est faible, plus la table de bits est important ; si on prend une unit dallocation de grande taille, on rduit la taille du bit map, mais on perd beaucoup de place mmoire chaque fois quun processus nest pas un multiple de lunit dallocation Le bit map permet donc de mmoriser loccupation mmoire dans un espace mmoire de taille fixe : la taille dun bit map ne dpend pas de la taille de la mmoire mais de la taille de lunit dallocation Le seul problme survient lorsque lon doit placer en mmoire un processus de k units ; le gestionnaire doit parcourir le bit map la recherche de k zros conscutifs ; cette recherche est lente, ce qui fait quen pratique on utilise rarement les bit maps

Gestion mmoire par listes chanes


Une deuxime mthode pour mmoriser loccupation mmoire consiste grer une liste chane de segments libres et occups Un segment est un processus ou un espace libre entre deux processus Chaque entre de la liste spcifie :
une zone libre (H [pour Hole]) ou un processus (P), sa longueur son adresse de dpart un pointeur sur lentre suivante

Gestion mmoire par subdivision


Les listes chanes acclrent lallocation mmoire mais rendent la libration plus lente car il faut examiner les voisins des segments librs Lallocation par subdivision (buddy system) est un algo de gestion qui sappuie sur le fait que les ordinateurs utilisent des adresses binaires de manire acclrer la fusion des zones libres adjacentes Le gestionnaire de la mmoire mmorise une liste de blocs libres dont les tailles sont 1, 2, 4, 8, 16, Zone octets jusqu la taille maximale de la mmoire Mmoire libre 1024 Initialement 1 Ex : A 128 256 512 Demande 70 3
A 256 512 35 B 64 3 Lallocation par subdivision prsente Demande un avantage par rapport aux algos qui trient en fonction de leur taille : 128 A C 512 Demande 80 B 64 3 128 deB 128 512 C libration A 64 4 quand un bloc de 2k octets est libr, le gestionnaire la mmoire doit examiner uniquement la liste des 128 128 512 C Deamnde 60 B D 3 zones libres de 2 k octets pour voir sil peut reconstruire un bloc C plus grand 128 128 512 Libration B 64 D 4 256 128 C Libration D 3 Malheureusement, il est assez inefficace en ce qui concerne lutilisation de la mmoire,512 le problme vient Libration C 1024 1 du fait que toutes les tailles doivent tre arrondies une puissance de 2 Un processus de 35 Ko occupe un bloc de 64Ko, les 29 Ko excdentaires sont perdus, on parle de fragementation interne Fragmentation externe : zone libre entre 2 segments allous, appel aussi phnomne de damier (checkerboarding) De nombreux informaticiens (Peterson et Norman, Kaufman, ) ont modifi lallocation de subdivision pour contourner certaines de ses limitations

Trier la liste en fonction des adresses permet de mettre jour facilement la liste lorsquun processus se termine ou est dplac sur disque +ieurs algos peuvent tre utiliss partir de cette liste pour allouer la mmoire aux processus Le + simple : lalgo de la premire zone libre (first fit) : rechercher le premier segment H qui peut contenir le processus, le scinder en 2 (la premire contient le processus, la seconde est H) : algo rapide puisque trs peu de recherche Algo de la zone libre suivante (next fit) : lgre variante : la recherche commence partir de la dernire zone libre trouv : performance lgrement infrieure first fit [Bays 1977] Algo du meilleur ajustement (best fit) : on recherche dans toute la liste la plus petite zone libre qui convient, on vite ainsi de fractionner une grande zone dont on pourrait avoir besoin ultrieurement : + lent et + tonnant : il fait perdre plus de place mmoire que first fit (fractionnement en petite zone inutilisable) ! Algo du plus grand rsidu (worst fit) : inverse on prend la plus grande zone libre : pas de bonnes perf. Optimisations : 2 listes (pour les H et pour les P), utiliser les zones libres pour mmoriser les H : le premier mot de chaque zone libre contient la taille de la zone et le deuxime un pointeur sur lentre suivante Algo du placement rapide (quick fit) : utilise des listes spares par les tailles de zone les plus courantes

Lallocation de lespace de va-et-vient


Dans certains systmes, on nalloue pas lavance un espace fixe sur le disque aux processus qui sont en mmoire Quand un processus doit tre copi sur disque, on lui attribue un espace de va-et-vient (swap area) A chaque va-et-vient, le processus peut tre plac un endroit diffrent sur le disque, les algos de gestion de lespace de va-et-vient sont identiques ceux de la gestion de la mmoire principale Sur dautres systmes, lors de la cration dun processus, on lui alloue un espace fixe de va-et-vient ; chaque fois quil est dplac sur disque, il est plac dans lespace qui lui est rserv ; cet espace est libr lorsque le processus se termine La seule diffrence entre lespace mmoire et lespace swap est que lespace swap dun processus est un nombre entier de blocs du disque

La mmoire virtuelle : introduction


Il y a de nombreuses annes, les programmes taient trop volumineux pour entrer dans la mmoire disponible La solution adopte fut de diviser le programme en parties appeles des segments de recouvrement (overlays) Le segment 0 sexcute en premier, lorsquil se termine il appelle un autre segment Les segments de recouvrement taient stocks sur le disque et effectuaient des vaet-vient Le SE effectuait les dplacements, mais le dcoupage du programme devait tre fait par le programmeur : long et fastidieux On adopta alors le principe de la mmoire virtuelle Ide de base : la taille du programme peut dpasser la taille de la mmoire disponible, le SE garde en mmoire les parties du programme qui sont utilises, stocke le reste sur disque et effectue des va-et-vient lorsquil a besoin dinformations stockes sur disque

La pagination (1)
La plupart des systmes mmoire virtuelle ont recours la pagination Les adresses alors manipules par les programmes sont appeles des adresses virtuelles et constituent lespace dadressage virtuel Sur les ordinateurs sans mmoire virtuelle, les adresses sont directement places sur le bus de la mmoire et provoquent la lecture ou lcriture du mot ladresse spcifie Lorsque la mmoire virtuelle est utilise, les adresses sont envoyes lunit de gestion de la mmoire ou MMU (Memory Management Unit), composant qui traduit les adresses virtuelles en adresses physiques
Carte processeur CPU MMU Le MMU envoie des adresses physiques la mmoire Mmoire Le processeur envoie des adresses virtuelles au MMU Contrleur de disque

La pagination (2)
Ex : ordinateur disposant de 32k de mmoire pouvant gnrer des adresses virtuelles Espace de 16 bits de 0 64k des Adresse adresses mmoire On peut donc crire des programmes de virtuelles physique 64k, mais on ne peut les charger 0k - 4k 2 0k - 4k 4k - 8k 1 4k - 8k entirement en mmoire 8k - 12k 6 8k - 12k 0 12k - 16k Une image mmoire de tout le programme 12k - 16k 16k - 20k 4 16k - 20k est stocke sur disque de telle sorte quon 20k - 24k 3 20k - 24k puisse en charger, au besoin, les 24k - 28k X 24k - 28k 28k - 32k X 28k - 32k diffrentes parties dans la mmoire 32k - 36k X 5 Lespace dadressage est divis en petites 36k - 40k 40k - 44k X units appeles pages 44k - 48k 7 case physique 48k - 52k X Les units correspondantes de la 52k - 56k X mmoire physique sont les cases 56k - 60k X page virtuelle mmoire (page frames) 60k - 64k X Les pages et les cases sont toujours de la mme taille Les transferts entre la mmoire et le disque se font toujours par page entire

BUS

La pagination (3)
Ex : MOV reg,0 (lecture de la valeur contenu ladresse 0)
Ladresse virtuelle 0 est envoye au MMU Ce dernier constate que cette adresse virtuelle se situe la page 0 (adresses de 0 4095) qui appartient la case 2 (8192 12387) Le MMU transforme ladresse en 8192 et place cette valeur sur le bus La carte mmoire ne connat pas lexistence du MMU, elle reoit simplement une demande de lecture de ladresse 8192

La pagination (4)
Les pages signales par un X ne sont pas mappes Le matriel mmorise dans un bit de prsence si une page est mappe ou non Que se passe-t-il si le programme tente dutiliser une page non mappe (ex : MOV reg, 32780) Le MMU constate que cette page nest pas mappe et provoque un droutement (trap) : le processeur est restitu au SE Ce droutement est appel dfaut de page (page fault) Le SE repre une case peu utilise et recopie son contenu sur le disque ; il place ensuite la page demande dans la case qui vient dtre libre, modifie le mappe et rexcute linstruction droute

Le MMU a donc mapp les adresses virtuelles comprises entre 0 et 4096 sur les adresses physiques comprises entre 8192 12387 De la mme manire ladresse virtuelle 8192 est transforme en 24576 et 20500 correspond ladresse physique 12308 Ce mappage au moyen du MMU des 16 pages virtuelles sur nimporte laquelle des 8 cases ne rsout pas le problme soulev par le fait que lespace dadressage virtuel est plus grand que la mmoire physique

Fonctionnement interne du MMU


Lorsque le MMU reoit une adresse, il divise celle-ci en 2 parties : le numro de page et un dplacement dans cette page 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Adresse virtuelle Dans notre exemple : numro de page en entre (8196) = 4 bits de poids fort et le La page virtuelle 2 sert d'index dans la table des pages dplacement est stock sur 12 bits 0 1 010 Les 4 bits du numro de page 1 1 001 2 1 110 110 permettent davoir 16 pages et les 12 3 1 000 bits du dplacement permettent 4 1 Dplacement de 12 bits 100 5 1 recopi directement de 011 dadresser les 4096 octets dune page 6 0 l'entre la sortie 000 7 0 000 Le numro de page sert dindex dans 8 0 000 la table des pages et donne la case 9 1 101 10 0 Table des pages 000 qui correspond cette page virtuelle 11 1 111 12 0 000 Si le bit de prsence est 0, il y a 13 0 000 droutement, sinon on copie le 14 0 000 15 0 000 numro de la case dans les 3 bits de poids fort du registre de sortie et le Adresse physique dplacement fourni par ladresse 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 en sortie (24580) virtuelle Le registre de sortie contient ladresse physique et peut tre plac sur le bus de la mmoire

Les tables de pages (1)


Le but de la table de pages est dtablir la correspondance entre les pages virtuelles et les cases mmoires Dun point de vue mathmatique, cest une fonction qui prend en argument un numro de page virtuelle et renvoie un numro de case mmoire Cependant les deux points suivants doivent tre pris en compte :
La table des pages peut tre trs grande Le mappage doit tre rapide

Le premier point dcoule de ladressage des ordinateurs modernes qui utilisent des adresses virtuelles de 32 bits ou + En utilisant des pages de 4ko, un espace dadressage de 32 bits a 1 million de pages Si lespace dadressage virtuel a 1 million de pages, la table des pages doit comporter 1 million dentres ! Par ailleurs, chaque processus a besoin de sa propre table des pages ! Le deuxime point dcoule du fait que le mappage de ladresse virtuelle sur ladresse physique doit tre effectu chaque rfrence mmoire ; un instruction typique comporte une instruction sur un mot et souvent un oprande mmoire ; en consquence il est ncessaire deffectuer, une, deux ou davantage de rfrences la table des pages par instruction Si une instruction prend 10ns, la recherche dans la table des pages doit tre effectue en quelques nanosecondes pour viter un ralentissement important

La table des pages (2)


La conception de la tables des pages est donc un point crucial quant lefficacit de lordinateur La conception la + simple consiste avoir une seule table des pages constitue dun tableau de registres machine rapides, avec une entre par page virtuelle et indexation au moyen du numro de page virtuelle Lorsquun processus est activ, le SE charge les registres avec la table des pages de ce processus ; au cours de lexcution la table des pages ne ncessite plus de rfrences mmoire Cette mthode est simple raliser et ne requiert pas de rfrences mmoire pendant le mappage ; elle peut, en revanche, tre coteuse (si la table des pages est grande) et le chargement de la table des pages chaque changement de contexte peut galement tre pnalisant A lautre extrme, la table des pages peut rsider intgralement en mmoire. Le matriel na alors besoin que dun seul registre qui pointe sur le dbut de la table des pages Cette conception permet de changer la mappe mmoire en modifiant un seul registre lors dun changement de contexte; elle prsente bien sr le dsavantage de ncessiter une ou plusieurs rfrences mmoire pour lire les entres de la table des pages lors de lexcution de chaque instruction Pour cette raison, cette approche est rarement utilise dans sa forme initiale

La table des pages plusieurs niveaux


Table des pages de second niveau

Pour viter davoir des tables trop grandes en mmoire, de nombreux ordinateurs utilisent des tables de pages plusieurs niveaux Ex : adresse virtuelle divise en un champ PT1 de 10 bits, un champ PT2 de 10 bits et un champ dplacement de 12 bits (=> 220 pages de 4Ko) Les tables des pages plusieurs niveaux vitent de garder en permanence toutes les tables des pages en mmoire ; en particulier, celles qui ne sont pas utilises ne devraient pas tre gardes en mmoire Ex: un prog de 12Mo divis en 3 parties de 4Mo

Table des pages de plus haut niveau 0 1 2 3 4 PT1 5 6 7 . . . 1023

0 1 2 3 4 5 6 7 . . . 1023

Table des pages des 4 Mo du haut de la mmoire

La mmoire associative
Les tables des pages des mmoires pagines sont souvent gardes en mmoire en raison de leur tailles importantes ce qui occasionne un cot non ngligeable sur la vitesse des ordinateurs Les concepteurs dordinateurs sont conscients de ce problme et y ont remdi La solution mis en uvre sappuie sur la constatation que la plupart des programmes effectuent un grand nombre de rfrences un petit nombre de pages ; de ce fait, une petite fraction des entres de tables des pages sont souvent lues et les autres sont rarement utilises La solution consiste doter les ordinateurs dun composant matriel pour mapper les adresses virtuelles sur les adresses physiques sans passer par la table des pages Ce composant est appel mmoire associative (ou parfois mmoire tampon de translation) Elle est en gnral intgr au MMU et consiste en un petit nombre dentres (32) contenant les informations relatives une page Lorsquune adresse est prsente au MMU le matriel contrle dabord si le numro de page virtuelle est prsent dans la mmoire associative ; sil le trouve la case mmoire est prise directement dans la mmoire associative sans passer par la table des pages; sinon le MMU effectue une recherche ordinaire dans la table des pages, puis il supprime une des entres de la mmoire associative et la remplace par lentre rcemment trouve La fraction de rfrences mmoire trouves dans la mmoire associative est appele taux dimpact (hit ratio), les performances sont dautant meilleures quil est lev

Algorithmes de remplacements de page


A la suite dun dfaut de page, le SE doit retirer une page de la mmoire pour librer de la place pour la page manquante Si la page a t modifie depuis son chargement en mmoire, il faut rcrire sur le disque ; sinon le disque est dj jour, la page lue remplace simplement la page supprimer La page supprimer peut tre choisie au hasard mais on amliore sensiblement les performances du systme si on choisit une page peu utilise Si on slectionne une page trs demande, il est probable quil faille la ramener rapidement en mmoire, ce qui entrane une perte de temps inutile Les algorithmes de remplacement de page ont t trs tudis tant du point de vue thorique que pratique La bibliographie de Smith (1978) rpertorie plus de 300 articles sur ce sujet, nous tudierons quelques uns de ces algorithmes

Algorithme de remplacement de page optimal


Le meilleur algorithme de remplacement est facile dcrire mais impossible mettre en uvre Il consiste associer chaque page le nombre dinstructions qui vont tre excutes avant que la page soit rfrence Lalgorithme de remplacement page optimal consiste retirer la page qui a le plus grand nombre Malheureusement cet algo est irralisable car le SE ne peut pas connatre lavance le moment o les diffrentes pages seront rfrences On peut nanmoins implanter cet algorithme en excutant le programme sur un simulateur qui mmorise toutes les rfrences aux pages lors dun premire excution et qui utilise ces informations lors dun deuxime excution On peut ainsi comparer les performances des diffrents algorithmes ; si par exemple, un SE donne des rsultats qui sont infrieurs de 1% ceux de lalgo optimal, il est inutile de rechercher un meilleur algorithme

Algorithme de remplacement dune page non rcemment utilise


Pour effectuer des statistiques sur les pages utilises, les ordinateurs associent chaque page 2 bits dinformation :
Le bit R est positionn chaque fois quune page est rfrence Le bit M est positionn quand on crit dans une page

Ces bits devant tre mis jour chaque rfrence mmoire, il est essentiel que ce soit fait par le matriel ; ds quun bit est mis 1, il reste dans cet tat jusqu ce que le SE le remette 0 Ces 2 bits permettent de construire lalgo de pagination suivant :
Au lancement dun processus, le SE met 0 les bits de toutes ses pages, priodiquement (par ex, chaque interruption dhorloge), le bit R est remis 0 pour diffrencier les pages rcemment rfrences des autres Lorsquun dfaut se produit, le SE parcourt toutes pages et les rpartit en 4 catgories fonction des valeurs de R et M : Catgorie 0 : non rfrence, non modifie Catgorie 1 : non rfrence, modifie Catgorie 2 : rfrence, non modifie Catgorie 3 : rfrence, modifie

Lalgo de la page non rcemment utilise ou NRU (Not Recently Used) retire une page au hasard de la catgorie non vide de plus petit numro NRU est facile comprendre, relativement efficace et fournit des performances qui sont souvent suffisantes mme si elles ne sont pas optimales

Algorithme de remplacement de page premier entr, premier sorti


Un deuxime algo qui requiert peu de temps processeur est lalgorithme du premier entr, premier sorti ou FIFO (First In First Out) Le SE mmorise une liste de toutes les pages en mmoire, la premire page de cette liste tant la plus ancienne et la dernire la plus rcente ; lorsquil se produit un dfaut de page, on retire la premire page de la liste et on place la nouvelle page la fin de la liste Cet algorithme fournit de pitre performance Pour lillustrer, considrez un picier qui possde k tagres chacune pouvant contenir un produit diffrent ; un fabriquant cre un nouveau produit qui a tellement de succs que lpicier doit abandonner un ancien produit pour le mettre en talage. Lpicier dcide de se sparer du produit quil vend depuis le plus longtemps. Si ce produit est le sel, la farine ou le sucre il est clair que ce choix est mauvais ! Pour cette raison, lalgorithme FIFO est rarement utilis dans sa forme originale

Algorithme de remplacement de page de la seconde chance


Une modification simple de FIFO, pour viter de retirer une page trs rfrence, consiste tester le bit R de la page la plus ancienne :
Sil est 0, la page est la fois ge et non utilise et peut donc tre remplace immdiatement Sil est 1, la page est place la fin de liste des pages et son temps de chargement est mis jour comme si elle venait dtre charge en mmoire ; puis la recherche se poursuit

Lalgorithme de la seconde chance cherche donc une ancienne page qui na pas t rfrence au cours du dernier top dhorloge Si toutes les pages ont t rfrences, lalgo de la seconde chance est quivalent au FIFO, puisque les bis de chaque page seront mis 0 et la plus ancienne page sera remplace

Algorithme de remplacement de page de lhorloge


Lalgorithme de la seconde chance nest pas suffisamment efficace car il dplace en permanence des pages dans une liste Une meilleure solution consiste garder les pages dans une file circulaire en forme dhorloge A A A Lorsquun dfaut de page se produit, A A la page pointe est teste. A Laction entreprise dpend du bit R : A A R=0 : retirer la page A R=1 : mettre R 0 et avancer pointeur A A A Lorsquun dfaut de page se produit, la page pointe par lindicateur est examine ; si R=0, la page est retire, la nouvelle est insre sa place dans lhorloge et lindicateur avanc dune position ; si R=1, il est mis 0 et lindicateur pointe sur la page suivante ; cette opration est rpte jusqu ce quune page ayant R=0 soit trouve Cet algo, appel horloge, ne diffre de lalgorithme de la seconde chance quau niveau de la mise en oeuvre

Algo de remplacement de la page la moins rcemment utilise (1)


Une bonne approximation de lalgo optimal se fonde sur lobservation que les pages les plus rfrences au cours des dernires instructions seront probablement trs utilises au cours des prochaines A linverse, les pages qui nont pas t rfrences pendant un long moment ne seront pas probablement demandes pendant un certain temps Cette observation suggre lalgo qui, lorsquil se produit un dfaut de page , supprime la page qui est reste inutilise pendant le plus de temps Cette stratgie est celle de la page la moins rcemment utilise ou pagination LRU (Least Recently Used) LRU est thoriquement rlaisable mais il est trs coteux, il faut en effet mmoriser une liste chane de toutes les pages en mmoire, la page la plus utilise tant en tte et la moins utilise en queue La difficult vient du fait que cette liste doit tre mise jour chaque fois que la mmoire est adresse : trouver une page dans la liste, la supprimer puis la dpalcer au dbut de la liste sont des oprations qui consomment beaucoup de temps CPU Il faut soit avoir du matriel spcialis (et onreux), soit trouver une approximation logicielle moins coteuse

Algo de remplacement de la page la moins rcemment utilise (2)


La recherche et la modification dune liste chane chaque instruction prennent du temps mme lorsque ces oprations sont effectues matriellement Il existe nanmoins dautres moyens pour mettre en uvre LRU en faisant toujours appel du matriel spcialis La mthode la plus simple consiste disposer dun compteur C de 64 bits qui est automatiquement incrment chaque instruction ; de plus chaque entre dans la table des pages doit avoir un champ suffisamment grand pour contenir ce compteur Chaque fois que la mmoire est adresse, la valeur courante de C est sauvegarde dans lentre de la page rfrence Lorsquun dfaut se produit, le SE examine tous les compteurs de la table des pages pour trouver le plus petit dentre eux : la page correspondante est la moins rcemment utilise

Algo de remplacement de la page la moins rcemment utilise (3)


Une seconde solution matrielle consiste disposer dun matriel mmorisant une matrice de nn bits initialement nulle Quand une page k est rfrence, le matriel positionne tous les bits de la range k 1 puis tous les bits de la colonne k 0 A tout instant la ligne contenant le de 1 indique la page la rcemment utilise Ex : 4 cases et les rfrences aux pages suivantes : 0 1 2 3 2 1 0 3 2 3
0 1 2 3 0 0 1 1 1 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 1 1 0 1 1 2 1 0 0 1 3 1 0 0 0 0 1 2 3 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 2 3 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 2 3 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 2 3 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0

Simulation logicielle de lalgo LRU


Les 2 algos prcdents sont rlaisables mais font appel du matriel spcialis, si lon dispose pas de ce matriel, il faut trouver une solution logicielle : lalgorithme de la page peu utilise ou NFU (Not Frequently Used) Il ncessite un compteur par page, ce compteur est initialement 0 A chaque interruption dhorloge, le systme dexploitation passe en revue toutes les pages en mmoire et le bit R est ajout son compteur Les compteurs mmorisent donc le nombre de fois o on rfrence les diffrentes pages; quand il se produit un dfaut de page, on remplace la page dont le compteur est le plus petit Le problme de NFU est quil noublie jamais rien (des pages normment utilises au dbut processus et qui ne sont plus utilises resteront probablement mapp) Il existe une lgre modification qui permet NFU de se comporter comme LRU

Algorithme du veillissement
Cette modification se fait en 2 temps :
Dcaler les compteurs vers la droite avant de les additionner Le bit R est additionn au bit de gauche (de poids fort)

Ce nouvel algorithme sappelle lalgorithme du vieillissement (aging) A la suite dun dfaut de page, on retire la page qui a le plus petit compteur Cet algorithme diffre de LRU en deux points :
En mmorisant quun seul bit par intervalle de temps, on ne peut distinguer les rfrences qui se produisent au dbut de lintervalle de celles qui se produisent la fin (idem pour le nombre de rfrences une mme page durant un top dhorloge) Le compteur de lalgorithme du vieillissement a un nombre fini (n) de bits ; supposez que 2 pages qui ont leurs compteurs 0, il faut choisir au hasard alors quil se peut quune des 2 pages ait t rfrenc n+1 tops plus tt et lautre 10n tops plus tt : il ny a aucun moyen de le savoir

Dans la pratique un compteur de 8 bits est suffisant si les tops dhorloge se produisent toutes les 20 ms (si un page nest pas rfrence depuis 160 ms, elle nest vraisemblablement plus utilise)

Conclusion (1)
Nous avons trait dans ce chapitre la gestion de la mmoire
Nous avons vu que les systmes les plus simples neffectuent pas de va-et-vient (swapping) : un programme charg en mmoire y reste jusqu ce quil se termine certains systmes nacceptent quun seul processus la fois alors que dautres autorisent la multiprogrammation

Conclusion (2)
Pour amliorer les performances, la plupart des ordinateurs autorisant la pagination possdent une mmoire associative :
Elle permet dtablir rapidement la correspondance entre un numro de page virtuel et un numro de case mmoire physique La table des pages est examine uniquement en cas dabsence de ladresse virtuelle dans la mmoire associative

Puis nous avons tudi le va-et-vient :


Lorsquil est utilis, le systme accepte davantage de processus quil na de place mmoire Les processus qui ne peuvent plus tenir en mmoire sont dplacs sur disque Lespace libre en mmoire et sur le disque peut tre mmoris au moyen dune table de bits, dune liste de zones libres ou de lallocation par subdivision

Il existe de nombreux algorithmes de remplacement de page :


Quelques-uns sont bons mais irralisables (algo du remplacement optimal et LRU) Les algorithmes de lhorloge et du vieillissement figurent parmi les meilleurs

Les ordinateurs les plus volus disposent dune mmoire virtuelle :


Dans la forme la + simple de mmoire virtuelle, lespace dadressage de chaque processus est divis en blocs de tailles fixe appels pages qui peuvent tre placs dans nimporte quelle case libre de la mmoire Lorsque la taille des tables de pages est grande, une pagination plusieurs niveaux autorise la pagination des tables de pages elles-mmes

Il existe une alternative la pagination pour obtenir de la mmoire virtuelle : la segmentation (non tudi)
Elle consiste segmenter le processus (comme pour les partitions variables) Ladressage virtuelle est obtenu en donnant un numro de segment et une adresse dans ce segment La segmentation peut galement tre pagine, on parle de segmentation avec pagination