gestion de la mémoire - lisicpoty/files/mem_se_l2_etud.pdf · gestion de la mémoire par...

56
Gestion de la mémoire Partitions fixes Partitions variables Segmentation Mémoire virtuelle : pagination

Upload: buique

Post on 07-Oct-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Gestion de la mémoire

Partitions fixes Partitions variables Segmentation Mémoire virtuelle : pagination

Introduction

• Programmes ont besoin de mémoire pour leur exécution : données et instructions• Seules les instructions stockées en mémoire peuvent être exécutées • En monoprogrammation : le problème se réduit au partage de la mémoire entre le programme et la partie du S.E. résidant en mémoire

• partie S.E. : réside en général dans la partie basse de la mémoire• programme : au dessus ⇒ si le programme a une taille plus grande alors c ’est au programmeur de le découper (overlays)

• Mémoire centrale : ressource coûteuse ⇒ limitée, élément critique dans la performance de l ’ordinateur• Taille des mémoires augmente avec la taille des programmes• S.E. gère le partage de la mémoire entre les processus en attente

Modélisation de la multiprogrammation

• Question pour connaître la capacité de la mémoire : « Combien de processus la mémoire doit-elle contenir pour que le processeur ait une efficacité de 100 % ? »• Réponses :

– 1 processus = 20 % du processeur => 5 processus en mémoire– 1 processus attend la fin d'1 E/S pendant une fraction p de son

temps d'exécution ; si n processus, la proba qu'ils soient tous en attente en même temps est de pn , donc l'utilisation du processeur est de 1-pn

Modélisation de la multiprogrammation

Modélisation de la multiprogrammation• Question pour connaître la capacité de la mémoire : « Combien de processus la mémoire doit-elle contenir pour que le processeur ait une efficacité de 100 % ? »• Réponses :

– 1 processus = 20 % du processeur => 5 processus en mémoire– 1 processus attend la fin d'1 E/S pendant une fraction p de son

temps d'exécution ; si n processus, la proba qu'ils soient tous en attente en même temps est de pn , donc l'utilisation du processeur est de 1-pn

• Exemple : mem : 1Mo ; SE : 200Ko ; processus : 200Ko ; E/S : 80%– + 1Mo ? on passe de 60% d'utilisation du processeur à 87%

=> ~ 45% de rendement– + 1Mo ? on passe de 87% d'utilisation du processeur à 96%

=> ~ 10% de rendement

Modélisation de la multiprogrammationexercice

Analyse de performancesDans un centre de calcul, on désire lancer 4 tâches A, B, C, et D sachant que le temps moyen d'E/S est de 80%.Les 4 tâches ont les caractéristiques suivantes :

A quelle heure chaque tâche se terminera ?

processus heure d'arrivée

temps d'exécution

A 10h00 4 mn

B 10h10 3 mn

C 10h15 2 mn

D 10h20 2 mn

Partitionnement de la mémoiretailles fixes

• Comment partitionner la mémoire afin qu ’elle puisse contenir un nombre maximum de programmes ?• La plus simple : partitions fixes de tailles variables fixées à la génération du système• Problèmes engendrés par ce partitionnement :

• gestion de plusieurs files d ’attente• tri des processus par taille : un processus est stocké dans un emplacement de taille égale ou immédiatement supérieure ⇒ espace mémoire perdu = fragmentation interne• s ’il n ’y a que des petits processus ⇒ grande place mémoire perdue

• Pour remédier au « gaspillage » de la mémoire en partitionnement de tailles fixes• Taille variable : on adapte la taille de la partition à celle du processus• Problème : quand un processus se termine, création d’un « trou » dans la mémoire, si un processus de taille ≤ à celle du processus terminé doit être mis en mémoire alors c’est possible sinon autant de place mémoire perdue ⇒ fragmentation externe• Pour remédier à cette fragmentation externe on déplace les programmes en mémoire (côte à côte) = compactage

Partitionnement de la mémoiretailles variables

Compactage :

Certains systèmes à swap tentent d'éliminer la fragmentation externe au moyen du compactage. Supposons qu'un ordinateur de 1Mo de mémoire utilisateur effectue un compactage toutes les secondes. S'il faut 0.5µs pour copier un octet et si la taille moyenne des zones libres est égale à 0.4 fois celle des segments, quelle fraction du temps processeur faut-il pour le compactage ?

