La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Systèmes dexploitation Gestion de la mémoire Introduction Mémoire ressource importante devant être gérée avec prudence Gestion de la mémoire du ressort.

Présentations similaires


Présentation au sujet: "Systèmes dexploitation Gestion de la mémoire Introduction Mémoire ressource importante devant être gérée avec prudence Gestion de la mémoire du ressort."— Transcription de la présentation:

1

2 Systèmes dexploitation Gestion de la mémoire

3 Introduction Mémoire ressource importante devant être gérée avec prudence Gestion de la mémoire du ressort du gestionnaire de la mémoire Ce gestionnaire doit : –Connaître les parties libres et occupées de la mémoire –Allouer de la mémoire aux processus qui en ont besoin –Récupérer la mémoire utilisée par un processus lorsque celui-ci se termine –Traiter le va-et-vient ( swapping ou swap ) entre le disque et la mémoire principale lorsque cette dernière ne peut pas contenir tous les processus Les systèmes de gestion de la mémoire se répartissent en 2 catégories : 1.Les systèmes qui déplacent les processus entre la mémoire principale et le disque (va- et-vient et pagination) 2.Ceux qui ne le font pas 2ème catégorie + simple Le va-et-vient et la pagination sont des artifices qui pallient à un manque de mémoire princiaple

4 Monoprogrammation sans va-et-vient ni pagination Gestion de la mémoire la + simple consite à avoir un seul processus en mémoire à un instant donné et lui permettre dutiliser toute la mémoire disponible La mémoire est partagée entre le SE et un unique processus utilisateur LIBM PC (i8086->i8486) utilise ce schéma : –Les pilotes sont en ROM (Read Only Memory), les programmes en ROM sont appelés BIOS (Basic Input Output System) –Le SE se trouve en bas de la mémoire vive (RAM, Random Access Memory) –Le programme utilisateur au-dessus du SE en RAM Lorsque la mémoire est organisée de cette manière, il ne peut y avoir quun seul processus sexécutant à un instant donné Lutilisateur tape une commande sur son terminal, le SE charge le programme en mémoire et lexécute ; 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 précédent Pilotes périphériques en ROM Programme utilisateur SE en RAM

5 Multiprogrammation et utilisation de la mémoire : modélisation La multiprogrammation permet daméliorer 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 mémoire en même temps, la probabilité quils soient tous en attente sur une E/S (et donc que le processeur soit inutilisé) est p n ; nous avons donc : utilisation du processeur = 1 - p n

6 Multiprogrammation avec des partitions fixes Il est clair (à présent) quil est souvent utile davoir + dun processus en mémoire à la fois Comment alors organiser la mémoire le plus efficacement possible ? La méthode la + simple est de diviser la mémoire en n partitions (éventuellement de tailles inégales) Chaque nouvelle tâche est placée dans la file dattente de la plus petite partition qui peut la contenir Partition 4 Partition 3 Partition 2 Partition 1 SE 700 K 400 K 200 K 100 K 0 Files dentrée multiples Trier les tâches en fonction de leurs taille dans des files multiples présente un inconvénient lorsque la file des grandes partitions est vide et celles des petites est pleine ; une alternative consiste à utiliser 1 seule file Partition 4 Partition 3 Partition 2 Partition 1 SE 700 K 400 K 200 K 100 K 0 File dentrée unique Pas intéressant dallouer une grande partition à une petite tâche: parcourir la liste et choisir la plus grande tâche qui peut contenir la partition Cette stratégie désavantage les petites tâches (théoriquement il vaut mieux les traiter en priorité) ; une solution consiste à interdire la non-sélection dune tâche plus de k fois Ce système à partitions fixes a été utilisé par OS/360 (IBM), il sappelait MFT ( Multiprogramming with a Fixed number of Tasks )

