Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

Αντικατάσταση ενοτήτων στη λανθάνουσα μνήμη

Δεν είναι δύσκολο να δούμε ότι η επιλογή των ενοτήτων που θα μεταφερθούν στη λανθάνουσα μνήμη επηρεάζει σε μεγάλο βαθμό το λόγο επιτυχίας της λανθάνουσας μνήμης και συνεπώς την ταχύτητα εκτέλεσης των προγραμμάτων.

Όταν εκτελείται ένα πρόγραμμα, ενότητες από την κύρια μνήμη μεταφέρονται στη λανθάνουσα μνήμη έως ότου αυτή γεμίσει. Αφού συμβεί αυτό, όλες οι επόμενες αποτυχίες στη λανθάνουσα μνήμη αναγκαστικά οδηγούν στην αντικατάσταση μιας από τις υπάρχουσες ενότητες με αυτή στην οποία παρουσιάστηκε η αποτυχία.

Αν αντικατασταθεί (δηλαδή διαγραφεί) μια ενότητα και κατόπιν γίνει αναφορά σε κάποια λέξη της ενότητας αυτής, προκαλείται μια νέα αποτυχία λανθάνουσας μνήμης. Αυτό έχει προφανείς αρνητικές συνέπειες στην απόδοση του συστήματος μνήμης. Για το λόγο αυτό, επιδιώκεται η αντικατάσταση εκείνης της ενότητας για την οποία η πιθανότητα να γίνει αναφορά στο άμεσο μέλλον είναι ελάχιστη. Με αυτό το στόχο, και δεδομένου ότι μας είναι άγνωστο ποιες ακριβώς θα είναι οι επόμενες αναφορές μνήμης ενός προγράμματος, υπάρχουν οι ακόλουθες τακτικές αντικατάστασης:

- Αντικατάσταση με βάση το χρόνο παραμονής (First-ln First-Out, FIFO), κατά την οποία αντικαθίσταται κάθε φορά εκείνη η ενότητα που είχε εισαχθεί παλαιότερα στη λανθάνουσα μνήμη.

- Αντικατάσταση με βάση το χρόνο τελευταίας προσπέλασης (Least Recently Used, LRU), κατά την οποία αντικαθίσταται κάθε φορά εκείνη η ενότητα στην οποία έχει να γίνει αναφορά για περισσότερο χρόνο.

Και οι δύο αυτές μέθοδοι προσπαθούν να εκμεταλλευθούν την τοπικότητα αναφοράς των προγραμμάτων, προκειμένου να προβλέψουν την ενότητα με τη μικρότερη πιθανότητα αναφοράς. Από αυτήν την άποψη, η μέθοδος LRU είναι η πιο αποτελεσματική. Η υλοποίησή της, όμως, είναι πιο πολύπλοκη από ό,τι η FIFO, επειδή πρέπει να κρατά και να επεξεργάζεται στοιχεία για το χρόνο στον οποίο γίνεται προσπέλαση σε κάθε ενότητα της λανθάνουσας μνήμης.