1 Διαχείριση Μνήμης Γενικά Εναλλαγή (Swapping) Συμπαγής Εκχώρηση (Contiguous Allocation) Σελιδοποίηση (Paging) Κατάτμηση (Segmentation) Κατάτμηση με Σελιδοποίηση (Segmentation with Paging)
2 Γενικά Το πρόγραμμα θα πρέπει να μεταφερθεί στην κύρια μνήμη και να πάρει την μορφή διεργασίας ώστε να εκτελεστεί. Ουρά Εισόδου (Input queue) – διεργασίες στο δίσκο που αναμένουν μεταφορά στην κύρια μνήμη για την εκτέλεση του προγράμματος. Τα προγράμματα χρήστη περνούν από διάφορες φάσεις πριν να ξεκινήσει η εκτέλεσή τους.
3 Απεικόνιση εντολών και δεδομένων στην κύρια μνήμη Στάδιο μεταγλώττισης (Compile): Εάν η θέση μνήμης είναι εκ των προτέρων δεδομένη, μπορεί να προκύψει κώδικας με απόλυτες αναφορές (absolute code); Θα πρέπει να μεταγλωττιστεί εκ νέου εάν η θέση μνήμης αλλάξει. Στάδιο φόρτωσης (Load): πρέπει να προκύψει επανατοποθετήσιμος (relocatable) κώδικας εάν η θέση μνήμης δεν είναι γνωστή στο στάδιο μεταγλώττισης. Στάδιο εκτέλεσης (Execution): Η απεικόνιση καθυστερείται μέχρι το χρόνο εκτέλεσης εάν η διεργασία μπορεί να μετακινηθεί ενώ εκτελείται από το ένα τμήμα μνήμης σε κάποιο άλλο. Απαιτείται υποστήριξη από το υλικό (π.χ., καταχωρητές βάσης και ορίου). Η απεικόνιση των διευθύνσεων (address binding) των εντολών και των δεδομένων σε διευθύνσεις της κυρίας μνήμης μπορεί να πραγματοποιηθεί σε 3 διαφορετικά στάδια:
4 Επεξεργασία προγράμματος
5 Διευθύνσεις: λογικές και φυσικές Η έννοια του χώρου λογικών διευθύνσεων που απεικονίζεται σε ένα διαφορετικό χώρο φυσικών διευθύνσεων και εξαιρετικά σημαντική στη διαχείριση μνήμης. Λογική διεύθυνση – παράγεται από την CPU; Αναφέρεται και ως εικονική διεύθυνση (virtual address). Φυσική διεύθυνση – η διεύθυνση που έχει σημασία για την μονάδα διαχείρισης μνήμης. Οι λογικές και φυσικές διευθύνσεις ταυτίζονται στα σχήματα απεικόνισης compile-time και load-time. Διαφέρουν στην περίπτωση της απεικόνισης διευθύνσεων που πραγματοποιείται σε χρόνο εκτέλεσης.
6 Μονάδα διαχείρισης μνήμης ( MMU ) Τμήμα υλικού που απεικονίζει εικονικές διευθύνσεις σε φυσικές. Στην MMU, η τιμή του καταχωρητή επανατοποθέτησης (relocation) προστίθεται σε κάθε διεύθυνση που παράγεται από μία διεργασία πριν να ζητηθεί από την κ. Μνήμη. Το πρόγραμμα αναφέρεται σε λογικές διευθύνσεις. Ποτέ δεν επεξεργάζεται τις πραγματικές, φυσικές διευθύνσεις.
7 Δυναμική επανατοποθέτηση (relocation)
8 Δυναμική Φόρτωση Κάποια ρουτίνα δεν φορτώνεται παρά μόνο όταν κληθεί Καλύτερη εκμετάλλευση του χώρου μνήμης. Μία ρουτίνα που δεν χρησιμοποιείται δεν φορτώνεται ποτέ στην κύρια μνήμη. Χρήσιμος μηχανισμός όταν μεγάλα τμήματα κώδικα χρησιμοποιούνται για να καλύψουν περιπτώσεις που σπάνια συμβαίνουν. Δεν απαιτείται ιδιαίτερη υποστήριξη από το Λ.Σ.
9 Δυναμική Σύνδεση (Linking) Η σύνδεση καθυστερείται μέχρι τη φάση εκτέλεσης. Ένα μικρό τμήμα κώδικα (καλείται stub) χρησιμοποιείται για να εντοπιστεί η κατάλληλη ρουτίνα σε μία βιβλιοθήκη που βρίσκεται στην κύρια μνήμη. Το Stub αντικαθιστά τον εαυτό του με τη διεύθυνση της ρουτίνας και εκτελεί τη ρουτίνα. Το λειτουργικό σύστημα πρέπει να ελέγξει εάν η ρουτίνα βρίσκεται στο χώρο διευθύνσεων της διεργασίας. Η δυναμική σύνδεση είναι ιδιαίτερα χρήσιμη για βιβλιοθήκες.
10 Υπερθέματα (Overlays) Στην κύρια μνήμη συντηρούνται μόνο τα δεδομένα και οι εντολές που απαιτούνται τη δεδομένη χρονική στιγμή. Ο μηχανισμός των υπερθεμάτων χρησιμοποιείται όταν η διεργασία είναι μεγαλύτερη από το ποσό της κυρίας μνήμης που της έχει εκχωρηθεί. Ο μηχανισμός υλοποιείται από τον χρήστη, δεν απαιτείται ιδιαίτερη υποστήριξη από το λειτουργικό σύστημα, ο σχεδιασμός του προγράμματος είναι αρκετά σύνθετος.
11 Εναλλαγή (Swapping) Μία διεργασία μπορεί προσωρινά να τεθεί εκτός κυρίας μνήμης (swapped out) σε δευτερεύουσα μνήμη, και να επανέλθει στην κύρια μνήμη αργότερα για να συνεχίσει την εκτέλεσή της. Αποθηκευτική περιοχή – γρήγορος σκληρός δίσκος με επαρκές μέγεθος για να φιλοξενήσει αντίγραφα των memory images όλων των χρηστών. Μετακίνηση έξω (Roll out), Μετακίνηση μέσα – παραλλαγή της εναλλαγής που χρησιμοποιείται για αλγορίθμους χρονο- δρομολόγησης βάσει προτεραιοτήτων; Οι διεργασίες χαμηλής προτεραιότητας τίθενται εκτός μνήμης ώστε να φορτωθεί και να εκτελεστεί μία διεργασία υψηλής προτεραιότητας. Μεγάλο τμήμα του χρόνου εναλλαγής (swap time) είναι ο χρόνος μεταφοράς (transfer); ο συνολικός χρόνος μεταφοράς είναι ανάλογος με το όγκο της μνήμης η οποία εναλλάσσεται.
12 Εναλλαγή
13 Συμπαγής Εκχώρηση Η κύρια μνήμη οργανώνεται σε δύο διαμερίσεις (partitions): Το λειτουργικό σύστημα καθώς και το άνυσμα διακοπών συνήθως διατηρούνται στην χαμηλή περιοχή της μνήμης. Οι διεργασίες χρήστη κρατούνται στην υψηλή περιοχή μνήμης. Εκχώρηση μοναδικής διαμέρισης (Single-partition) Ο καταχωρητής επανατοποθέτησης (Relocation) χρησιμοποιείται για να προφυλάξει τις διεργασίες την μία από την άλλη και αποτρέπει την αλλαγή του κώδικα του λειτουργικού συστήματος. Ο καταχωρητής περιέχει την τιμή της χαμηλότερης φυσικής διεύθυνσης; Ο καταχωρητής ορίου περιέχει το εύρος των λογικών διευθύνσεων– κάθε λογική διεύθυνση πρέπει να είναι μικρότερη της τιμής του καταχωρητή ορίου (limit register).
14 Καταχωρητές Επανατοποθέτησης και Ορίου
15 Συμπαγής Εκχώρηση Εκχώρηση πολλαπλών διαμερίσεων (partition) Οπή (Hole) – block διαθέσιμη μνήμης. Οπές διαφόρων μεγεθών βρίσκονται σε διάφορα μέρη της μνήμης. Όταν παρουσιάζεται μία διεργασία, της εκχωρείται μνήμη από την οπή που είναι επαρκώς μεγάλη ώστε να την χωρέσει. Το λειτουργικό σύστημα διατηρεί πληροφορία για: (1) τις δεσμευμένες θέσεις μνήμης (2) τις ελεύθερες διαμερίσεις (οπές) OS process 5 process 8 process 2 OS process 5 process 2 OS process 5 process 2 OS process 5 process 9 process 2 process 9 process 10
16 Δυναμική εκχώρηση μνήμης First-fit: Εκχώρηση της πρώτης οπής η οποία είναι επαρκώς μεγάλη. Best-fit: Εκχώρηση της μικρότερης δυνατής οπής η οποία είναι αρκούντως μεγάλη; Όλη η λίστα ελευθέρων οπών θα πρέπει να σαρωθεί, εκτός αν έχει ταξινομηθεί σύμφωνα με το μέγεθος. Προκύπτει η μικρότερη δυνατή εναπομένουσα οπή. Worst-fit: Εκχώρηση της μεγαλύτερης οπής; Θα πρέπει να ελεγχθεί το σύνολο της λίστας. Παράγει την μεγαλύτερη δυνατή εναπομένουσα οπή. Πρόβλημα: ικανοποίηση μίας αίτησης για μέγεθος n μέσω μίας λίστας των «ελευθέρων» οπών. Τα σχήματα First-fit και best-fit είναι καλύτερα από το worst-fit σχετικά με την ταχύτητα και την εκμετάλλευση του αποθηκευτικού χώρου.
17 Κατακερματισμός (Fragmentation) Εξωτερικός κατακερματισμός–υπάρχει επαρκής συνολικός χώρος για την ικανοποίηση μίας αίτησης, αλλά δεν είναι συμπαγής. Εσωτερικός κατακερματισμός– η εκχωρούμενη μνήμη μπορεί να είναι οριακά μεγαλύτερη από την ζητούμενη; Η διαφορά που προκύπτει στο μέγεθος αναφέρεται σε μνήμη εσωτερική σε μία διαμέριση η οποία όμως δεν χρησιμοποιείται. Ο εξωτερικός κατακερματισμός μπορεί να μειωθεί με σύμπτυξη (compaction) Τα περιεχόμενα την μνήμης ανατοποθετούνται έτσι ώστε όλη η ελεύθερη μνήμη να συμπτυχθεί σε ένα ενιαίο block. Η σύμπτυξη είναι εφικτή μόνο εάν η επανατοποθέτηση είναι δυναμική και πραγματοποιείται σε χρόνο εκτέλεσης.
18 Σελιδοποίηση Ο χώρος λογικών διευθύνσεων μίας διεργασίας μπορεί να μην είναι συνεχόμενος. Στη διεργασία εκχωρείται φυσική μνήμη όταν υπάρχει διαθέσιμη. Η φυσική μνήμη διαιρείται σε block σταθερού μεγέθους που καλούνται πλαίσια - frames (το μέγεθος είναι δύναμη του 2, συνήθως μεταξύ 512 bytes και 8192 bytes). Η λογική μνήμη διαιρείται σε blocks ιδίου μεγέθους που καλούνται σελίδες - pages. Για την εκτέλεση ενός προγράμματος με μέγεθος n σελίδων, θα πρέπει να εντοπιστούν n διαθέσιμα πλαίσια και να φορτωθεί το πρόγραμμα. Η μετάφραση από λογικές σε φυσικές διευθύνσεις γίνεται μέσω ενός πίνακα απεικόνισης που καλείται πίνακας σελίδων (page table). Εμφανίζεται το φαινόμενο του εσωτερικού κατακερματισμού.
19 Σχήμα μετάφρασης διευθύνσεων Η διεύθυνση που παράγεται (ζητείται) από την CPU οργανώνεται ως εξής: Αριθμός Page (p) – χρησιμοποιείται ως δείκτης (index) σε ένα πίνακα σελίδων όπου περιέχεται η διεύθυνση βάσης για κάθε σελίδα στη φυσική μνήμη. Σχετική διεύθυνση (offset) μέσα στη σελίδα (d) – συνδυάζεται με την διεύθυνση βάσης για τον προσδιορισμό της φυσικής διεύθυνσης.
20 Αρχιτεκτονική μετάφρασης διευθύνσεων
21 Παράδειγμα Σελιδοποίησης
22 Παράδειγμα Σελιδοποίησης
23 Διαθέσιμα πλαίσια Πριν από την εκχώρηση Μετά την εκχώρηση
24 Υλοποίηση του πίνακα σελίδων Ο πίνακας σελίδων διατηρείται στη κύρια μνήμη. Ο Page-table base register (PTBR) δείχνει στο πίνακα σελίδων. Ο Page-table length register (PRLR) υποδεικνύει το μέγεθος του πίνακα σελίδων. Σε αυτό το σχήμα η κάθε αναφορά σε δεδομένα ή εντολές απαιτεί δύο προσβάσεις στη μνήμη. Μία για τον πίνακα σελίδων και μία για τη εντολή ή τα δεδομένα. Το πρόβλημα του πλήθος των απαιτούμενων αναφορών (δύο) μπορεί να λυθεί με την χρήση μίας ειδικής hardware cache για γρήγορη αναζήτηση (fast-lookup). Η cache αυτή καλείται συσχετιστική μνήμη (associative memory) ή translation look-aside buffer (TLB)
25 Συσχετιστική Μνήμη Συσχετιστική μνήμη– Παράλληλη αναζήτηση Μετάφραση διευθύνσεων (A´, A´´) Εάν το A´ είναι στη cache, επέστρεψε τον αριθμό πλαισίου. Διαφορετικά επέστρεψε τον αριθμό πλαισίου από τον πίνακα σελίδων Page #Frame #
26 Σελιδοποίηση με TLB
27 Χρόνος Πρόσβασης Αναζήτηση στη cache = χρονικές μονάδες Υπόθεση: ο χρόνος πρόσβαση στη κύρια μνήμη είναι 1 μsec. Hit ratio – ποσοστό των αναφορών που βρίσκουν ένα αριθμό σελίδας στη cache. Το ποσοστό αυτό εξαρτάται από το μέγεθος της συσχετιστικής μνήμης. Hit ratio = Μέσος χρόνος πρόσβασης Κ Κ = (1+ ) + (2+ )(1 – ) = 2 + –
28 Προστασία Μνήμης Η προστασία μνήμης επιτυγχάνεται συσχετίζοντας ένα protection bit με κάθε πλαίσιο. Valid-invalid bit σε κάθε καταχώρηση του πίνακα σελίδων: Το “valid” υποδεικνύει ότι η σχετική σελίδα βρίσκεται στο λογικό χώρο διευθύνσεων της διεργασίας, είναι δηλαδή μία έγκυρη σελίδα. Το “invalid” υποδεικνύει ότι η σελίδα δεν ανήκει στο λογικό χώρο διευθύνσεων της διεργασίας.
29 Valid (v) / Invalid (i) Bits
30 Δομή πίνακα σελίδων Ιεραρχική σελιδοποίηση Κατακερματισμένοι (Hashed) Πίνακες Σελίδων Αντεστραμμένοι πίνακες σελίδων
31 Ιεραρχικοί Πίνακες Σελίδων Ο λογικός χώρος διευθύνσεων οργανώνεται σε πολλαπλούς πίνακες σελίδων. Παράδειγμα: πίνακας σελίδων δύο επιπέδων.
32 Παράδειγμα: σελιδοποίηση 2 επιπέδων Μία λογική διεύθυνση (σε μηχανή των 32-bit με μέγεθος σελίδας 4K) οργανώνεται ως εξής: Αριθμό σελίδας : 20 bits. Σχετική διεύθυνση (offset) μέσα στη σελίδα : 12 bits. Ο πίνακας σελίδων επίσης σελιδοποιείται: ο αριθμός σελίδας διαιρείται ως εξής: Αριθμός σελίδας:10-bit. Σχετική διεύθυνση: 10-bit. Έτσι, η λογική διεύθυνση οργανώνεται ως εξής: όπου p i είναι δείκτης στον εξωτερικό (outer) πίνακα σελίδων, και p 2 είναι η μετακίνηση μέσα στη σελίδα στην οποία δείχνει ο εξωτερικός πίνακας. page number page offset pipi p2p2 d 10 12
33 Πίνακας Σελίδων δύο επιπέδων
34 Μετάφραση διεύθυνσης Μετάφραση διεύθυνσης για αρχιτεκτονική σελιδοποίησης 2 επιπέδων 32-bits
35 Κατακερματισμένοι πίνακες σελίδων Συνήθης πρακτική για χώρους διευθύνσεων > 32 bits. Ο αριθμός σελίδας γίνεται hashed στο πίνακα σελίδων. Ο πίνακας σελίδων περιέχει μία αλυσίδα από στοιχεία που έχουν γίνει hashed στην ίδια θέση του πίνακα. Οι αριθμοί σελίδας αναζητούνται στη αλυσίδα. Εάν εντοπιστούν (match), εξάγεται η τιμή του πλαισίου της κυρίας μνήμης που φιλοξενεί τη σελίδα.
36 Κατακερματισμένος πίνακας σελίδων
37 Αντεστραμμένος πίνακας σελίδων Μία καταχώρηση για κάθε πλαίσιο πλαίσιο της κύριας μνήμης. Η καταχώρηση περιέχει την εικονική διεύθυνση της σελίδας που φιλοξενείται στην κύρια μνήμη, μαζί με πληροφορία για τη διεργασία από την οποία προέρχεται η σελίδα. Μειώνει τις απαιτήσεις μνήμης για την αποθήκευση του πίνακα σελίδων αλλά αυξάνει το χρόνο που απαιτείται για την αναζήτηση μίας σελίδας.
38 Αρχιτεκτονική Αντεστραμμένου Πίνακα Σελίδων
39 Διαμοιραζόμενες σελίδες Διαμοιραζόμενος κώδικας Ένα αντίγραφο κώδικα σε κατάσταση read-only (reentrant κώδικας) είναι κοινό για πολλές διεργασίες (παραδείγματα: κειμενογράφοι, μεταφραστές). Ο διαμοιραζόμενος κώδικα πρέπει να εμφανίζεται στη ίδια θέση του λογικού χώρου διευθύνσεων για όλες τις διεργασίες. Ιδιωτικός (Private) κώδικα και δεδομένα Η κάθε διεργασία κρατάει ένα ξεχωριστό αντίγραφο κώδικα και δεδομένων. Οι σελίδες του ιδιωτικού κώδικα και των δεδομένων μπορούν να εμφανιστούν οπουδήποτε στο λογικό χώρο διευθύνσεων.
40 Παράδειγμα διαμοιραζόμενων σελίδων
41 Κατάτμηση Σχήμα διαχείρισης μνήμης που υιοθετεί την οπτική του χρήστη για τα διάφορα τμήματα μνήμης. Το κάθε πρόγραμμα είναι μία συλλογή από τμήματα. Ένα τμήμα αντιπροσωπεύει μία λογική οντότητα όπως: το κυρίως πρόγραμμα, διαδικασίες - ρουτίνες, μεθόδους, αντικείμενα, τοπικές και καθολικές μεταβλητές, στοίβα, πίνακα συμβόλων, πίνακες
42 Το πρόγραμμα από την οπτική του χρήστη
43 Κατάτμηση user spacephysical memory space
44 Αρχιτεκτονική κατάτμησης Η λογική διεύθυνση είναι μία διπλέττα:, Πίνακας τμημάτων (Segment table) – απεικονίζει δισδιάστατες φυσικές διευθύνσεις. Η κάθε καταχώρηση του πίνακα περιέχει: base–αναφέρεται στη φυσική διεύθυνση από την οποία ξεκινούν τα τμήματα τα οποία βρίσκονται στη κεντρική μνήμη. limit–καθορίζει το μήκος του τμήματος. Segment-table base register (STBR) υποδεικνύει την θέση του πίνακα τμημάτων στην κύρια μνήμη. Segment-table length register (STLR) υποδεικνύει τον αριθμό των τμημάτων που χρησιμοποιούνται από ένα πρόγραμμα: ο αριθμός ενός τμήματος s είναι έγκυρος s < STLR.
45 Αρχιτεκτονική Κατάτμησης Προστασία. Σε κάθε καταχώρηση του πίνακα τμημάτων υπάρχει: Bit εγκυρότητας (validation) = 0 το segment δεν είναι έγκυρο Δικαιώματα read/write/execute Bits προστασίας σχετίζονται με τα τμήματα. Ο διαμοιρασμός κώδικα μπορεί να γίνει στο επίπεδο του τμήματος. Εφόσον τα τμήματα δεν έχουν σταθερό μήκος, η εκχώρηση μνήμης είναι ένα πρόβλημα δυναμικής ανάθεσης χώρου.
46 Hardware Κατάτμησης
47 Παράδειγμα Κατάτμησης
48 Διαμοιρασμός Τμημάτων
49 Κατάτμηση με σελιδοποίηση–MULTICS Το σύστημα MULTICS λύνει τα προβλήματα του εξωτερικού κατακερματισμού και των μεγάλων χρόνων αναζήτησης σελιδοποιώντας τα τμήματα. Η λύση αυτή είναι διαφορετική από την αμιγή κατάτμηση: ο πίνακας τμημάτων περιέχει καταχωρήσεις με την διεύθυνση βάσης του πίνακα σελίδων για το κάθε τμήμα.
50 MULTICS Σχήμα μετάφρασης διευθύνσεων
51 Κατάτμηση με σελιδοποίηση–Intel 386 Ο Intel 386 εφαρμόζει κατάτμηση με σελιδοποίηση για την διαχείριση της κυρίας μνήμης με ένα σχήμα σελιδοποίηση δύο επιπέδων.
52 Μετάφραση διευθύνσεων Intel 30386