7 Code translatable et protection La multiprogrammation soulève 2 problèmes majeurs : la translation et la protection Au moment de lédition de liens, léditeur de liens doit connaître ladresse du début du programme ! Ex : appel dun procédure à 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 Ce problème est est celui de la translation dadresse Une solution consiste à modifier les instructions du programme chargé en mémoire ; pour effectuer cette opération léditeur de liens doit inclure dans le code binaire une liste de mots mémoire qui sont des adresses pour les distinguer des codes dopérations des constantes ou déléments qui ne doivent pas être translatés Translater les programmes au moment du chargement ne résout pas le problème de protection : comme les programmes dans ce système utilisent des adresses mémoire absolues, on ne ne peut empêcher à un programme de construire une instruction qui lit ou écrit nimporte quel mot mémoire ! Une autre solution aux problèmes de la translation dadresse et de la protection est de doter la machine de deux registres matériels spéciaux : les registres de base et limite Quand on lance un processus, on charge dans le registre de base la limite inférieure de la partition et dans le registre limite la longueur de la partition ; on ajoute le registre de base à chaque adresse mémoire générée et on vérifie que cette adresse ne dépassent pas le registre de limite afin dinterdire tout accès en dehors de la partition LIBM PC utilise une version simplifiée de ce mécanisme (sans registre limite) Autre avantage du registre de base : les programmes peuvent être déplacés en mémoire après le début de leur exécution, il suffit de modifier la valeur du registre

8 Le va-et-vient : introduction La mémoire 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 mémoire principale avant de les exécuter Le mouvement des processus entre la mémoire principale et le disque est appelé va-et-vient ( swapping )

