GEF 435 Principes des systèmes d’exploitation Algorithmes de remplacement de pages pt I (Tanenbaum 4.4)
Revue Quel problème est-ce que les tables de pages multiniveaux résoudrent? Dans un Répertoire de page actives (RPA – TLB), quel genre de mémoire doit on avoir pour accélérer les recherches? Pour un système avec une mémoire très, très grande, quelle est notre solution pour remplacer les tables de pages qui seraient effarantes? The solve the problem of a page table that gets too large. The memory is known as associative memory. It compares your key to all entries simultaneously and outputs the one entry that matches that key, if any. The solution to the overwhelming size of the page table is the Inverted Page Table where we track only the physical addresses mapped to their virtual counterparts.
Algorithmes de replacement de pages On se rappel: la pagination suit un ensemble de règles: Elle permet à un programme d’être chargé en mémoire une page à la fois Il y a un genre de table qui identifie quelle page est chargée dans quel cadre Quand une page est demandée et qu’elle n’est pas en mémoire physique, un défaut de page se produit Le SE doit maintenant charger la page dans la mémoire. Si il n’y a pas de cadre de libre, une page doit être évincée de la mémoire. Quelle page est choisit pour être évincée?
Algorithmes de replacement de pages Il existe un ensemble d’algorithmes qui peuvent être utilisés pour choisir quelle page va être la meilleure candidate pour l’éviction Considérations: Les pages qui vont avoir été modifiées doivent être écrites sur le disque avant l’éviction L’utilisation de l’information d’état tel que les bits d’utilisations (used) et de modifications (dirty) vont être utiles pour prendre cette décision Ces algorithmes sont applicables à d’autres domaines de recherche: caches, serveurs Web, etc... Obviously, we could choose a page at random, but we want good performance out of our system. By evicting a page at random we might find that we need that very page on our next memory reference.
Algorithmes de replacement de pages L’algorithme de remplacement de pages optimal Un algorithme théorique qui représente la décision absolue, sans aucun doute, le meilleur choix pour évincer une page Label chaque cadre de page avec le nombre d’instructions jusqu’à ce qu’on ait besoin de ce cadre Évince la page avec le label le plus haut. Essentiellement on évince la page qui serait la dernière à être utilisée, basé sur les pages en mémoire à l’instant de la décision I say to kick out the page that won’t be needed for the longest time based on the pages in memory at the moment of decision since the page you load in may not be needed ever again...but you can’t evict it yet, can you?
Algorithmes de replacement de pages L’algorithme de remplacement de pages optimal Est-ce que nous pouvons implémenter cet algorithme? Absolument pas. Si nous pouvions déterminer quand chaque page est requise dans le futur basé sur l’état courrant, nous pourrions résoudre le problème de la halte (halting problem)! De plus, les entrées des utilisateurs veulent dire que le futur est imprédictible! Cependant, si un programme est utilisé pour un ensemble particulier d’E/S, il est possible de tracer quelles pages sont requises et dans quel ordre Cet enregistrement peut être utilisé pour des tests de performance pour comparer comment près nos algorithmes réalisables sont de l’algorithme optimal Then, if an algorithm we test for a particular system/program type comes within 1% of the optimal algorithm we know that no matter how much effort is put into improving the algorithm, the maximum gain we can hope for is a mere 1%. Time to go on to something else.
Algorithmes de replacement de pages L’algorithme de remplacement de pages Non Récemment Utilisée (NRU) Cet algorithme utilise les bits de modification et d’utilisation pour déterminer la meilleure candidate pour l’éviction Le matériel doit mettre à jour ces bits à chaque modification ou référence. Ces bits seront seulement effacées par le SE La bit d’utilisation sera remis à zéro périodiquement, par exemple chaque interruption de l’horloge. La bit de modification ne peut pas être remise à zéro jusqu’à ce que la page soit écrite sur le disque. ie: if the page is referenced, the hardware sets the “used” bit. If the page is written to, the hardware sets the “used’ and “dirty” bits.
Algorithmes de replacement de pages L’algorithme de remplacement de pages Non Récemment Utilisée (NRU) Quand un défaut de page arrive, le SE inspecte touts les cadres de pages et les divisent en quatre catégories : Class 0: pas utilisé, pas modifié Class 1: pas utilisé, modifié Class 2: utilisé, pas modifié Class 3: utilisé et modifié Une page est choisit aléatoirement dans la classe la plus basse et est évincée Perhaps I should of utilized the terms “referenced” and “modified” so it doesn’t read “used and dirty” Ask them how we get a class 1 page? In other words, how do we have a page that we’ve never used/referenced, but yet it has been modified? Comes about when the clock interrupt causes the OS to clear the used bit. The dirty bit is never cleared until the page is written to the disk though.
Algorithmes de replacement de pages L’algorithme de remplacement de page Non Récemment Utilisée (NRU) L’idée implicite est qu’il est mieux d’évincer une page modifiée qui n’a pas été utilisée dernièrement (~20 msec) qu’une page non modifiée qui est en grande utilisation Est-ce vraie? Avantages: facile à comprendre et implémenter Désavantages: performance n’est clairement pas optimal, mais adéquate pour plusieurs systèmes
Algorithmes de replacement de pages Premier arrivé, premier sortie PAPS (FIFO) Facile à implémenter. Garde une liste de toutes les page en mémoire en ordre quelles sont arrivées Sur un défaut de page, la page la plus vielle est enlevée et une nouvelle page est ajoutée à la fin de la liste Avantage: Très facile à implémenter Désavantage: Aucune façon de déterminer si la page qui est enlevée est en grande utilisation. L’âge peut être une indication mais n’est pas nécessairement la meilleure indication de l’utilisation d’une page Think about it this way. What is first loaded in a computer? What you need to run the computer, operating system pages.
Algorithmes de replacement de pages Algorithme de deuxième chance Cet algorithme est une modification du PAPS pour le rendre possiblement plus raisonnable Avant d’évincer la page la plus vielle, on vérifie la bit d’utilisation Si la page est en utilisation, même si elle est vielle, elle se voit donner une deuxième chance et son entrée est déplacée vers la fin de la liste, ce qui a pour effet de la rendre comme une nouvelle page. Sa bit d’utilisation est remise à zéro à ce moment La recherche continue de cette façon jusqu’à ce qu’une veille page qui n’a pas été utilisé est trouvé Ask them what happens if all pages were in use. Since the used bit is cleared when the page is moved to the end of the list, we will effectively cycle the entire list and then take the original oldest page.
Algorithmes de replacement de pages L’algorithme de la deuxième chance The numbers above the pages show their time of arrival, but that number doesn’t have to be stored or known to make the algorithm work as long as you know which page is the oldest.
Algorithmes de replacement de pages Algorithme de remplacement de pages de l’horloge L’algo de la deuxième chance peut être lent parce qu’il déplace constamment les pages dans la liste chaînée pour garder les pages dans le bon ordre. Une meilleur approche est de garder les entrées de pages dans une liste circulaire (on peut penser à une sorte d’horloge). Une main pointe à la page la plus vielle. Cette main n’est rien de plus qu’un pointeur à une entrée dans la liste de pages en mémoire
Algorithmes de replacement de pages L’algorithme de l’horloge Quand un défaut de page arrive, la page qui est pointée par la ‘main’ est inspectée. Si elle n’a pas été utilisée, elle est évincée et la main avance à la prochaine position Si la page est en utilisation, la bit d’utilisation est remise à zéro et la main est remise à la prochaine position pour faire une autre vérification Ceci continue jusqu’à ce qu’une page soit trouvée pour être évincée
Algorithmes de replacement de pages The Clock Page Replacement Algorithm How is this different from the Second Chance algorithm? Only in implementation
Algorithmes de replacement de pages L’algo de remplacement de la page la moins récemment utilisée (MRU) (LRU) Une bonne approximation de l’algo optimal est qu’une page qui a été grandement utilisée les dernières instructions va probablement être grandement utilisée dans les quelques prochaines instructions (et le contraire est vrai) Donc, quand un défaut de page ce produit, on évince la page qui n’a pas été utilisé pour le plus long temps Comment est-ce que cela diffère de PAPS? Why is this true, think about locality of references in a program. Different from FIFO in that FIFO only cared about the page in memory the longest, not the longest unused in memory
Algorithmes de replacement de pages L’algo de remplacement de la page MRU Méthode 1: Implémenté dans sa forme pure. Chaque entrée doit être gardée dans une liste chaînée. Chaque fois qu’une page est utilisée elle est déplacée au devant de la liste Une opération très coûteuse même avec du matériel!
Algorithmes de replacement de pages L’algo de remplacement de la page la MRU Méthode 2: Avoir un compteur assez grand (64 bits) qui est incrémenté après chaque instruction. Stock ce numéro dans la table de pages après chaque référence en mémoire. Quand on veut remplacer une page, on évince la page dans la table avec le plus petit compte.
Algorithmes de replacement de pages L’algo de remplacement de la page MRU Méthode 3: Pour un système avec n cadres de page, on maintient une matrice matériel de grandeur n x n bits, initialement chaque entrée est mise à 0. Un truc de pour amuser vos amis!: Quand une page, k, est référencée le matériel met tout les bits de la rangé k à 1 et met tout les bits de la colonne k à 0 La rangé avec la plus petite valeur binaire est la page la moins récemment utilisée et la page est la candidate pour éviction… essayez le!
Algorithmes de replacement de pages L’algo de remplacement de la page la moins récemment utilisé Accédé en ordre: 0,1,2,3,2,1,0,3,2,3 Note, that as far as I can tell, one and only one entry will always be zero (after each has been referenced once) since to make another row zero you would have to reference the “zeroed” page and thus make it non-zero. Is this realizable? Well, for 64000 pages, you would need 64000 entries in hardware of 8KB each = 512MB of registers...not so good. But for 256 entries it’s only 8KB (256 * 256/8) Could probably do that.
Questions? Quiz Time! What algorithms did we see today? Optimal PRA Not Recently Used FIFO Second Chance Clock Least Recently Used What are three ways of implementing Least Recently Used? A linked list A counter of instructions stored for each page table entry A hardware matrix of n x n bits where n is the number of page frames