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

Αναζήτηση

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

Η τοπικότητα αναφοράς για τα προγράμματα και τα δεδομένα

Η σπουδαιότερη ιδιότητα που χαρακτηρίζει την εκτέλεση των προγραμμάτων των υπολογιστών είναι η τοπικότητα της αναφοράς (locality of reference). Όταν ένα πρόγραμμα εκτελείται από την ΚΜΕ, η επόμενη εντολή που θα ανακληθεί κάθε φορά από τη μνήμη και θα εκτελεστεί στην ΚΜΕ θα ανήκει πιθανότατα σε κάποια γειτονική θέση σε σχέση με αυτή που εκτελέστηκε αμέσως προηγουμένως.

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

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

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

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

Ένα πρόγραμμα μαθηματικών, που εκτελεί πράξεις σε πίνακες, αποθηκεύει τα στοιχεία των πινάκων κατά γραμμές στη μνήμη. Ο πίνακας του σχήματος, που έχει διαστάσεις 4x4, αποθηκεύεται ξεκινώντας από τη διεύθυνση 8270(16) της μνήμης.

Όπως βλέπουμε και στο σχήμα, τα περιεχόμενα του πίνακα αποθηκεύονται σε συνεχόμενες θέσεις της μνήμης. Όταν π.χ. το πρόγραμμα εκτελεί μια πράξη που χρησιμοποιεί τον πίνακα κατά γραμμές, θα προσπελάσει με τη σειρά όλες τις θέσεις μνήμης που του αναλογούν, ξεκινώντας από τη διεύθυνση 8270, και συνεχίζοντας μέχρι την 827F.

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

Στο εσωτερικό του επεξεργαστή αυτή η μέθοδος εφαρμόζεται με τη λανθάνουσα μνήμη (cache memory), την οποία θα δούμε αναλυτικά στο Μάθημα 4.4. Η μνήμη αυτή κρατά τα δεδομένα που χρησιμοποιούνται συχνά. Έτσι αυτά είναι άμεσα διαθέσιμα για χρήση και δεν είναι απαραίτητη μία εξωτερική επικοινωνία με την κύρια μνήμη.

Η ίδια μέθοδος εφαρμόζεται και στο σύστημα της εικονικής μνήμης (virtual memory), την οποία διαχειρίζεται το λειτουργικό σύστημα (θα παρουσιαστεί στο Κεφάλαιο 9). Εκεί η κύρια μνήμη του συστήματος παίζει το ρόλο της μικρής και γρήγορης μνήμης, ενώ η «αργή» και μεγαλύτερη σε μέγεθος μνήμη βρίσκεται σε κάποια περιφερειακή συσκευή, συνήθως στο σκληρό δίσκο.