9 Multiprogrammation avec partitions variables (1) On peut, en principe, utiliser les partitions fixes pour les va-et-vient (dés quun processus se bloque, on le déplace sur disque et on le remplace par un autre) En pratique, les partitions fixes ne sont pas intéressantes lorsque la mémoire est limitée (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 mémoire varient au cours du temps A SE A B A B A B C B C B C D C D C D E La différence 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 mémoire Plus limitée par un nombre fixe de partitions ou par la taille des partitions ; cette souplesse accrue améliore lusage de la mémoire mais complique son allocation et sa libération On peut réunir les espaces inutilisées en une seule partition, on effectue alors un compactage de la mémoire

10 Multiprogrammation avec partitions variables (2) La taille mémoire allouée aux processus mérite une attention particulière Lallocation est simple si les processus ont une taille fixe quils ne modifient jamais ; si en revanche les processus allouent dynamiquement de la mémoire dans le tas, on a des difficultés dès quun processus demande de la mémoire 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 déplacer à un emplacement mémoire susceptible de le contenir, soit déplacer un ou plusieurs processus sur disque pour créer une emplacement de taille suffisante Si la mémoire est saturée et si le swap ne peut plus contenir de processus, il faut tuer le processus ! La taille des processus augmente en général au cours de leur exécution ; on peut donc allouer à chaque processus un peu plus de mémoire quil ne demande afin de réduire le temps système perdu pour cette gestion ; il faut cependant recopier sur disque uniquement la mémoire réellement utilisée par le processus Les processus ont 2 segments qui peuvent grandir (le tas et la pile), on place la mémoire disponible entre ces 2 segments et cet espace peut être utilisé indifféremment par un de ces segments ; si cet espace se remplit, il faut soit déplacer le processus à un emplacement mémoire plus grand, soit le recopier sur disque jusquà ce quil y ait de la place en mémoire principale, soit le tuer Il existe 3 manières de mémoriser loccupation de la mémoire : les tables de bits ( bit maps ), les listes et les subdivisions ( buddy )

11 Gestion mémoire par tables de bits La mémoire est divisée en unités 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 occupée La taille de lunité dallocation joue un rôle important : plus elle est faible, plus la table de bits est important ; si on prend une unité dallocation de grande taille, on réduit la taille du bit map, mais on perd beaucoup de place mémoire chaque fois quun processus nest pas un multiple de lunité dallocation Le bit map permet donc de mémoriser loccupation mémoire dans un espace mémoire de taille fixe : la taille dun bit map ne dépend pas de la taille de la mémoire mais de la taille de lunité dallocation Le seul problème survient lorsque lon doit placer en mémoire un processus de k unités ; le gestionnaire doit parcourir le bit map à la recherche de k zéros consécutifs ; cette recherche est lente, ce qui fait quen pratique on utilise rarement les bit maps

12 Gestion mémoire par listes chaînées Une deuxième méthode pour mémoriser loccupation mémoire consiste à gérer une liste chaînée de segments libres et occupés Un segment est un processus ou un espace libre entre deux processus Chaque entrée de la liste spécifie : –une zone libre (H [pour Hole]) ou un processus (P), – son adresse de départ –sa longueur– un pointeur sur lentrée suivante Trier la liste en fonction des adresses permet de mettre à jour facilement la liste lorsquun processus se termine ou est déplacé sur disque +ieurs algos peuvent être utilisés à partir de cette liste pour allouer la mémoire aux processus Le + simple : lalgo de la première zone libre ( first fit ) : rechercher le premier segment H qui peut contenir le processus, le scinder en 2 (la première contient le processus, la seconde est H) : algo rapide puisque très peu de recherche Algo de la zone libre suivante ( next fit ) : légère variante : la recherche commence à partir de la dernière zone libre trouvé : performance légèrement inférieure à 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 ultérieurement : + lent et + étonnant : il fait perdre plus de place mémoire que first fit (fractionnement en petite zone inutilisable) ! Algo du plus grand résidu ( 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 mémoriser les H : le premier mot de chaque zone libre contient la taille de la zone et le deuxième un pointeur sur lentrée suivante Algo du placement rapide ( quick fit ) : utilise des listes séparées par les tailles de zone les plus courantes

13 Gestion mémoire par subdivision Les listes chaînées accélèrent lallocation mémoire mais rendent la libération plus lente car il faut examiner les voisins des segments libérés Lallocation par subdivision ( buddy system ) est un algo de gestion qui sappuie sur le fait que les ordinateurs utilisent des adresses binaires de manière à accélérer la fusion des zones libres adjacentes Le gestionnaire de la mémoire mémorise une liste de blocs libres dont les tailles sont 1, 2, 4, 8, 16, … octets jusquà la taille maximale de la mémoire Ex : Lallocation par subdivision présente un avantage par rapport aux algos qui trient en fonction de leur taille : quand un bloc de 2k octets est libéré, le gestionnaire de la mémoire doit examiner uniquement la liste des zones libres de 2 k octets pour voir sil peut reconstruire un bloc plus grand Malheureusement, il est assez inefficace en ce qui concerne lutilisation de la mémoire, le problème vient 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 excédentaires sont perdus, on parle de fragementation interne Fragmentation externe : zone libre entre 2 segments alloués, appelé aussi phénomène de damier ( checkerboarding ) De nombreux informaticiens (Peterson et Norman, Kaufman, …) ont modifié lallocation de subdivision pour contourner certaines de ses limitations

14 Lallocation de lespace de va-et-vient Dans certains systèmes, on nalloue pas à lavance un espace fixe sur le disque aux processus qui sont en mémoire 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 différent sur le disque, les algos de gestion de lespace de va-et-vient sont identiques à ceux de la gestion de la mémoire principale Sur dautres systèmes, lors de la création dun processus, on lui alloue un espace fixe de va-et-vient ; chaque fois quil est déplacé sur disque, il est placé dans lespace qui lui est réservé ; cet espace est libéré lorsque le processus se termine La seule différence entre lespace mémoire et lespace swap est que lespace swap dun processus est un nombre entier de blocs du disque

15 La mémoire virtuelle : introduction Il y a de nombreuses années, les programmes étaient trop volumineux pour entrer dans la mémoire disponible La solution adoptée fut de diviser le programme en parties appelées des segments de recouvrement ( overlays ) Le segment 0 sexécute en premier, lorsquil se termine il appelle un autre segment Les segments de recouvrement étaient stockés sur le disque et effectuaient des va- et-vient Le SE effectuait les déplacements, mais le découpage du programme devait être fait par le programmeur : long et fastidieux On adopta alors le principe de la mémoire virtuelle Idée de base : la taille du programme peut dépasser la taille de la mémoire disponible, le SE garde en mémoire les parties du programme qui sont utilisées, stocke le reste sur disque et effectue des va-et-vient lorsquil a besoin dinformations stockées sur disque

16 La pagination (1) La plupart des systèmes à mémoire virtuelle ont recours à la pagination Les adresses alors manipulées par les programmes sont appelées des adresses virtuelles et constituent lespace dadressage virtuel Sur les ordinateurs sans mémoire virtuelle, les adresses sont directement placées sur le bus de la mémoire et provoquent la lecture ou lécriture du mot à ladresse spécifiée Lorsque la mémoire virtuelle est utilisée, les adresses sont envoyées à lunité de gestion de la mémoire ou MMU (Memory Management Unit), composant qui traduit les adresses virtuelles en adresses physiques Mémoire Contrôleur de disque CPU MMU Carte processeur BUS Le processeur envoie des adresses virtuelles au MMU Le MMU envoie des adresses physiques à la mémoire

17 La pagination (2) Ex : ordinateur disposant de 32k de mémoire pouvant générer des adresses virtuelles de 16 bits de 0 à 64k On peut donc écrire des programmes de 64k, mais on ne peut les charger entièrement en mémoire Une image mémoire de tout le programme est stockée sur disque de telle sorte quon puisse en charger, au besoin, les différentes parties dans la mémoire Lespace dadressage est divisé en petites unités appelées pages Les unités correspondantes de la mémoire physique sont les cases mémoire ( page frames ) Les pages et les cases sont toujours de la même taille Les transferts entre la mémoire et le disque se font toujours par page entière

18 La pagination (3) Ex : MOV reg,0 (lecture de la valeur contenu à ladresse 0) –Ladresse virtuelle 0 est envoyée 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 mémoire ne connaît pas lexistence du MMU, elle reçoit simplement une demande de lecture de ladresse 8192 Le MMU a donc mappé les adresses virtuelles comprises entre 0 et 4096 sur les adresses physiques comprises entre 8192 à De la même manière ladresse virtuelle 8192 est transformée en et correspond à ladresse physique Ce mappage au moyen du MMU des 16 pages virtuelles sur nimporte laquelle des 8 cases ne résout pas le problème soulevé par le fait que lespace dadressage virtuel est plus grand que la mémoire physique

19 La pagination (4) Les pages signalées par un « X » ne sont pas mappées Le matériel mémorise dans un bit de présence si une page est mappée ou non Que se passe-t-il si le programme tente dutiliser une page non mappée (ex : MOV reg, ) Le MMU constate que cette page nest pas mappée et provoque un déroutement ( trap ) : le processeur est restitué au SE Ce déroutement est appelé défaut de page ( page fault ) Le SE repère une case peu utilisée et recopie son contenu sur le disque ; il place ensuite la page demandée dans la case qui vient dêtre libérée, modifie le mappe et réexécute linstruction déroutée

20 Fonctionnement interne du MMU Lorsque le MMU reçoit une adresse, il divise celle-ci en 2 parties : le numéro de page et un déplacement dans cette page Dans notre exemple : numéro de page = 4 bits de poids fort et le déplacement est stocké sur 12 bits Les 4 bits du numéro de page permettent davoir 16 pages et les 12 bits du déplacement permettent dadresser les 4096 octets dune page Le numéro de page sert dindex dans la table des pages et donne la case qui correspond à cette page virtuelle Si le bit de présence est à 0, il y a déroutement, sinon on copie le numéro de la case dans les 3 bits de poids fort du registre de sortie et le déplacement fourni par ladresse virtuelle Le registre de sortie contient ladresse physique et peut être placé sur le bus de la mémoire

21 Les tables de pages (1) Le but de la table de pages est détablir la correspondance entre les pages virtuelles et les cases mémoires Dun point de vue mathématique, cest une fonction qui prend en argument un numéro de page virtuelle et renvoie un numéro de case mémoire Cependant les deux points suivants doivent être pris en compte : –La table des pages peut être très grande –Le mappage doit être rapide Le premier point découle 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 dentrées ! Par ailleurs, chaque processus a besoin de sa propre table des pages ! Le deuxième point découle du fait que le mappage de ladresse virtuelle sur ladresse physique doit être effectué à chaque référence mémoire ; un instruction typique comporte une instruction sur un mot et souvent un opérande mémoire ; en conséquence il est nécessaire deffectuer, une, deux ou davantage de références à la table des pages par instruction Si une instruction prend 10ns, la recherche dans la table des pages doit être effectuée en quelques nanosecondes pour éviter un ralentissement important

22 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 constituée dun tableau de registres machine rapides, avec une entrée par page virtuelle et indexation au moyen du numéro de page virtuelle Lorsquun processus est activé, le SE charge les registres avec la table des pages de ce processus ; au cours de lexécution la table des pages ne nécessite plus de références mémoire Cette méthode est simple à réaliser et ne requiert pas de références mémoire pendant le mappage ; elle peut, en revanche, être coûteuse (si la table des pages est grande) et le chargement de la table des pages à chaque changement de contexte peut également être pénalisant A lautre extrême, la table des pages peut résider intégralement en mémoire. Le matériel na alors besoin que dun seul registre qui pointe sur le début de la table des pages Cette conception permet de changer la mappe mémoire en modifiant un seul registre lors dun changement de contexte; elle présente bien sûr le désavantage de nécessiter une ou plusieurs références mémoire pour lire les entrées de la table des pages lors de lexécution de chaque instruction Pour cette raison, cette approche est rarement utilisée dans sa forme initiale

23 La table des pages à plusieurs niveaux Pour éviter davoir des tables trop grandes en mémoire, de nombreux ordinateurs utilisent des tables de pages à plusieurs niveaux Ex : adresse virtuelle divisée en un champ PT1 de 10 bits, un champ PT2 de 10 bits et un champ déplacement de 12 bits (=> 2 20 pages de 4Ko) Les tables des pages à plusieurs niveaux évitent de garder en permanence toutes les tables des pages en mémoire ; en particulier, celles qui ne sont pas utilisées ne devraient pas être gardées en mémoire Ex: un prog de 12Mo divisé en 3 parties de 4Mo

24 La mémoire associative Les tables des pages des mémoires paginées sont souvent gardées en mémoire en raison de leur tailles importantes ce qui occasionne un coût non négligeable sur la vitesse des ordinateurs Les concepteurs dordinateurs sont conscients de ce problème et y ont remédié La solution mis en œuvre sappuie sur la constatation que la plupart des programmes effectuent un grand nombre de références à un petit nombre de pages ; de ce fait, une petite fraction des entrées de tables des pages sont souvent lues et les autres sont rarement utilisées La solution consiste à doter les ordinateurs dun composant matériel pour mapper les adresses virtuelles sur les adresses physiques sans passer par la table des pages Ce composant est appelé mémoire associative (ou parfois mémoire tampon de translation) Elle est en général intégré au MMU et consiste en un petit nombre dentrées (32) contenant les informations relatives à une page Lorsquune adresse est présentée au MMU le matériel contrôle dabord si le numéro de page virtuelle est présent dans la mémoire associative ; sil le trouve la case mémoire est prise directement dans la mémoire 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 entrées de la mémoire associative et la remplace par lentrée récemment trouvée La fraction de références mémoire trouvées dans la mémoire associative est appelée taux dimpact ( hit ratio ), les performances sont dautant meilleures quil est élevé

25 Algorithmes de remplacements de page A la suite dun défaut de page, le SE doit retirer une page de la mémoire pour libérer de la place pour la page manquante Si la page a été modifiée depuis son chargement en mémoire, il faut récrire sur le disque ; sinon le disque est déjà à jour, la page lue remplace simplement la page à supprimer La page à supprimer peut être choisie au hasard mais on améliore sensiblement les performances du système si on choisit une page peu utilisée Si on sélectionne une page très demandée, il est probable quil faille la ramener rapidement en mémoire, ce qui entraîne une perte de temps inutile Les algorithmes de remplacement de page ont été très étudiés tant du point de vue théorique que pratique La bibliographie de Smith (1978) répertorie plus de 300 articles sur ce sujet, nous étudierons quelques uns de ces algorithmes

26 Algorithme de remplacement de page optimal Le meilleur algorithme de remplacement est facile à décrire mais impossible à mettre en œuvre Il consiste à associer à chaque page le nombre dinstructions qui vont être exécutées avant que la page soit référencée Lalgorithme de remplacement page optimal consiste à retirer la page qui a le plus grand nombre Malheureusement cet algo est irréalisable car le SE ne peut pas connaître à lavance le moment où les différentes pages seront référencées On peut néanmoins implanter cet algorithme en exécutant le programme sur un simulateur qui mémorise toutes les références aux pages lors dun première exécution et qui utilise ces informations lors dun deuxième exécution On peut ainsi comparer les performances des différents algorithmes ; si par exemple, un SE donne des résultats qui sont inférieurs de 1% à ceux de lalgo optimal, il est inutile de rechercher un meilleur algorithme

27 Algorithme de remplacement dune page non récemment utilisée Pour effectuer des statistiques sur les pages utilisées, les ordinateurs associent à chaque page 2 bits dinformation : –Le bit R est positionné chaque fois quune page est référencée –Le bit M est positionné quand on écrit dans une page Ces bits devant être mis à jour à chaque référence mémoire, il est essentiel que ce soit fait par le matériel ; dès 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, périodiquement (par ex, à chaque interruption dhorloge), le bit R est remis à 0 pour différencier les pages récemment référencées des autres – Lorsquun défaut se produit, le SE parcourt toutes pages et les répartit en 4 catégories fonction des valeurs de R et M : Catégorie 0 : non référencée, non modifiée Catégorie 1 : non référencée, modifiée Catégorie 2 : référencée, non modifiée Catégorie 3 : référencée, modifiée Lalgo de la page non récemment utilisée ou NRU ( Not Recently Used ) retire une page au hasard de la catégorie non vide de plus petit numéro NRU est facile à comprendre, relativement efficace et fournit des performances qui sont souvent suffisantes même si elles ne sont pas optimales

28 Algorithme de remplacement de page premier entré, premier sorti Un deuxième algo qui requiert peu de temps processeur est lalgorithme du premier entré, premier sorti ou FIFO ( First In First Out ) Le SE mémorise une liste de toutes les pages en mémoire, la première page de cette liste étant la plus ancienne et la dernière la plus récente ; lorsquil se produit un défaut de page, on retire la première page de la liste et on place la nouvelle page à la fin de la liste Cet algorithme fournit de piètre performance Pour lillustrer, considérez un épicier qui possède k étagères chacune pouvant contenir un produit différent ; un fabriquant crée un nouveau produit qui a tellement de succès que lépicier doit abandonner un ancien produit pour le mettre en étalage. Lépicier décide de se séparer 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

29 Algorithme de remplacement de page de la seconde chance Une modification simple de FIFO, pour éviter de retirer une page très référencée, consiste à tester le bit R de la page la plus ancienne : –Sil est à 0, la page est à la fois âgée et non utilisée et peut donc être remplacée immédiatement –Sil est à 1, la page est placée à la fin de liste des pages et son temps de chargement est mis à jour comme si elle venait dêtre chargée en mémoire ; puis la recherche se poursuit Lalgorithme de la seconde chance cherche donc une ancienne page qui na pas été référencée au cours du dernier top dhorloge Si toutes les pages ont été référencées, lalgo de la seconde chance est équivalent au FIFO, puisque les bis de chaque page seront mis à 0 et la plus ancienne page sera remplacée

30 Algorithme de remplacement de page de lhorloge Lalgorithme de la seconde chance nest pas suffisamment efficace car il déplace en permanence des pages dans une liste Une meilleure solution consiste à garder les pages dans une file circulaire en forme dhorloge Lorsquun défaut de page se produit, la page pointée par lindicateur est examinée ; si R=0, la page est retirée, la nouvelle est insérée à sa place dans lhorloge et lindicateur avancé dune position ; si R=1, il est mis à 0 et lindicateur pointe sur la page suivante ; cette opération est répétée jusquà ce quune page ayant R=0 soit trouvée Cet algo, appelé horloge, ne diffère de lalgorithme de la seconde chance quau niveau de la mise en oeuvre A A A A A A A A A A A A Lorsquun défaut de page se produit, la page pointée est testée. Laction entreprise dépend du bit R : R=0 : retirer la page R=1 : mettre R à 0 et avancer pointeur

31 Algo de remplacement de la page la moins récemment utilisée (1) Une bonne approximation de lalgo optimal se fonde sur lobservation que les pages les plus référencées au cours des dernières instructions seront probablement très utilisées au cours des prochaines A linverse, les pages qui nont pas été référencées pendant un long moment ne seront pas probablement demandées pendant un certain temps Cette observation suggère lalgo qui, lorsquil se produit un défaut de page, supprime la page qui est restée inutilisée pendant le plus de temps Cette stratégie est celle de la page la moins récemment utilisée ou pagination LRU ( Least Recently Used ) LRU est théoriquement rélaisable mais il est très coûteux, il faut en effet mémoriser une liste chaînée de toutes les pages en mémoire, la page la plus utilisée étant en tête et la moins utilisée en queue La difficulté vient du fait que cette liste doit être mise à jour chaque fois que la mémoire est adressée : trouver une page dans la liste, la supprimer puis la dépalcer au début de la liste sont des opérations qui consomment beaucoup de temps CPU Il faut soit avoir du matériel spécialisé (et onéreux), soit trouver une approximation logicielle moins coûteuse

32 Algo de remplacement de la page la moins récemment utilisée (2) La recherche et la modification dune liste chaînée à chaque instruction prennent du temps même lorsque ces opérations sont effectuées matériellement Il existe néanmoins dautres moyens pour mettre en œuvre LRU en faisant toujours appel à du matériel spécialisé La méthode la plus simple consiste à disposer dun compteur C de 64 bits qui est automatiquement incrémenté à chaque instruction ; de plus chaque entrée dans la table des pages doit avoir un champ suffisamment grand pour contenir ce compteur Chaque fois que la mémoire est adressée, la valeur courante de C est sauvegardée dans lentrée de la page référencée Lorsquun défaut 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 récemment utilisée

33 Algo de remplacement de la page la moins récemment utilisée (3) Une seconde solution matérielle consiste à disposer dun matériel mémorisant une matrice de n n bits initialement nulle Quand une page k est référencée, le matériel positionne tous les bits de la rangée k à 1 puis tous les bits de la colonne k à 0 A tout instant la ligne contenant le – de 1 indique la page la – récemment utilisée Ex : 4 cases et les références aux pages suivantes :

34 Simulation logicielle de lalgo LRU Les 2 algos précédents sont rélaisables mais font appel à du matériel spécialisé, si lon dispose pas de ce matériel, il faut trouver une solution logicielle : lalgorithme de la page peu utilisée ou NFU ( Not Frequently Used ) Il nécessite un compteur par page, ce compteur est initialement à 0 A chaque interruption dhorloge, le système dexploitation passe en revue toutes les pages en mémoire et le bit R est ajouté à son compteur Les compteurs mémorisent donc le nombre de fois où on référence les différentes pages; quand il se produit un défaut de page, on remplace la page dont le compteur est le plus petit Le problème de NFU est quil noublie jamais rien (des pages énormément utilisées au début processus et qui ne sont plus utilisées resteront probablement mappé) Il existe une légère modification qui permet à NFU de se comporter comme LRU

35 Algorithme du veillissement Cette modification se fait en 2 temps : –Décaler 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 défaut de page, on retire la page qui a le plus petit compteur Cet algorithme diffère de LRU en deux points : –En mémorisant quun seul bit par intervalle de temps, on ne peut distinguer les références qui se produisent au début de lintervalle de celles qui se produisent à la fin (idem pour le nombre de références à une même 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é référencé n+1 tops plus tôt et lautre 10 n tops plus tôt : 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 référencée depuis 160 ms, elle nest vraisemblablement plus utilisée)

36 Conclusion (1) Nous avons traité dans ce chapitre la gestion de la mémoire –Nous avons vu que les systèmes les plus simples neffectuent pas de va-et-vient (swapping) : un programme chargé en mémoire y reste jusquà ce quil se termine –certains systèmes nacceptent quun seul processus à la fois alors que dautres autorisent la multiprogrammation Puis nous avons étudié le va-et-vient : –Lorsquil est utilisé, le système accepte davantage de processus quil na de place mémoire –Les processus qui ne peuvent plus tenir en mémoire sont déplacés sur disque –Lespace libre en mémoire et sur le disque peut être mémorisé au moyen dune table de bits, dune liste de zones libres ou de lallocation par subdivision Les ordinateurs les plus évolués disposent dune mémoire virtuelle : –Dans la forme la + simple de mémoire virtuelle, lespace dadressage de chaque processus est divisé en blocs de tailles fixe appelés pages qui peuvent être placés dans nimporte quelle case libre de la mémoire –Lorsque la taille des tables de pages est grande, une pagination à plusieurs niveaux autorise la pagination des tables de pages elles-mêmes

37 Conclusion (2) Pour améliorer les performances, la plupart des ordinateurs autorisant la pagination possèdent une mémoire associative : –Elle permet détablir rapidement la correspondance entre un numéro de page virtuel et un numéro de case mémoire physique –La table des pages est examinée uniquement en cas dabsence de ladresse virtuelle dans la mémoire associative Il existe de nombreux algorithmes de remplacement de page : –Quelques-uns sont bons mais irréalisables (algo du remplacement optimal et LRU) –Les algorithmes de lhorloge et du vieillissement figurent parmi les meilleurs Il existe une alternative à la pagination pour obtenir de la mémoire virtuelle : la segmentation (non étudié) –Elle consiste à segmenter le processus (comme pour les partitions variables) –Ladressage virtuelle est obtenu en donnant un numéro de segment et une adresse dans ce segment –La segmentation peut également être paginée, on parle de segmentation avec pagination


Télécharger ppt "Systèmes dexploitation Gestion de la mémoire Introduction Mémoire ressource importante devant être gérée avec prudence Gestion de la mémoire du ressort."

Présentations similaires


Annonces Google