web-dev-qa-db-fra.com

Je ne comprends pas l'anomalie de Belady

Ainsi, Belady's Anomaly déclare que lors de l'utilisation d'une politique de remplacement de page FIFO, lors de l'ajout d'espace de page, nous avons davantage de défauts de page.

Mon intuition dit que nous devrions moins ou au plus autant de fautes de page que nous ajoutons plus d'espace de page.

Si nous considérons une file d'attente FIFO comme un canal, ajouter plus d'espace page revient à agrandir le canal:

 ____
O____O  size 4

 ________
O________O  size 8

Alors, pourquoi voudriez-vous avoir plus de fautes de page? Mon intuition dit qu’avec un tuyau plus long, il faudrait un peu plus de temps pour commencer à avoir des défauts de page (ainsi, avec un tuyau infini, il n’y aurait pas de défaut de page) et vous auriez autant de défauts de page et de souvent comme avec un tuyau plus petit.

Quel est le problème avec mon raisonnement?

30
devoured elysium

Lorsque vous utilisez la FIFO, l'augmentation du nombre de pages peut augmenter le taux de pannes dans certains modèles d'accès, car si vous avez plus de pages, les pages récemment demandées peuvent rester plus longtemps au bas de la file d'attente FIFO.

Considérons la troisième fois que "3" est demandé dans l'exemple wikipedia ici: http://en.wikipedia.org/wiki/Belady%27s_anomaly

Les défauts de page sont marqués d'un "f".

1:

Page Requests   3    2    1    0    3    2    4    3    2    1    0    4
Newest Page     3f   2f   1f   0f   3f   2f   4f   4    4    1f   0f   0
                     3    2    1    0    3    2    2    2    4    1    1
Oldest Page               3    2    1    0    3    3    3    2    4    4

2:

Page Requests   3    2    1    0    3    2    4    3    2    1    0    4
Newest Page     3f   2f   1f   0f   0    0    4f   3f   2f   1f   0f   4f
                     3    2    1    1    1    0    4    3    2    1    0
                          3    2    2    2    1    0    4    3    2    1
Oldest Page                    3    3    3    2    1    0    4    3    2

Dans le premier exemple (avec moins de pages), il y a 9 défauts de page.

Dans le deuxième exemple (avec plus de pages), il y a 10 défauts de page.

Lors de l'utilisation de FIFO, augmenter la taille du cache modifie l'ordre dans lequel les éléments sont supprimés. Ce qui, dans certains cas, peut augmenter le taux de pannes.

L'Anomalie de Belady ne dit rien sur la tendance générale des taux de fautes en ce qui concerne la taille du cache. Donc, votre raisonnement (à propos de l'affichage du cache sous forme de canal), dans le cas général n'est pas faux.

En résumé: Belady's Anomaly signale qu’il est possible d’exploiter le fait que des tailles de cache plus grandes peuvent provoquer la remontée d’éléments du cache dans la file FIFO plus tard Les tailles de cache doivent avoir un taux de défaillance plus élevé sous un modèle d'accès particulier (et éventuellement rare).

32
Olhovsky

Cette déclaration est fausse car elle est trop généralisée:

L’anomalie de Belady indique que lorsqu’on utilise une politique de remplacement de page FIFO, lorsqu’on ajoute plus d’espace de page, il y a plus de défauts de page.

Ceci est une version corrigée:

"L'anomalie de Belady stipule que lors de l'utilisation d'une règle de remplacement de page FIFO, lors de l'ajout de plus d'espace de page, les modèles d'accès à la mémoire certains entraîneront davantage de défauts de page."

En d'autres termes ... si l'anomalie est observée dépend du modèle d'accès réel à la mémoire.

7
Tim Lovell-Smith

L’anomalie de Belady se produit dans l’algorithme de remplacement de page qui ne suit pas l’algorithme de pile. Cela peut parfois arriver dans FIFO, même lors d'un remplacement de page aléatoire, mais pas LRU ou optimal.

1
Surajit