Partitionnement de la mémoiretailles variables - exercice

• Translation dynamique : – Chaque programme réagit comme s'il avait sa propre mémoire et

donc les adresses données par le processus sont données à partir de 0, correspondent donc à un déplacement = offset

– Chaque processus sera mis en mémoire à une adresse de base stockée dans un registre

– Le processeur va lire/écrire des données en mémoire à des adresses dites effectives

⇒ @ effective = @ base + offset• Protection :

– Faute : écrire dans la zone mémoire d'un autre processus– Solution : ajout au registre de base et au dispositif de calcul de

l'adresse effective, d'un registre borne (contenant l'adresse la plus haute allouée au processus) et d'un dispositif de vérification d'appartenance (@ effective < @ contenus dans le registre borne)

Partitionnement de la mémoiretranslation dynamique et protection

• Dépend de la taille du processus :• Taille fixe (son nombre de données ne varie pas) : pas de pb d'allocation• Taille non fixe (allocation de mémoire dynamique) :

1. Grossit dans son espace s'il le peut ;2. Si non 1 : Il existe un espace libre adjacent à son espace de

départ, il l'utilise3. Si non 1 et 2 :

(a) déplacer le processus dans un autre emplacement mémoire plus grand

(b) Si non (a) : déplacer 1 ou plusieurs processus sur le disque pour créer un emplacement mémoire suffisant, puis faire (a)

4. Si non 1, 2 et 3 : la mémoire est saturée, et si l'espace de swap l'est aussi alors le processus est détruit.

Partitionnement de la mémoiretaille mémoire allouée aux processus

On considère un processus qui exécute le programme suivant écrit en assembleur :

Charger le mot 6144 dans le registre 0Empiler le registre 0 sur la pileAppeler une procédure en 5120 en plaçant l'adresse de retour dans la pileRetirer la constante 16 du pointeur de pileComparer le paramètre courant à la constante 4Effectuer un saut à l'adresse 5152 s'il y a égalité

Le programme débute à l'adresse 1020 et son pointeur de pile est situé à l'adresse 8192 (la pile croît vers l'adresse 0). Donnez la liste des adresses effectives utilisées par ce programme. Chaque instruction occupe 1 mot.

Partitionnement de la mémoireadresses mémoires d'un processus

Gestion de la mémoire : zones libres, zones occupées

• En principe : on divise la mémoire en unités d ’allocation dont la taille peut varier de qq mots à plusieurs Kmots• Table des bits : A chaque unité on fait correspondre un bit dans la bitmap, 0 pour unité libre, 1 sinon Exemple : mem=500Ko ; unité:10Ko ; SE:100Ko ; libre : 80Ko ; A : 40Ko ; libre : 40 Ko ; B : 90Ko ; C : 50Ko ; D : 80Ko ; libre : 200Ko• Listes chaînées : liste chaînée des segments libres et occupés, 1 segment = flag (libre/occupé) / @ début / nb unités / ptr segment svt

– Libération – Allocation : suivant des algorithmes d'allocation

• First fit : allocation de la 1ère zone libre contenant le processus• Next fit : même que first fit mais sans retour en début de liste• Best fit : zone de taille la plus proche de celle du processus• Worst fit : zone de taille la plus grande

Gestion de la mémoire par listes chaînées : exercice

La mémoire d'un système à swap contient des zones libres ordonnées suivant leur adresse mémoire croissante comme suit :

10 Ko, 4 Ko, 20 Ko, 18 Ko, 7 Ko, 9 Ko, 12 Ko et 15 Ko.

Quelle zone libre l'algorithme de la « première zone libre » sélectionne-t-il pour des demandes consécutives d'allocation de segments de :

(a) 12 Ko(b) 10 Ko(c) 9 Ko

Même question pour les algorithmes du « meilleur ajustement », « plus grand résidu » et « zone libre suivante ».Vous donnerez pour chaque algorithme le nombre total d'accès à la liste des zones libres pour sélectionner la zone attribuée aux segments.

Gestion de la mémoire : zones libres, zones occupées

• Par subdivision : – algorithme s’appuyant sur le fait que les ordinateurs utilisent des

adresses binaires de manière à accélérer la fusion des zones libres adjacentes lorsqu’un processus se termine ou est déplacé sur disque.

– Fonctionnement : on divise la partie de la mémoire libre en 2 récursivement, de manière à obtenir un bloc libre de taille égale ou immédiatement supérieure à la taille du processus

• Exemple : mem 1Mo ; A : 70Ko ; B : 35Ko ; C : 80Ko ; A terminé ;   D : 60Ko ; B terminé ; E : 150Ko ; C terminé , puis D , puis E 

Gestion de la mémoire par subdivisionexemple

0 1Mo512Ko256Ko128Ko

A 128 256 512

A 256 512B 64

A 512B 64 C 128

128 512B 64 C 128

512B D C 128128

51264 D C 128128

64 D C 128128 E 256

64 D 256128 E 256

512 E 256

1024

768Ko

B : 35Ko

C : 80Ko

A terminé

D : 60Ko

B terminé

E : 150Ko

C terminé

D terminé

E terminé

B : 70Ko

Gestion de la mémoire par subdivisionexercice

Un mini-ordinateur a une gestion de la mémoire fondée sur l'allocation par subdivision (buddy system). Il a au départ un seul bloc libre de 256 Ko situé à l'adresse 0.Des requêtes arrivent pour des blocs de 5 Ko, 25 Ko, 35 Ko et 20 Ko.Combien de blocs reste-t-il ? Quelles sont leur taille et leur adresse ?

Espace de va-et-vient

• Il arrive souvent que la mémoire ne soit pas suffisante pour contenir tous les processus ⇒ réservation d ’une partie de l’espace disque pour étendre la mémoire centrale = zone de va-et-vient ou swapping• Zone de swapping est de taille fixe• Gestion des unités libres et occupées se fait comme en mémoire (bitmap, …) avec 2 modes de réservation différents :

• réservation fixe de la zone de swapping d’un processus (à la création du processus un espace de taille fixe lui est réservé sur le disque puis libéré à la fin du processus)• réservation à la demande

Mémoire virtuelle

A la zone de swapping se sont rajoutées des techniques consistant à diviser les programmes en parties appelées segments de recouvrement.• Principe : le segment 0 était chargé en mémoire, puis appelait le segment 1 qui résidait sur disque et qui était à son tour chargé … (découpage fait par le programmeur …puis par les S.E.) • Mémoire virtuelle : mémoire propre au processus qui peut être de taille plus grande que la mémoire principale => adresses virtuelles• Principe de la mémoire virtuelle : les processus ont en mémoire principale une partie de leur mémoire virtuelle à un instant T, la totalité résidant en mémoire secondaire (disque)• @ virtuelle (mém virtuelle) <=> @ physique (mém principale) => dispositifs de calcul mis en place qui pourront détecter si le module du programme contenant cette adresse virtuelle n'est pas en mémoire

Mémoire virtuelleLa Segmentation

• Division du programme en modules ou segments => segmentation qui se comportent chacun comme s'il avait sa propre mémoire • Technique :

• chaque segment correspond à une entité logique , telle une procédure ou un bloc de données indépendante des autres segments (ex : compilation : un segment différent pour le texte source, code objet, table des symboles, arbre d ’analyse syntaxique, …)• chaque segment peut alors être ensuite stocké en mémoire non consécutivement aux autres et uniquement s’il est utile • Dispositif de correspondance (@ virtuelle, @ physique) : table des segments qui à chaque segment associe des caractéristiques telles que la présence du segment en mémoire principale (MP), l'adresse physique de base du segment en MP, la protection, dispositif auquel on peut associer un dispositif de vérification des @.

Segmentation - exerciceSupposons une mémoire de 4Mo, occupée par 5 segments chargés en mémoire consécutivement dans l'ordre suivant 0, 4, 1, 2, 3 et dont les adresses physiques sont respectivement 540Ko, 976Ko, 1154Ko, 1590Ko, 2048Ko.

1. Quelle est la taille de chaque segment ?2. Quelles sont les adresses physiques correspondant aux adresses virtuelles

données par les couples suivants (n° segment, déplacement dans le segment) :

(a) (1, 100)(b) (2, 465)(c) (3, 888)(d) (4, 100)(e) (0, 128)(f) (1, 99)(g) (4, 344)

Pagination

Définition Table des pages Remplacement des pages Pagination et antémémoire Pagination et segmentation

Pagination : définition. Technique de division :

– découpage des mémoires (mémoire virtuelle, mais aussi mémoire principale, mémoire secondaire) en unités (ou blocs ou pages) de même taille.

– On affecte un numéro aux pages dans l'ordre croissant des adresses Exemple : si les pages font 1 Ko, la page 0 contiendra les adresses de 0 à 1023, la page 1 les adresses de 1024 à 2047, …

– Si la page a une taille T octets, 1 mot = 1 octet, alors la page i contiendra les adresses qui vont de T*i à (T+1)*i-1

• @ (virt/phys) = n°page (virt/phys), déplacement dans la page (= offset). Allocation mémoire :

– les pages (virtuelles) contenant les données utiles au processus à un instant T sont chargées en mémoire

– Une page virtuelle est chargée entièrement dans une page libre physique (de la MP)

Pagination : table des pages. Dispositif de correspondance (@ virtuelle, @ physique) : Memory Management Unit (MMU) qui utilise une table des pages.. Table des pages :

– est indexée par les numéros de pages virtuelles – chaque entrée contient :

• bit de présence de la page virtuelle en MP,• le numéro de la page physique en MP si elle y est, • bit de signalement de modification, • bits de protection de la page (accessible en R/W..),• bit de verrouillage de la page

– est mémorisée dans la MP toute ou partie :• Complètement : 1 tableau de registres ; table en MP avec un

registre pointant sur la table• Partiellement : table des pages à plusieurs niveaux (voir plus loin)

. Chaque processus a sa propre table des pages

Paginationfonctionnement MMU - exemple

@ virtuelle de 16 bits, taille des pages 4 Ko, 1 mot = 1 octet, taille MP = 32 Ko

@ virtuelle 8196

@ physique 24580

0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0

0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0

N° page offset

Pagination : exercice

Donner, grâce au tableau ci-dessous, les adresses physiques correspondant aux adresses virtuelles :

(a) 20(b) 4100(c) 8300

Chaque case mémoire contient 4 Ko.

Donner, grâce au tableau ci-dessous, les adresses physiques correspondant aux adresses virtuelles :

(a) 20(b) 4100(c) 8300

Chaque case mémoire contient 4 Ko.

Donner, grâce au tableau ci-dessous, les adresses physiques correspondant aux adresses virtuelles :

(a) 20(b) 4100(c) 8300

Chaque case mémoire contient 4 Ko.

Donner, grâce au tableau ci-dessous, les adresses physiques correspondant aux adresses virtuelles :

(a) 20(b) 4100(c) 8300

Chaque case mémoire contient 4 Ko.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 N° pages virtuelles

2 1 6 0 4 3 x x x 5 x 7 x x x x N° pages physiques

Pagination : table des pages

. Table des pages à plusieurs niveaux : – Principe : diviser la table des pages en blocs afin de charger en

MP uniquement la partie de la table des pages qui contient les adresses virtuelles référencées.

– Mise en pratique : • Table des pages est divisée en blocs de même taille• A l'intérieur d'un bloc les entrées seront indexées à partir de 0• Une table des pages de plus haut niveau est créée avec comme

index les numéros de blocs et chaque entrée contient l'adresse du bloc en mémoire

– Seront stockées en MP, la table des pages de plus haut niveau et le ou les bloc(s) contenant les pages virtuelles référencées.

• Exemple : table des pages de 1024 pages divisée en blocs de 16 entrées => table des pages de plus haut niveau aura 64 entrées => en MP : 1 table de 64 entrées + 1 table de 16 entrées => ↘ place mém 59/64

Pagination : table des pages à plusieurs niveaux - Exercice

1. Un ordinateur ayant des adresses de 32 bits utilise une table des pages à 2 niveaux. Les adresses virtuelles se composent d'un champ de 9 bits pour la table des pages du premier niveau, d'un champ de 11 bits pour la table des pages du deuxième niveau et d'un déplacement (offset). Quelle est la taille et le nombre des pages de l'espace des adresses virtuelles ? 2. Supposez qu'une adresse virtuelle de 32 bits est divisée en 4 champs a, b, c, d. Les 3 premiers champs sont utilisés pour un système de pagination à 3 niveaux. Le quatrième champ, d, est le déplacement. Le nombre de pages dépend-il de la taille des 4 champs ? Dans le cas contraire quels sont les champs qui comptent ?

Pagination : table des pages

. Taille de la table des pages : corrélation entre la taille des pages et la grandeur de la table : ↗ taille des pages => ↘ taille table des pages. Mémoire associative :

– idée : diminuer le nombre de références mémoire engendrées l'accès à la table des pages

– solution : sur l'exemple de la mémoire cache, ajout d'une table associative dans le CPU, table accessible en parallèle sur toutes les entrées, qui mémorise les références (@ virtuelle, @ physique)

. Table des pages inverse :– idée : diminuer la table des pages en stockant non pas pour

chaque processus les pages virtuelles en MP, mais pour chaque page physique la page virtuelle (n°page + n°ID processus)

– table indexée par les n° de page physique

Table des pages - Exercice

Une machine a des adresses virtuelles de 48 bits et des adresses physiques de 32 bits. Les pages font 8Ko. Combien faut-il d'entrées pour une table des pages conventionnelle, et pour une table des pages inverse ?

Pagination-Taille des pages • ExerciceCombien de temps faut-il pour charger un programme de 64Ko à partir d'un disque dont les pistes font 32Ko, si le temps de recherche moyen est de 30ms et le temps de rotation de 20ms

1. Si les pages sont réparties de manière contiguë et font(a) 2 Ko(b) 4 Ko

2. Même question si les pages sont réparties aléatoirement sur le disque

Chargement des pages virtuelles

• Lorsqu’une @ (virtuelle) référencée appartient à une page n’ayant pas de copie mémoire, on dit qu’il y a un défaut de page• Lors d’un tel défaut, le S.E. :

– doit rechercher alors sur disque la page référencée afin de la charger en MP ⇒ pagination à la demande

– pendant la recherche et le chargement le processus ayant provoqué le défaut de page est bloqué

Si aucune page libre en MP => déplacer sur disque une ou plusieurs pages : le choix de ces pages se fait grâce à un algorithme de remplacement de pages• Pour minimiser les défauts, on place en mémoire plutôt qu’une page à la fois un ensemble de pages sélectionnées (= working set) qui sont chargées avant le démarrage de l’exécution.

Algorithmes de remplacement des pages

• Algorithme de remplacement optimal : supprimer la page qui ne sera plus utilisée ou celle qui sera utile le plus tard possible => pb : impossible à prévoir, difficile à réaliser.• Algorithme d'une page non récemment utilisée (NRU) :

– Principe : on supprime une page qui n'a pas été utilisée récemment– Mise en œuvre : utilisation des bits R (référencée) et M (modifiée)– Algorithme :

• Au lancement d'un processus, le S.E. met à 0 les bits de toutes les pages

• Périodiquement, le bit R est remis à 0 (pas le M) pour différencier les pages récemment utilisée des moins récentes

• Choix de la page remplacée en fonction des valeurs de R et M dans l'ordre suivant (RM) : 00, 01, 10, 11

• + : facile à mettre en œuvre ; - : non optimal

Algorithmes de remplacement des pages

• Algorithme FIFO : – Principe : la liste est gérée en fonction des références, la page la +

ancienne est celle qui a été référencée la première de la liste– Choix de la page : la plus ancienne

• Algorithme de la seconde chance : – Principe : FIFO + bit R– Algorithme :

• Au lancement d'un processus, le S.E. met à 0 le bit R de toutes les pages qui sera remis à 0 périodiquement

• Choix de la page remplacée la plus ancienne qui a son bit R à 0• Si la + ancienne a R à 1 alors on met la page en fin de liste (elle

devient la + récente) en mettant son bit R à 0• - : gère une liste qui déplace en permanence des numéros

Algorithmes de remplacement des pages

• Algorithme de l'horloge : – Principe : algo précédent avec mise en oeuvre différente– Algorithme :

1.La liste est circulaire avec un pointeur sur la page la + ancienne2.Si R = 0 alors page remplacée et le pointeur avance d'une position3.Si R = 1 alors pointeur avance + mise à 0 de R, on recommence 2.

Algorithme de la moins récemment utilisée (LRU) : Idée : les pages les + référencées au cours des dernières instructions

seront probablement les plus utilisées ensuite ; celles qui n'ont pas été référencées depuis longtemps risquent de ne plus l'être ultérieurement

Principe : on retire la page qui reste inutilisée depuis le plus longtemps possible

Mises en œuvre : matérielles ou logicielles

Algorithmes de remplacement des pages : LRU

• Matérielle – utilisation d'un compteur :– Compteur C de 64 bits qui s'incrémente à chaque référence mémoire– Chaque page a un tel compteur dans lequel C est recopié si la page est

référencée– Page supprimée : celle dont le compteur est le plus petit

• Matérielle – utilisation d'une matrice de bits :– Machine à n pages physiques => matrice de nxn bits– Algorithme :

• Initialisation : bits à 0• Lorsqu'une page p est référencée :

– Tous les bits de la ligne p sont mis à 1– Tous les bits de la colonne p sont mis à 0

• Page remplacée : valeur la plus petite– Exemple : 4 pages ; 01232103 ;

=> page supprimée : 2

0 1 1 00 0 1 00 0 0 01 1 1 0

0 1 2 3

0123

Algorithmes de remplacement des pages : LRU

• Logicielle - algorithme de la page peu fréquemment utilisée (NFU)– 1 compteur par page initialisé à 0– Le compteur mémorise le nombre de tops d'horloge où la page a été

référencée : à chaque interruption de l'horloge, le S.E. ajoute à toutes les pages en mémoire la valeur de leur bit R (si la page a été référencée alors on incrémente le compteur de 1)

– Page choisie : page dont le compteur a la plus petite valeur– + : n'oublie rien ; - : risque de remplacer 1 page qui commence à être

référencée et qui le sera par la suite• Logicielle – algorithme du vieillissement

– Même algo mais la valeur du bit R est ajoutée sur le bit de poids fort du compteur après avoir décalé d'un pas à droite le compteur

– - : résultat dépendant du nombre de bits du compteur (= nombre de tops d'horloge maximum qu'on pourra compter)

Algorithmes de remplacement des pages : LRU - vieillissement

Tops d'horloge

Bits R

compteurspage

0 1 2 3 4 5 N° pages1 1 0 0 1 0

1

0 1 2 3 4 5 1 1 0 1 0 1

2

0 10000000

1 00000000

2 10000000

3 00000000

4 10000000

5 10000000

1 0 1 0 1 1

0

0 1 2 3 4 5 1 0 0 0 1 0

3

0 1 2 3 4 5 0 1 1 0 0 0

4

0 1 2 3 4 5

0 11000000

1 10000000

2 01000000

3 00000000

4 11000000

5 01000000

0 11100000

1 11000000

2 00100000

3 10000000

4 01100000

5 10100000

0 11110000

1 01100000

2 00010000

3 01000000

4 10110000

5 01010000

0 01111000

1 10110000

2 10001000

3 00100000

4 01011000

5 00101000

=> page supprimée : moins récemment utilisée dans le temps ; page 5

Remplacement des pages – exercice 1 Considérons un ordinateur qui a 4 cases mémoire. On donne ci-dessous le moment de chargement, le temps du dernier accès et les bits R et M des différentes pages.

Lors d'un défaut de page quelle page sera remplacée par l'algorithme :(a) LRU(b) FIFO(c) NRU(d) Seconde chance

Remplacement des pages Autres exercices

• Exercice 2Si toutes les pages sont vides initialement, et si la liste des références aux pages est 017237103, combien de défauts de pages se produira-t-il si on utilise l'algorithme de remplacement de page FIFO avec 4 cases et 8 pages ? Même question avec l'algorithme LRU.• Exercice 3Un petit ordinateur possède 4 cases mémoire. Au premier top d'horloge, les bits R valent 0111 (pour les pages 0, 1, 2 et 3 respectivement). Aux tops d'horloge suivants, les valeurs sont 1011, 1010, 1101, 0010, 1010, 1100 et 0001. Si on utilise l'algorithme de vieillissement avec un compteur de 8 bits, donnez les valeurs des 4 compteurs après le dernier top.

Modélisation des algorithmes de remplacement des pages

• Anomalie de Belady : contre-exemple à l'idée que plus on a de cases mémoire, moins on a de défauts de page•Exemple : algo RP FIFO ; références : 0 1 2 3 0 1 4 0 1 2 3 4 ; défauts de page avec 3 pages physiques, puis avec 4 ?

0

0

0

1

1

2

01 2+ récente

+ ancienne

références

12

3

3

23

0

0

30

1

1

01

4

4

01

0

41

1

4

14

2

2

42

3

3

0 42

4

3

x x x x x x x x x

=> 9 défauts de page

0

0

0

1

1

2

01 2+ récente

+ ancienne

références

12

3

3

12

0

23

1 4

4

0 1 2 3 4

x x x x xx x x0 0

3

10

12

0

3

x x234

340

401

012

123

0 1 2 3 4

=> 10 défauts de page

Modélisation des algorithmes de remplacement des pages

• Algorithmes de pile : + pages physiques => - défauts de page– Système de pagination : chaîne de réf aux pages virtuelles, algo de RP, nb pages physiques m– Interpréteur :

• Mémorise l'état de la MP dans une table interne M à n éléments (n pages virtuelles)• M est divisée en 2 parties : partie haute représentant les m pages physiques• Lit la chaîne de références successivement et place sur le haut de la pile (du tableau) la

page référencée et décale les anciennes références vers le bas de la pile (du tableau)

Exemple : 8 pages virtuelles, 4 pages physiques, chaîne de référence : 24 pages

10 défauts de page

Modélisation des algorithmes de remplacement des pages

• Algorithmes de pile : chaîne des distances– Page non référencée aura comme valeur ∞– Page référencée aura comme valeur sa distance au haut de la pile (1ère ligne du tableau) => 1

page référencée dont le numéro est dans la ie ligne aura la distance i

Exemple : 8 pages virtuelles, chaîne de référence : 24 pages

Modélisation des algorithmes de remplacement des pages

• Algorithmes de pile : prévision du nombre de défauts de page– On compte le nombre d'occurrences de chaque distance i noté C

i

– On crée un vecteur F tel que, pour n pages virtuelles, Fm détermine le

nombre de défaut de pages pour m pages physiques comme suit :

Exemple : 8 pages virtuelles, chaîne de référence : 24 pages

Fm=C∞+ ∑k=m+1

n

C k ⇒ Fm=Cm+1+Fm+1

C∞=8

C7=0

C6=1

C5=2

C4=3

C3=3

C2=3

C1=4

F8=8

F7=8

F6=8

F5=9

F4=11

F3=14

F2=17

F1=20

=>

Pagination et défauts de pageApplication

Un processus engendre la chaîne des distances suivante avec 5 cases mémoire et l'algorithme de remplacement de page LRU :

∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 4 2 2 4 3 4 3 5 2 3 2 4 2 4 3 2 3 2 4 6 1 2 3 5 Le processus possède 8 pages virtuelles dans son espace d'adressage. Calculez les vecteurs C et F de ce processus.

Combien aura-t-on de défauts de page pour 3 cases mémoire, 4 cases mémoire, 5 cases mémoire, 6 cases mémoire ?

Pagination et défauts de page • Exercice

Donner 2 suites de références telles que, pour l'algorithme LRU :1. Doubler la taille des pages diminue le nombre de défauts de page2. Diviser par 2 la taille des pages diminue le nombre de défauts de page

Evitement de l'écroulement du système (= thrashing)

• Modèle de travail : pagination à la demande, références groupées, ensemble de travail• Allocation des pages de chaque processus en MP :

– locale ou globale : lors d'un défaut de page la page chargée l'est dans l'espace alloué au processus (= allocation locale) ou n'importe où en mémoire (= allocation globale)

Exemple : algo de RP = FIFO ; 3 processus en MP

Processus A provoque un défaut de page

Si allocation locale => A1 est supprimée

Si allocation globale => C2 est supprimée

Evitement de l'écroulement du système (= thrashing)

• Modèle de travail : pagination à la demande, références groupées, ensemble de travail• Allocation des pages de chaque processus en MP :

– dépendant de la fréquence des défauts de page : on trace la fréquence des défauts de pages en fonction du nombre de cases mémoire allouées

. Si nb défauts > A(x), on a trop de défauts, alors on donne plus de pages mémoire au processus

. Si nb défauts < B(x), on a trop de pages mémoire, alors on diminue le nombre de pages mémoire allouées au processus

Evitement de l'écroulement du système (= thrashing)

• Modèle de travail : pagination à la demande, références groupées, ensemble de travail• Allocation des pages de chaque processus en MP :

– locale ou globale : lors d'un défaut de page la page chargée l'est dans l'espace alloué au processus (= allocation locale) ou n'importe où en mémoire (= allocation globale)

– « fixe » : le système réserve un nombre de pages libres pour les défauts de page, et tous les processus ont soit un même nombre fixe de pages, soit un nombre de pages proportionnel à leur taille

– dépendant de la fréquence des défauts de page : on trace la fréquence des défauts de pages en fonction du nombre de cases mémoire allouées

Pagination et défauts de page • ExerciceOn a constaté que le nombre d'instructions exécutées entre 2 défauts de page est directement proportionnel au nombre de cases allouées à un programme. Si on double la mémoire disponible, on double le temps entre 2 défauts de page consécutifs. Supposez qu'une instruction normale requière 1µs et qu'un défaut de page en requière 2001. Si le programme s'exécute pendant 60 secondes et s'il fait 15000 défauts de page, quelle serait sa durée d'exécution si on avait 2 fois plus de mémoire ?

Pagination et antémémoire• Dans l’antémémoire se trouvera une partie (lignes ou blocs) des pages chargées en mémoire centrale• Le cache est donc divisé en blocs de taille inférieure à celle d’une page (qq dizaines de mots). Pour que ce système fonctionne il faut que le cache contienne les blocs les plus fréquemment utilisés• Les transferts de blocs entre la mémoire et le cache ne se font pas comme entre la mémoire et le disque, en effet lors d’un défaut de page on n ’attend pas le chargement de la bonne page pour continuer le processus, le système change l ’affectation du CPU. Dans le cas d ’un défaut de bloc dans le cache (= cache miss), l ’attente du bloc désiré ne se compte qu’en fractions de ms, on continue l ’exécution du même programme.

Pagination et antémémoire (2)• Le remplissage du cache se fait essentiellement par blocs chargés à la demande• Le cache contient des blocs d ’instructions et de données appartenant au même processus, celui qui est en exécution, donc lors d ’un changement de contexte le contenu du cache est effacé• L ’antémémoire fonctionne donc selon 2 concepts celui du working set (à un instant donné on doit retrouver toutes les informations récemment référencées) et à la demande.• Pour rechercher une information dans l ’antémémoire :

• on utilise une table qui contient les @ virtuelles récemment référencées, et qui fonctionne comme une mémoire associative où les clés représentent les @ virtuelles qui sont associées à une @ physique en mémoire principale • dès qu’on a l ’@ physique on recherche dans une mémoire associative (= cache) l ’information liée à cette @

Pagination et segmentation

• Espace virtuel est segmenté et les segments sont découpés en pages • La structure de l ’@ doit alors prévoir 3 champs :

• le numéro du segment• le numéro de la page du segment• le déplacement dans la page

• Chaque processus a sa table des segments, à chaque segment correspond une table des pages• La segmentation étant une division logique de l’espace des @ du programmes, c’est au programmeur de définir les segments, alors que la pagination est l ’affaire du système et du matériel : transparente pour l ’utilisateur

Pagination et segmentation : Application

Supposons qu’une @ en mémoire virtuelle segmentée et paginée nécessite 24 bits organisés de la manière suivante :

segment page offset23…18 17…8 7…0

a) Quelle est la taille en segments, en pages et en mots de cette mémoire virtuelle ?b) Quelle est l’@ octale du 145e mot de la page 111 du 32e segment ?c) A quel mot de quelle page et de quel segment (valeurs décimales) correspond l’@ octale suivante : 41032567 ?

Pagination et segmentation • ExerciceUn ordinateur fournit à chaque processus un espace d'adressage de 65536 octets divisé en pages de 4096 octets. Un programme donné a un segment de code de 32768 octets, un segment de données de 16386 octets et un segment de pile de 15870 octets. Ce programme entrera-t-il dans l'espace d'adressage ? Même question si la taille des pages est de 512 octets. On rappelle qu'une page ne peut contenir les données de 2 segments différents.

Conclusion : S.E. paginé ?

• La majeure partie du S.E. est paginé à cause de sa taille.• Résident en permanence en mémoire centrale :

• le noyau• une partie des programmes de la gestion de la mémoire• une partie des programmes de la gestion des E/S

• Les programmes de service (compilateurs, éditeurs de texte, ..) sont également paginés

• Les programmes s’exécutant dans un mode multiprogrammé n ’ont que qq pages en mémoire centrale.