Ιεραρχίες μνήμης
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Εικονική μνήμη
Η εικονική μνήμη (virtual memory)
παρουσιάζει στις διεργασίες παραπάνω μνήμη από αυτή
που διαθέτει το σύστημα.
Αυτό γίνεται χρησιμοποιώντας
εικονικές διευθύνσεις (virtual addresses) οι οποίες
μεταφράζονται σε πραγματικές από τη
μονάδα διαχείρισης μνήμης (memory management unit).
Πρόσβαση σε γραμμική μνήμη με βάση τις σελίδες
στην αρχιτεκτονική του επεξεργαστή Pentium
Πεδία του κατάλογου σελίδων
Αντικατάσταση σελίδων
Η αντικατάσταση των σελίδων μπορεί να γίνει:
Σχεδιασμός σελιδοποίησης
Επανεκκίνηση εντολής
Μια εντολή μηχανής μπορεί να διακοπεί στη μέση της εκτέλεσής της.
Την επανεκκίνηση της εντολής
-
μπορεί να αναλάβει ο επεξεργαστής
από το σημείο στο οποίο σταμάτησε ή
- το λειτουργικό
σύστημα από την αρχική της κατάσταση.
Θέματα υλοποίησης
Κλείδωμα σελίδων
Σε περίπτωση που μια σελίδα χρησιμοποιείται για την καταχώρηση πίνακα
σελίδων, περιγραφέα ή ως ενταμιευτής εισόδου / εξόδου από / προς κάποιο
περιφερειακό τότε αυτή πρέπει να κλειδωθεί στη μνήμη και να μην
επιτρέπεται η αντικατάστασή της.
Σελιδοποίηση κώδικα και δεδομένων
Σε ορισμένα λειτουργικά συστήματα ο κώδικας μιας διεργασίας και τα
δεδομένα της μπορεί να απεικονίζονται σε σελίδες των οποίων η θέση
στο δίσκο να είναι τα αντίστοιχα αρχεία που περιέχουν τον κώδικα
της διεργασίας ή τα δεδομένα της.
Διαμοιραζόμενες σελίδες
Ειδικά τις σελίδες του κώδικα ή στατικών δεδομένων
(π.χ. το κείμενο βοηθείας μιας εφαρμογής) μπορούν να τις μοιράζονται και
περισσότερες από μια διαδικασίες μια και αυτές δεν μεταβάλλονται.
Διεργασία σελιδοποίησης
Η διεργασία σελιδοποίησης (paging daemon) τρέχει στο
περιθώριο με σκοπό να ερευνά τις σελίδας και να καταγράφει σελίδες που
είναι υποψήφιες για αντικατάσταση.
Βελτιστοποίηση
Η πρόσβαση στον κατάλογο σελίδων είναι ακριβή μια και αυτός βρίσκεται στην
κύρια μνήμη.
Για βελτιστοποίηση της ταχύτητας πρόσβασης πολλές αρχιτεκτονικές υλοποιούν
έναν
ενδιάμεσο ενταμιευτή μετάφρασης (translation lookaside buffer).
Αυτός αποτελεί μια κρυφή μνήμη ειδικού τύπου για τους πίνακες των σελίδων
που χρησιμοποιούνται συχνότερα.
Ο τρόπος πρόσβασης στον ενδιάμεσο ενταμιευτή μετάφρασης είναι βελτιστοποιημένος
για τις ανάγκες του συστήματος της σελιδοποίησης.
Έτσι η πρόσβαση στις θέσεις του πίνακα βασίζεται μόνο στο τμήμα τις διεύθυνσης
που απεικονίζει τη βάση της σελίδας.
Τμηματοποίηση
Μια αρχιτεκτονική μπορεί να υποστηρίξει πολλαπλά ανεξάρτητα γραμμικά
τμήματα (segments) διευθύνσεων.
Τα τμήματα αυτά μπορούν να χρησιμοποιηθούν για να ορίσουν ξεχωριστά:
- κώδικα
- στατικά δεδομένα
- δυναμικά δεδομένα
- στοίβα
- βιβλιοθήκες κώδικα
- πυρήνα του λειτουργικού συστήματος
Με τη χρήση τμημάτων επιτρέπεται η ανεξάρτητη προστασία των τμημάτων,
αλλά και η από κοινού χρήση ορισμένων τμημάτων (π.χ. βιβλιοθηκών).
Επιπλέον, η χρήση των τμημάτων μπορεί να διευκολύνει το φόρτωμα του
προγράμματος επιτρέποντας σε κάθε πρόγραμμα να φορτώνεται σε προκαθορισμένο
γραμμικό τμήμα μνήμης.
Η προστασία ενός τμήματος μπορεί στις περισσότερες περιπτώσεις
να ορίσει άδεια για:
- εκτέλεση
- ανάγνωση
- εγγραφή
Ορισμός τμημάτων στην αρχιτεκτονική Pentium
Προστασία
Στενά συνδεδεμένο με την πρόσβαση στη μνήμη είναι το θέμα της προστασίας.
Μερικοί τύποι προστασίας που υλοποιούνται σε αρχιτεκτονικές είναι οι παρακάτω:
Όρια πρόσβασης σε περιοχές της μνήμης
Για προστασία μεταξύ των προγραμμάτων τα τμήματα ορίζουν την αρχή και
το μήκος τους.
Κάθε πρόσβαση έξω από τα όρια αυτά παγιδεύεται.
Πρόσβαση σε τύπους δεδομένων
Η συχνότερος διαχωρισμός είναι μεταξύ κώδικα και δεδομένων, αλλά έχουν
υπάρξει αρχιτεκτονικές που υποστηρίζουν πλήρες σύστημα τύπων δεδομένων
ανάλογο με αυτό των γλωσσών προγραμματισμού υψηλού επιπέδου.
Στις αρχιτεκτονικές αυτές τα δεδομένα περιέχουν και ορισμένα bit
που ορίζουν τον τύπο τους.
Επίπεδα προστασίας
Για την αποδοτική υλοποίηση λειτουργικών συστημάτων ορίζονται επίπεδα προστασίας.
Τυπικά το επίπεδο προστασίας Ν έχει πρόσβαση στα δεδομένα και τον κώδικα των
επιπέδων Μ όπου Μ > Ν αλλά όχι και το αντίστροφο.
Ένα παράδειγμα χρήσης πολλαπλών επιπέδων προστασίας παρουσιάζεται στην παρακάτω
εικόνα:
Η μετάβαση ανάμεσα σε επίπεδα προστασίας γίνεται μέσω παγίδων,
διακοπών, ή ειδικών δομών δεδομένων (π.χ. call gates).
Έλεγχος εντολών
Ορισμένα επίπεδα προστασίας μπορούν να επιτρέπουν ή να απαγορεύουν
την εκτέλεση συγκεκριμένων εντολών.
Μερικές κατηγορίες εντολών είναι οι παρακάτω:
- εντολές εισόδου εξόδου
- εντολες έλεγχου σελιδοποίησης και τμηματοποίησης,
- ελέγχου του επεξεργαστή (π.χ. HALT)
- ελέγχου κρυφής μνήμης
- πρόσβασης σε καταχωρητές αποσφαλματοποίησης
Με την παγίδευση της εκτέλεσης συγκεκριμένων εντολών μπορεί το λειτουργικό
σύστημα να υλοποιήσει
εικονικές μηχανές (virtual machines).
Διαχείριση κρυφής μνήμης
Η κρυφή μνήμη δεν μπορεί πάντα να συγχρονίζεται αυτόματα με τα περιεχόμενα
της πραγματικής μνήμης.
Μερικές περιπτώσεις που η κρυφή χρειάζεται ειδικό χειρισμό είναι οι παρακάτω:
- είσοδος στοιχείων από περιφερειακά με άμεση πρόσβαση στη μνήμη
- κώδικας που αλλάζει τον εαυτό του
(π.χ. υλοποίηση αποσφαλματωτή)
όταν υπάρχει διαφορετική κρυφή μνήμη για κώδικα και δεδομένα.
- πολλαπλοί επεξεργαστές
- βελτιστοποιημένος κώδικας που γνωρίζει τα στοιχεία που θα χρειαστούν
αργότερα
Για όλες τις παραπάνω περιπτώσεις υπάρχουν συχνά ειδικές εντολές
(π.χ. WBINVD στον Pentium) ή τύποι σελίδων ή τμημάτων που επιτρέπουν τον
άμεσο έλεγχο της κρυφής μνήμης.
Βιβλιογραφία
- Andrew S. Tanenbaum
Η αρχιτεκτονική των υπολογιστών: μια δομημένη προσέγγιση.
Τρίτη αμερικάνικη έκδοση. σ. 375-465. Κλειδάριθμος 1995.
- Andrew S. Tanenbaum
Σύγχρονα λειτουργικά συστήματα. σ. 103-198
Εκδόσεις Παπασωτηρίου, 1993.
- Maurice J. Bach.
The
Design of the UNIX Operating System, pages 271–352.
Prentice-Hall, 1986.
- Bruce Javob and Trevor
Mudge.
Virtual memory: Issues of implementation.
Computer, 31(6):33–43, June 1998.
- Samuel J. Leffler,
Marshall Kirk McKusick, Michael J. Karels, and John S. Quarterman.
The
Design and Implementation of the 4.3BSD Unix Operating System,
pages 109–163.
Addison-Wesley, 1988.
- Andrew S. Tanenbaum.
Operating Systems: Design and Implementation, pages 191–247.
Prentice-Hall, 1987.