Ιεραρχίες μνήμης

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Εικονική μνήμη

Η εικονική μνήμη (virtual memory) παρουσιάζει στις διεργασίες παραπάνω μνήμη από αυτή που διαθέτει το σύστημα. Αυτό γίνεται χρησιμοποιώντας εικονικές διευθύνσεις (virtual addresses) οι οποίες μεταφράζονται σε πραγματικές από τη μονάδα διαχείρισης μνήμης (memory management unit).
Πρόσβαση σε γραμμική μνήμη με βάση τις σελίδες στην αρχιτεκτονική του επεξεργαστή Pentium


Πεδία του κατάλογου σελίδων

Αντικατάσταση σελίδων

Η αντικατάσταση των σελίδων μπορεί να γίνει:

Σχεδιασμός σελιδοποίησης

Επανεκκίνηση εντολής

Μια εντολή μηχανής μπορεί να διακοπεί στη μέση της εκτέλεσής της. Την επανεκκίνηση της εντολής

Θέματα υλοποίησης

Κλείδωμα σελίδων

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

Σελιδοποίηση κώδικα και δεδομένων

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

Διαμοιραζόμενες σελίδες

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

Διεργασία σελιδοποίησης

Η διεργασία σελιδοποίησης (paging daemon) τρέχει στο περιθώριο με σκοπό να ερευνά τις σελίδας και να καταγράφει σελίδες που είναι υποψήφιες για αντικατάσταση.

Βελτιστοποίηση

Η πρόσβαση στον κατάλογο σελίδων είναι ακριβή μια και αυτός βρίσκεται στην κύρια μνήμη. Για βελτιστοποίηση της ταχύτητας πρόσβασης πολλές αρχιτεκτονικές υλοποιούν έναν ενδιάμεσο ενταμιευτή μετάφρασης (translation lookaside buffer). Αυτός αποτελεί μια κρυφή μνήμη ειδικού τύπου για τους πίνακες των σελίδων που χρησιμοποιούνται συχνότερα. Ο τρόπος πρόσβασης στον ενδιάμεσο ενταμιευτή μετάφρασης είναι βελτιστοποιημένος για τις ανάγκες του συστήματος της σελιδοποίησης. Έτσι η πρόσβαση στις θέσεις του πίνακα βασίζεται μόνο στο τμήμα τις διεύθυνσης που απεικονίζει τη βάση της σελίδας.

Τμηματοποίηση

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

Η προστασία ενός τμήματος μπορεί στις περισσότερες περιπτώσεις να ορίσει άδεια για:


Ορισμός τμημάτων στην αρχιτεκτονική Pentium

Προστασία

Στενά συνδεδεμένο με την πρόσβαση στη μνήμη είναι το θέμα της προστασίας. Μερικοί τύποι προστασίας που υλοποιούνται σε αρχιτεκτονικές είναι οι παρακάτω:

Όρια πρόσβασης σε περιοχές της μνήμης

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

Πρόσβαση σε τύπους δεδομένων

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

Επίπεδα προστασίας

Για την αποδοτική υλοποίηση λειτουργικών συστημάτων ορίζονται επίπεδα προστασίας. Τυπικά το επίπεδο προστασίας Ν έχει πρόσβαση στα δεδομένα και τον κώδικα των επιπέδων Μ όπου Μ > Ν αλλά όχι και το αντίστροφο. Ένα παράδειγμα χρήσης πολλαπλών επιπέδων προστασίας παρουσιάζεται στην παρακάτω εικόνα:

Η μετάβαση ανάμεσα σε επίπεδα προστασίας γίνεται μέσω παγίδων, διακοπών, ή ειδικών δομών δεδομένων (π.χ. call gates).

Έλεγχος εντολών

Ορισμένα επίπεδα προστασίας μπορούν να επιτρέπουν ή να απαγορεύουν την εκτέλεση συγκεκριμένων εντολών. Μερικές κατηγορίες εντολών είναι οι παρακάτω: Με την παγίδευση της εκτέλεσης συγκεκριμένων εντολών μπορεί το λειτουργικό σύστημα να υλοποιήσει εικονικές μηχανές (virtual machines).

Διαχείριση κρυφής μνήμης

Η κρυφή μνήμη δεν μπορεί πάντα να συγχρονίζεται αυτόματα με τα περιεχόμενα της πραγματικής μνήμης. Μερικές περιπτώσεις που η κρυφή χρειάζεται ειδικό χειρισμό είναι οι παρακάτω: Για όλες τις παραπάνω περιπτώσεις υπάρχουν συχνά ειδικές εντολές (π.χ. WBINVD στον Pentium) ή τύποι σελίδων ή τμημάτων που επιτρέπουν τον άμεσο έλεγχο της κρυφής μνήμης.

Βιβλιογραφία