Leçon
La théorie — Remplacement de pages : FIFO, LRU et la politique optimale
La mémoire est divisée en cadres de même taille, et les données du programme en pages de cette même taille. Chaque page peut donc occuper n’importe quel cadre. La chaîne de références est la suite des pages auxquelles le programme accède. Un accès à une page absente de la mémoire provoque un défaut de page : la page est chargée et, si aucun cadre n’est libre, une politique de remplacement choisit la page à retirer. Une politique présente l’anomalie de Bélády sur une chaîne lorsqu’elle provoque davantage de défauts avec F + 1 cadres qu’avec F cadres.
Ce que signifie chaque symbole
F- le nombre de cadres
n- le nombre de pages de la boucle (exercice résolu)
r- le nombre de parcours de la boucle
- Suppose
- On utilise la pagination à la demande : une page n’est chargée que lorsqu’elle est demandée. La mémoire est vide au départ ; le premier accès à chaque page provoque donc un défaut, quelle que soit la politique. Si plusieurs pages ne seront plus utilisées, OPT retire ici celle dont le numéro est le plus petit. Chaque référence porte sur une seule page. On ne distingue pas les lectures des écritures, et retirer une page ne coûte rien. Une mise en œuvre exacte de LRU exige de connaître la date de chaque accès à la mémoire. Cet enregistrement étant trop coûteux, les noyaux utilisent des approximations fondées sur un bit de référence par page ; l’algorithme de l’horloge est le plus connu.
Problème entièrement résolu
-
Quand chaque référence provoque un défaut avec LRU 5 étapes
Cliquez sur Boucle, OPT et repérez les étapes de ses 7 défauts. Considérez ensuite un programme qui calcule la somme des éléments d’un tableau occupant 100 pages, qu’il parcourt 1 000 fois, avec 99 cadres. Combien de défauts LRU provoque-t-il ? Et OPT ? Que se passe-t-il avec un 100ᵉ cadre ?
Ouvrez ce problème dans l'outil
-
Dans la simulation, les cinq premières références provoquent un défaut : quatre remplissent les cadres vides, et la cinquième entraîne le retrait d’une page. Les défauts suivants surviennent aux étapes 9 et 13, espacés de quatre références : 5 + 2 = 7.
-
Avec n − 1 cadres pour une boucle de n pages, une seule page de la boucle est absente de la mémoire. Lors d’un défaut, la page dont la prochaine utilisation est la plus lointaine est celle qui vient d’être lue : elle sera demandée de nouveau après n − 1 références. Au dernier parcours, certaines pages ne seront plus utilisées ; OPT peut alors retirer l’une d’elles. En retirant la page qui vient d’être lue, on conserve en mémoire les pages des n − 2 références suivantes. Le prochain défaut survient donc n − 1 références plus tard.
-
LRU avec 99 cadres : lorsqu’un accès à la page p provoque un défaut, toutes les autres pages sont dans les cadres. Celle dont la dernière utilisation est la plus ancienne est p + 1, précisément celle que la boucle demande ensuite. Chacune des 100 × 1 000 = 100 000 références provoque donc un défaut, comme dans la simulation où les 15 références en provoquaient un. FIFO retire les mêmes pages.
-
OPT : les 99 premières références remplissent les cadres. À partir de la 100ᵉ, un défaut survient toutes les 99 références, aux références 100, 199, 298, … Il y en a donc 1 + ⌊(100 000 − 100) / 99⌋ = 1 + 1 009 = 1 010. Le total est de 99 + 1 010 = 1 109, soit n + ⌊n(r − 1)/(n − 1)⌋ avec n = 100 et r = 1 000.
-
Avec un 100ᵉ cadre, le tableau tient entièrement en mémoire : chacune des trois politiques provoque 100 défauts, un par page, puis aucun après le premier parcours.
Réponse
LRU : 100 000 défauts ; OPT : 1 109 ; avec un cadre supplémentaire : 100. Une boucle qui dépasse la mémoire d’une page est le pire cas pour LRU. Le cadre qui manquait suffit ici à diviser le nombre de défauts par mille.
-
Parcours
Ce qu’une structure de données rend peu coûteux
Références (1)
- The first insight's date and attribution: the anomaly, and its formal treatment for FIFO: L. A. Belady, R. A. Nelson and G. S. Shedler, "An anomaly in space-time characteristics of certain programs running in a paging machine," Communications of the ACM 12(6), 349–353, June 1969.