Διαχείριση Μνήμης (Memory Management)

Σχετικά έγγραφα
ιαχείριση Μνήµης (Memory Management)

Διαχείριση Κύριας Μνήμης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Λειτουργικά Συστήματα (Λ/Σ)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

Λειτουργικά Συστήματα Η/Υ

Μάθημα 8: Διαχείριση Μνήμης

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα

Ενότητα 7 (Κεφάλαιο 7) Διαχείριση Μνήμης. Περιεχόμενα. Ανάγκη για διαχείριση μνήμης. Βασικές αρχές διαχείρισης μνήμης.

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Λειτουργικά Συστήματα

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Διδάσκοντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη Λειτουργικά Συστήματα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Λειτουργικά Συστήματα

Εικονική Μνήμη (Virtual Memory)

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Λειτουργικά Συστήματα

Εικονική Μνήμη (Virtual Μemory)

Εισαγωγή στα Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

Αρχιτεκτονική Υπολογιστών

Λειτουργικά Συστήματα (ΗΥ222)

Εικονική Μνήμη (1/2)

Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο Τ.Ε.Ι. Σερρών

Λειτουργικά Συστήματα

Εισαγωγή στα Λειτουργικά

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα (ΗΥ321)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 9

Η ιεραρχία της μνήμης

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Υλισµικό διαχείρισης µνήµης (Memory management hardware)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Υλισμικό Διαχείρισης Μνήμης (Memory Management Hardware)

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

Κεφάλαιο 3. Διδακτικοί Στόχοι

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

πίνακας σελίδων Bit Παρουσίας Αριθμός Πλαισίου

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εικονική Μνήμη (Virtual Μemory)

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Λειτουργικά Συστήματα (Λ/Σ)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Διδάσκοντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΛΟΓΙΣΜΙΚΟ (software)

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

ιαχείριση Μνήµης Κεφάλαιο 7 Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

ENOTHTA 8 IAXEIPIΣH KAI ΣYΣTHMATA APXEIΩN

ιαχείριση Μνήµης (Memory Management)

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΕΠΑΝΑΛΗΨΗ

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Κεφάλαιο 4: Λογισμικό Συστήματος

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Ε-85: Ειδικά Θέµατα Λογισµικού

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Λειτουργικά Συστήματα (Λ/Σ)

Αρχιτεκτονική υπολογιστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Προγραμματισμός Ι (HY120)

Λειτουργικά Συστήματα (ΗΥ321)

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

ΤΜΗΜΑ ΜΗΥΤΔ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (ΗΥ222) ΔΙΔΑΣΚΩΝ: ΧΡΗΣΤΟΣ Δ. ΑΝΤΩΝΟΠΟΥΛΟΣ Τελική Εξέταση Σεπτεμβρίου 2009, Χρόνος: 2:30

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ,

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

Transcript:

Διαχείριση Μνήμης (Memory Management)

Εισαγωγή Βασικές έννοιες και μοντέλο εκτέλεσης Εναλλαγή (swapping) Ανάθεση σε συνεχόμενα τμήματα (contiguous allocation) Σελιδοποίηση (paging) Τμηματοποίηση (segmentation) Τμηματοποίηση με σελιδοποίηση (segmentation with paging) Σελίδα 2

Βήματα Επεξεργασίας Προγράμματος Μετάφραση: Ο πηγαίος κώδικας (γλώσσα ψηλού επιπέδου) μεταφράζεται και δημιουργείται ο κώδικας μηχανής Διασύνδεση: Ο κώδικας μηχανής συνδέεται με άλλα μεταφρασμένα κομμάτια κώδικα και δημιουργείται το εκτελέσιμο Φόρτωση: Το εκτελέσιμο φορτώνεται στην κύρια μνήμη του Η/Υ, συνδέοντάς το με βιβλιοθήκες που ήδη υπάρχουν στο σύστημα Δυναμική φόρτωση: Κομμάτια από εκτελέσιμο κώδικα φορτώνονται κατά την διάρκεια της εκτέλεσης, όταν και αν αυτό χρειαστεί (π.χ. δυναμικές βιβλιοθήκες) Σελίδα 3

Σχηματική Αναπαράσταση Βημάτων Επεξεργασίας Προγράμματος Σελίδα 4

Δυναμική Διασύνδεση (Dynamic Linking) Η διασύνδεση αναβάλλεται μέχρι το χρόνο εκτέλεσης Ένα μικρό κομμάτι κώδικα, η παραπομπή (stub), τοποθετείται στην θέση της κλήσης της συνάρτησης μέσα στο πρόγραμμα Χρησιμοποιείται για τον εντοπισμό της αντίστοιχης συνάρτησης βιβλιοθήκης στη μνήμη (καθώς και την έναρξη της διαδικασίας φόρτωσης της βιβλιοθήκης στην μνήμη, αν αυτό δεν έχει ήδη γίνει) Σελίδα 5

Δυναμική Διασύνδεση (συνέχεια) Η παραπομπή αντικαθιστά τον εαυτό της με την διεύθυνση της ρουτίνας που πρέπει να εκτελεστεί Η δυναμική διασύνδεση είναι εξαιρετικά χρήσιμη για τις βιβλιοθήκες Εφόσον επιτρέπεται από το ΛΣ, τα προγράμματα παραπέμπονται στο ίδιο αντίγραφο της βιβλιοθήκης (shared libraries) Σελίδα 6

Δυναμική Φόρτωση (Dynamic Loading) Ο κώδικας προς εκτέλεση δε φορτώνεται πριν πραγματοποιηθεί κάποια κλήση σε αυτόν Κώδικας που δεν καλείται δεν φορτώνεται ποτέ Καλύτερη διαχείριση του χώρου της μνήμης Εξαιρετικά χρήσιμο όταν μεγάλα τμήματα κώδικα χρησιμοποιούνται για το χειρισμό σπάνιων περιπτώσεων Συνήθως πρέπει να αποφασισθεί κατά το σχεδιασμό των προγραμμάτων και δεν απαιτείται ειδική υποστήριξη από το ΛΣ (εκτός από την παροχή ειδικών ρουτινών βιβλιοθηκών) Σελίδα 7

Επικαλυπτόμενα Τμήματα (Overlays) Όταν ο κώδικας του προγράμματος είναι μεγαλύτερος από το μέγεθος της μνήμης που προβλέπεται να του ανατεθεί, ή μεγαλύτερος από την κύρια μνήμη που διαθέτει το σύστημα Τμηματοποίηση του κώδικα (από τον προγραμματιστή) σε κομμάτια των οποίων η εκτέλεση δεν γίνεται ταυτόχρονα Μπορεί να γίνει εναλλαγή των τμημάτων αυτών, έτσι ώστε να χρησιμοποιείται η ίδια περιοχή κύριας μνήμης του συστήματος Αρκετά πολύπλοκο να υλοποιηθεί (για τον προγραμματιστή) Τα σύγχρονα ΛΣ επιτυγχάνουν (σχεδόν) το ίδιο αποτέλεσμα με άλλες πιο απλές (για τον προγραμματιστή) μεθόδους Σελίδα 8

Σχηματική Αναπαράσταση Overlays Προγράμματος με 2 Τμήματα Σελίδα 9

Προσδιορισμός Διευθύνσεων Μνήμης Για να τρέξει ένα πρόγραμμα χρήστη (μέσω μιας διεργασίας) πρέπει ο κώδικας του να φορτωθεί στην κύρια μνήμη Ο προσδιορισμός των πραγματικών διευθύνσεων μνήμης στους οποίους αναφέρεται το πρόγραμμα μπορεί να συμβεί: Κατά την μετάφραση Κατά την φόρτωση Κατά την εκτέλεση Προφανώς ο προσδιορισμός διευθύνσεων μνήμης εξαρτάται από την περιοχή της μνήμης όπου τοποθετείται το πρόγραμμα Σελίδα 10

Προσδιορισμός Διευθύνσεων Μνήμης κατά τη Διάρκεια της Μετάφρασης Η περιοχή μνήμης που θα «κατοικήσει» το πρόγραμμα είναι γνωστή εκ των προτέρων Δημιουργείται απόλυτος (absolute) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο μεταφραστής και χειρίζεται το πρόγραμμα είναι και οι πραγματικές διευθύνσεις την κύριας μνήμης Πρέπει να ξαναγίνει μεταγλώττιση του προγράμματος, αν για κάποιο λόγο ο κώδικας πρέπει να τοποθετηθεί σε διαφορετική περιοχή Σελίδα 11

Προσδιορισμός Διευθύνσεων Μνήμης κατά τη Διάρκεια της Φόρτωσης Η περιοχή μνήμης που θα «κατοικήσει» το πρόγραμμα δεν είναι γνωστή εκ των προτέρων Η πραγματική θέση του προγράμματος αποφασίζεται κατά την φόρτωσή του στην κυρίως μνήμη Δημιουργείται σχετικός/μετατοπίσιμος (relocatable) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο μεταφραστής και χειρίζεται το πρόγραμμα δίνονται σε σχέση με μια υποθετική αρχική διεύθυνση Οι διευθύνσεις που περιέχει ο κώδικας αναπροσαρμόζονται κατά την φόρτωση (fixup) χρησιμοποιώντας κατάλληλες δομές που έχει δημιουργήσει ο μεταγλωττιστής Σελίδα 12

Προσδιορισμός Διευθύνσεων Μνήμης κατά τη Διάρκεια της Εκτέλεσης Η περιοχή μνήμης που θα «κατοικήσει» το πρόγραμμα δεν είναι γνωστή εκ των προτέρων. Η πραγματική θέση του προγράμματος αποφασίζεται κατά την φόρτωση του στην κυρίως μνήμη Δημιουργείται σχετικός/μετατοπίσιμος (relocatable) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο μεταφραστής και χειρίζεται το πρόγραμμα δίνονται σε σχέση με μια υποθετική αρχική διεύθυνση Η δέσμευση αναστέλλεται μέχρι το χρόνο εκτέλεσης Χρησιμοποιείται έμμεση διευθυνσιοδότηση, συνήθως με υποστήριξη από το υλικό του ΥΣ (π.χ. ειδικοί καταχωρητές βάσης και ορίου) Σελίδα 13

Δέσμευσης Συνεχόμενης Μνήμης (contiguous allocation) Μοντέλο συστήματος / υποθέσεις: Το ΛΣ καταλαμβάνει τις χαμηλότερες διευθύνσεις στη μνήμη και παραμένει φορτωμένο καθ όλη τη διάρκεια λειτουργίας του ΥΣ Οι διεργασίες που δεν έχουν χώρο στη μνήμη φυλάσσονται σε αποθηκευτικό μέσο από το οποίο φορτώνονται στην κύρια μνήμη Προκειμένου να τρέξει μια διεργασία πρέπει να φορτωθεί εξ ολοκλήρου στη μνήμη και να καταλάβει μια συνεχόμενη περιοχή Πως οργανώνουμε τη μνήμη έτσι ώστε να επιτευχθεί ο στόχος της ύπαρξης πολλών ταυτόχρονα διεργασιών στη μνήμη; Σελίδα 14

Κατακερματισμός (fragmentation) Εξωτερικός κατακερματισμός (external fragmentation): Υπάρχει χώρος στη μνήμη που δεν έχει ανατεθεί σε κάποια διεργασία, αλλά δεν είναι συνεχόμενος ώστε να ικανοποιηθεί μια αίτηση Εσωτερικός κατακερματισμός (internal fragmentation): Η μνήμη που ανατίθεται σε μια διεργασία μπορεί να είναι μεγαλύτερη από αυτή που ζητήθηκε, οπότε ο επιπλέον αυτός χώρος «χάνεται» και δεν μπορεί να χρησιμοποιηθεί από καμία διεργασία Περιορισμός εξωτερικού κατακερματισμού με συγχώνευση (compaction): Δυναμική μετατόπιση των προγραμμάτων ώστε να δημιουργηθεί ένα όσο το δυνατόν μεγαλύτερο ελεύθερο τμήμα μνήμης Σελίδα 15

Διαχείριση Μνήμης με Σταθερά Τμήματα Αυτόματη (με την εκκίνηση του ΛΣ) ή «με το χέρι» από το χειριστή του συστήματος, διαίρεση της μνήμης σε τμήματα ή διαμερίσεις (partitions) όχι απαραίτητα του ίδιου μεγέθους που μένουν σταθερά 1 η παραλλαγή: Όταν ελευθερώνεται κάποιο τμήμα, φορτώνεται σε αυτό η διεργασία που βρίσκεται πλησιέστερα στην αρχή της ουράς 2 η παραλλαγή: Όταν ελευθερώνεται κάποιο από τα τμήματα της μνήμης, γίνεται αναζήτηση σε όλη την ουρά εισόδου για τη μεγαλύτερη διεργασία που χωράει στο τμήμα της μνήμης Σελίδα 16

Σχηματική Απεικόνιση 700 Κ Τμήμα 4 Τμήμα 3 400 Κ 300 Κ Τμήμα 2 Τμήμα 1 100 Κ Λειτουργικό Σύστημα 0 Κ Σελίδα 17

Σταθερά Τμήματα Μνήμης (συνέχεια) Είναι ανεπιθύμητο να δεσμεύεται ένα μεγάλο τμήμα για μια μικρή διεργασία, λόγω του εσωτερικού κατακερματισμού που προκαλείται Η δεύτερη παραλλαγή επιτυγχάνει μικρότερο εσωτερικό κατακερματισμό αλλά αδικεί και τις μικρές διεργασίες (που δεν επιλέγονται όσο υπάρχουν μεγαλύτερες) Λύση: Η ύπαρξη ενός τουλάχιστον μικρού τμήματος στη μνήμη Η εφαρμογή μιας παραλλαγής της γήρανσης σε κάθε διεργασία που παρακάμπτεται περισσότερες από k φορές Σελίδα 18

Σταθερά Τμήματα Μνήμης (συνέχεια) Μπορεί να χρησιμοποιείται ξεχωριστή ουρά για κάθε τμήμα μνήμης Έχει νόημα όταν τα μεγέθη των τμημάτων διαφέρουν σημαντικά Γρηγορότερη αναζήτηση κατάλληλης διεργασίας ανά μέγεθος Όταν κάποια ουρά αδειάζει, η αναζήτηση μπορεί να μεταφερθεί στην ουρά του τμήματος με το αμέσως μικρότερο μέγεθος (για να ληφθούν υπ όψη τυχόν διεργασίες που περιμένουν εκεί) Σελίδα 19

Διαχείριση Μνήμης με Μεταβλητά Τμήματα Με την χρήση σταθερών τμημάτων, σημαντικό μέρος της μνήμης μπορεί να χαθεί λόγω εσωτερικού κατακερματισμού Λύση: Σχήμα διαχείρισης της μνήμης σύμφωνα με το οποίο, ο αριθμός, η θέση και το μέγεθος των τμημάτων είναι μεταβλητό Πλεονέκτημα: Καλύτερη εκμετάλλευση της μνήμης Μειονέκτημα: Δυσχερέστερος ο τρόπος παρακολούθησης των μεταβολών της μνήμης (δέσμευση και αποδέσμευση των τμημάτων) Σελίδα 20

Μεταβλητά Τμήματα Μνήμης (συνέχεια) Κάθε στιγμή έχουμε μια λίστα των μεγεθών των τμημάτων μνήμης που είναι διαθέσιμα Η μνήμη ανατίθεται στη διεργασία της ουράς εισόδου που επιλέγεται από τον μακροπρόθεσμο χρονοπρογραμματιστή μέχρι να μη μπορεί να ικανοποιηθεί η αίτηση μνήμης που υπάρχει Για διεργασίες που αναμένεται να «μεγαλώσουν» κατά το χρόνο εκτέλεσης, είναι επιθυμητή η δέσμευση περισσότερης μνήμης από αυτή που ζητείται αρχικά Σελίδα 21

Σχηματική Απεικόνιση Λειτουργίας Συστήματος Ουρά Εισόδου Διεργασία Μνήμη Χρόνος Ξεσπάσματος Ρ1 600Κ 10 Ρ2 1000Κ 5 Ρ3 300Κ 20 Ρ4 700Κ 8 Ρ5 500Κ 15 Σελίδα 22

Σχηματική Απεικόνιση Λειτουργίας Συστήματος (συνέχεια) 0 Κ 0 Κ 0 Κ 0 Κ 0 Κ ΛΣ ΛΣ ΛΣ ΛΣ ΛΣ 400 Κ 400 Κ 400 Κ 400 Κ 400 Κ 1000 Κ Ρ1 1000 Κ Ρ1 1000 Κ Ρ1 Η Ρ1 τερματίζει 1000 Κ Ανάθεση στην Ρ5 900 Κ 1000 Κ Ρ5 Ρ2 Η Ρ2 τερματίζει Ανάθεση στην Ρ4 1700 Κ Ρ4 Ρ4 1700 Κ 1700 Κ Ρ4 2000 Κ 2000 Κ 2000 Κ 2000 Κ 2000 Κ Ρ3 Ρ3 Ρ3 Ρ3 Ρ3 2300 Κ 2300 Κ 2300 Κ 2300 Κ 2300 Κ 2400 Κ 2400 Κ 2400 Κ 2400 Κ 2400 Κ Σελίδα 23

Σχηματική Απεικόνιση process C free process B free compaction process C free process B process A process A Σελίδα 24

Παρακολούθηση Μεταβολών Μνήμης Απαραίτητη προϋπόθεση για την υποστήριξη της διαχείρισης μνήμης με μεταβλητά τμήματα είναι η ύπαρξη μηχανισμών για την παρακολούθηση των μεταβολών της μνήμης Χάρτες δυαδικών ψηφίων (bit maps) Συνδεδεμένες λίστες (linked lists) Σύστημα των φίλων (buddy system) Βασική υπόθεση εργασίας: Δε γνωρίζουμε τίποτα σχετικά με την κατανομή πιθανότητας των αιτήσεων για τμήματα μνήμης και το είδος των διεργασιών Σελίδα 25

Χάρτες Δυαδικών Ψηφίων (bit maps) Υποδιαίρεση της μνήμης σε ατομικά τμήματα. Η κατάσταση κάθε τμήματος σημειώνεται με ένα bit (0 = ελεύθερο) στον χάρτη δυαδικών ψηφίων Όσο πιο μεγάλη η μονάδα υποδιαίρεσης, τόσο μικρότερος ο χάρτης δυαδικών ψηφίων αλλά τόσο μεγαλύτερη και η πιθανότητα εσωτερικού κατακερματισμού Στην πράξη το ΛΣ αναζητά στο χάρτη k συνεχόμενες στοιχειώδεις μονάδες, δηλ. k συνεχόμενα bits να έχουν τιμή 0. Είναι μια «αργή» λειτουργία και έτσι στην πράξη αυτή η τεχνική δεν χρησιμοποιείται συχνά Σελίδα 26

Συνδεδεμένες Λίστες (linked lists) Διατηρείται συνδεδεμένη λίστα, που περιέχει τα δεσμευμένα και τα ελεύθερα τμήματα της μνήμης. Η λίστα είναι ταξινομημένη ως προς τη διεύθυνση των τμημάτων μνήμης Αρχικά η λίστα αποτελείται από ένα μοναδικό στοιχείο, δηλαδή ολόκληρη τη μνήμη ως ένα μεγάλο ελεύθερο τμήμα. Όταν μια διεργασία ζητήσει μνήμη, γίνεται αναζήτηση στην λίστα για να βρεθεί «κατάλληλο» ελεύθερο τμήμα (αν είναι μεγαλύτερο, τότε το τμήμα σπάει σε ένα δεσμευμένο και ένα ελεύθερο τμήμα) Όταν μια διεργασία ολοκληρωθεί, ελέγχονται τα γειτονικά τμήματα της μνήμης, και αν κάποιο είναι κενό γίνεται συγχώνευση (compaction) μειώνοντας το μέγεθος της λίστας Σελίδα 27

Αναπαράσταση Συνδεδεμένης Λίστας A B Γ Δ 5 8 14 24 26 Ρ 0 5 Η 5 3 Ρ 8 6 Ρ 14 10 Η 24 2 Ρ 26 8 Σελίδα 28

Συνδεδεμένες Λίστες (συνέχεια) Η ταξινομημένη ως προς τη διεύθυνση λίστα, κάνει γρηγορότερη την ενημέρωσή της για ολοκλήρωση ή μεταφορά διεργασίας στο δίσκο Όταν ο χώρος της μνήμης παρακολουθείται από ταξινομημένη ως προς τη διεύθυνση λίστα, μπορούν να χρησιμοποιηθούν οι ακόλουθοι αλγόριθμοι χορήγησης μνήμης: Πρώτης τοποθέτησης (First fit) Επόμενης τοποθέτησης (Next fit) Βέλτιστης τοποθέτησης (Best fit) Χειρότερης Τοποθέτησης (Worst fit) Σελίδα 29

Αλγόριθμοι Χορήγησης Μνήμης σε Διεργασία Πρώτης τοποθέτησης: αναζήτηση στη λίστα, μέχρι να βρεθεί ένα μεγάλο κενό, το οποίο διασπάται σε δύο κομμάτια (γρήγορος) Επόμενης τοποθέτησης: Όπως και ο προηγούμενος, ξεκινάει μια αναζήτηση από το σημείο που σταμάτησε την προηγούμενη Βέλτιστης τοποθέτησης: σαρώνει τη λίστα και επιλέγει το μικρότερο κενό που χωράει τη διεργασία (αργός και υπεύθυνος για τη δημιουργία μεγάλης σπατάλης μνήμης) Χειρότερης τοποθέτησης: τοποθετεί τη διεργασία στο μεγαλύτερο τμήμα μνήμης που είναι διαθέσιμο (όχι και τόσο καλή ιδέα) Σελίδα 30

Αλγόριθμοι Χορήγησης Μνήμης σε Διεργασία - Βελτιώσεις Τήρηση δύο ταξινομημένων λιστών, μια για τη μνήμη που κατέχουν διεργασίες και μια για τα κενά (ταξινομημένη ως προς μέγεθος) Ο αλγόριθμος βέλτιστης τοποθέτησης γίνεται εξίσου γρήγορος με τον αλγόριθμο πρώτης τοποθέτησης και ο αλγόριθμος επόμενης τοποθέτησης δεν έχει λόγο ύπαρξης Αλγόριθμος γρήγορης τοποθέτησης (quick fit): Τήρηση διαφορετικών λιστών για τμήματα με μεγέθη που ζητούνται περισσότερο τακτικά Παραλλαγές χρησιμοποιούνται για διαχείριση δυναμικής μνήμης Μειονέκτημα: Όταν μια διεργασία αποχωρεί ο προσδιορισμός των γειτόνων της για να γίνει(;) συγχώνευση «κοστίζει» αρκετά Σελίδα 31

Σύστημα των Φίλων (Buddy System) Υποδιαίρεση μνήμης σε κατηγορίες μεγεθών δυνάμεις του 2 Διαχείριση λίστας ελεύθερων τμημάτων ανά κατηγορία μεγέθους (1ΜByte μνήμης 21 λίστες) Κάθε διεργασία τοποθετείται σε τμήμα με μέγεθος την πλησιέστερη δύναμη του 2 που τη χωράει. Κάθε τμήμα χωρίζεται σε δύο γειτονικά τμήματα ίδιου μεγέθους (το ένα δίνεται στη διεργασία το άλλο εισάγεται στην αμέσως «μικρότερη» λίστα) Πλεονέκτημα: οι συνενώσεις γίνονται μόνο μεταξύ τμημάτων του ίδιου μεγέθους, άρα είναι πολύ γρήγορες Μειονέκτημα: Όλες οι απαιτήσεις ανάγονται σε δυνάμεις του 2, δημιουργώντας εσωτερικό κατακερματισμό Σελίδα 32

Σύστημα των Φίλων (συνέχεια) Απαίτηση για 70Κ Απαίτηση για 35Κ Απαίτηση για 80Κ Απομάκρυνση του Α Απαίτηση για 60Κ Απομάκρυνση του Β Απομάκρυνση του Δ Απομάκρυνση του Γ Αρχικά ένα κενό μεγέθους 1Μ Α 128 256 512 Α Β 64 256 512 Α Β 64 Γ 128 512 128 Β 64 Γ 128 512 128 Β Δ Γ 128 512 128 64 Δ Γ 128 512 256 Γ 128 512 1024 Σελίδα 33

Λογικές και Φυσικές Διευθύνσεις

Λογικός και Φυσικός Χώρος Διευθύνσεων Ο διαχωρισμός μεταξύ του χώρου λογικών διευθύνσεων (logical address space) και του χώρου φυσικών διευθύνσεων (physical address space) είναι κεντρική για ένα (μοντέρνο) ΛΣ Λογική ή ιδεατή διεύθυνση (logical or virtual address): Η διεύθυνση που «βλέπει» η ΚΜΕ του συστήματος Φυσική διεύθυνση (physical address): Οι διευθύνσεις όπως τις «βλέπει» η μονάδα μνήμης του συστήματος Οι λογικές διευθύνσεις συμπίπτουν με τις φυσικές διευθύνσεις σε περιβάλλοντα προσδιορισμού διευθύνσεων κατά την μετάφραση και φόρτωση Οι λογικές διευθύνσεις διαφέρουν από τις φυσικές διευθύνσεις σε περιβάλλοντα προσδιορισμού διευθύνσεων κατά την εκτέλεση Σελίδα 35

Μονάδα Διαχείρισης Μνήμης Memory-Management Unit (MMU) Ειδική συσκευή του υλικού του συστήματος που αντιστοιχίζει τις λογικές διευθύνσεις σε φυσικές διευθύνσεις Το πρόγραμμα του χρήστη ασχολείται με τις λογικές διευθύνσεις και δε βλέπει τις πραγματικές φυσικές διευθύνσεις (οι οποίες υπολογίζονται από τις λογικές διευθύνσεις και την MMU διαφανώς προς το πρόγραμμα του χρήστη) Σελίδα 36

Μονάδα Διαχείρισης Μνήμης (συνέχεια) Ένα απλό σχήμα MMU, περιλαμβάνει τον καταχωρητή μετατόπισης (relocation register), η τιμή του οποίου προστίθεται σε κάθε λογική διεύθυνση που δημιουργείται καθώς αυτή αποστέλλεται στη μνήμη Έλεγχος ορίων μέσω καταχωρητή ορίου (limit register), η τιμή του οποίου ελέγχεται πριν γίνει η προσαρμογή της λογικής διεύθυνσης Η τιμή των καταχωρητών αλλάζουν σε κάθε context switch Σελίδα 37

Διευθυνσιοδότηση με Χρήση Καταχωρητών Μετατόπισης και Ορίου Σελίδα 38

Ξεπερνώντας τον Περιορισμό της Συνεχόμενης Μνήμης - Σελιδοποίηση Η απαίτηση ο κώδικας ενός προγράμματος να φορτώνεται (ολόκληρος) σε μια συνεχόμενη περιοχή μνήμης δημιουργεί πρόβλημα εξωτερικού κατακερματισμού Μπορεί να υπάρχουν διάσπαρτα ελεύθερα τμήματα μνήμης που δεν μπορούν να χρησιμοποιηθούν - εκτός και αν υποστηρίζεται μετατόπιση κώδικα (που διευκολύνεται από την ύπαρξη της MMU) Σελίδα 39

Σελιδοποίηση (Paging) Η σελιδοποίηση λύνει το πρόβλημα του εξωτερικού κατακερματισμού επιτρέποντας ταυτόχρονα την φόρτωση του προγράμματος σε διάσπαρτα τμήματα της κύριας μνήμης (δεν άρουμε την δεύτερη απαίτηση, ότι θα πρέπει να φορτωθεί όλος ο λογικός χώρος διευθύνσεων μιας διεργασίας στη μνήμη) Η φυσική μνήμη χωρίζεται σε τμήματα ίσου μεγέθους (πλαίσια), ενώ η λογική μνήμη του προγράμματος χωρίζεται σε τμήματα με το ίδιο μέγεθος (σελίδες). Το μέγεθος είναι συνήθως 512-8192 bytes Η επιλογή της δύναμης του 2 για μέγεθος πλαισίου/σελίδας απλοποιεί τη μετατροπή μιας λογικής διεύθυνσης σε φυσική Σελίδα 40

Σελιδοποίηση (συνέχεια) Αν ο αριθμός των bits των λογικών διευθύνσεων είναι m και το μέγεθος σελίδας είναι 2 n, τότε: τα «υψηλότερα» (most significant) m-n bits μιας λογικής διεύθυνσης προσδιορίζουν τον αριθμό της σελίδας και τα υπόλοιπα n bits τη μετατόπιση μέσα στην σελίδα Η αντιστοίχιση του αριθμού μιας σελίδας και της φυσικής διεύθυνσης του πλαισίου γίνεται μέσω του πίνακα σελίδων (page table) Σελίδα 41

Σελιδοποίηση - Παράδειγμα Ιδεατή μνήμη μεγέθους 64Κ, φυσική 32Κ και μέγεθος σελίδας 4Κ 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 010 1 001 Πίνακας Σελίδων Ιδεατή διεύθυνση 8196 H ιδεατή σελίδα 2, δείκτης στον πίνακα σελίδων 2 110 3 000 4 100 110 Η μετατόπιση μήκους 12 bits αντιγράφεται απευθείας από την είσοδο στην έξοδο 5 011 6 101 7 111 Φυσική διεύθυνση 24580 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 Σελίδα 42

Λογικός και Φυσικός Χώρος Διεργασίας Σελίδα 43

Αρχιτεκτονική Μετάφρασης Διευθύνσεων με Σελιδοποίηση Σελίδα 44

Ανάθεση Πλαισίων σε Διεργασία Πριν την ανάθεση Μετά την ανάθεση Σελίδα 45

Πρόσβαση στον Πίνακα Σελίδων Ο πίνακας σελίδων τηρείται στην κύρια μνήμη του συστήματος Ο καταχωρητής βάσης του πίνακα σελίδων (page-table base register (PTBR)) δείχνει στον πίνακα σελίδων Ο καταχωρητής μήκους του πίνακα σελίδων (page-table length register (PTLR)) δείχνει το μέγεθός του Με αυτό το σχήμα, κάθε προσπέλαση σε δεδομένα ή εντολή του προγράμματος απαιτεί δύο προσπελάσεις στη μνήμη: μια για τον πίνακα σελίδων μια για τα δεδομένα/εντολή Τη λύση δίνει το υλικό! Σελίδα 46

Συσχετιστική Μνήμη Το πρόβλημα αυτό λύνεται με χρήση υλικού γρήγορης αναζήτησης που καλείται συσχετιστική μνήμη (associative memory) ή ενδιάμεση μνήμη μετάφρασης (translation look-aside buffers TLBs) Δυνατότητα παράλληλης αναζήτησης! Μετάφραση διεύθυνσης (A, A ): Αν το A είναι στη συσχετιστική μνήμη, δώσε τον αντίστοιχο αριθμό πλαισίου Αλλιώς δώσε τον αριθμό πλαισίου από τον πίνακα σελίδων που βρίσκεται στη μνήμη Ζητήματα: γεμάτο TLB, διαγραφή του σε context switch Σελίδα 47

Υλικό Σελιδοποίησης με TLB Σελίδα 48

Πραγματικός Χρόνος Πρόσβασης Αναζήτηση στη Συσχετιστική Μνήμη = ε χρονικές μονάδες Υποθέτουμε χρόνο κύκλου μνήμης 1μs Λόγος Επιτυχίας (Hit ratio) ποσοστό των περιπτώσεων που ο αριθμός σελίδας βρίσκεται στους συσχετιστικούς καταχωρητές. Εξαρτάται σαφώς από το πλήθος τους Λόγος Επιτυχίας = α Πραγματικός Χρόνος Πρόσβασης (Effective Access Time (EAT)) EAT = (1 + ε) α + (2 + ε)(1 α) = 2 + ε α Σελίδα 49

Δεδομένα Πίνακα Σελίδων Απενεργοποίηση της χρήσης γρήγορης μνήμης Τροποποίηση Παρουσία / Απουσία Αριθμός πλαισίου σελίδας Αναφορά Προστασία Bit παρουσίας / απουσίας της σελίδας στη μνήμη και εγκυρότητας Τα bit προστασίας δηλώνουν τα επιτρεπτά είδη προσπέλασης Bit τροποποίησης για την ενημέρωση αντιγράφου σελίδας στο δίσκο Bit αναφοράς που τίθεται όταν γίνεται μια αναφορά στη σελίδα Απενεργοποίηση αποθήκευσης σελίδων στην κρυφή μνήμη Σελίδα 50

Προστασία Μνήμης Η προστασία της μνήμης υλοποιείται με το συσχετισμό bits προστασίας με κάθε πλαίσιο μνήμης Ένα bit εγκυρότητας ακυρότητας (valid-invalid) συνδέεται σε κάθε καταχώρηση του πίνακα σελίδων: Η τιμή έγκυρο δείχνει ότι η συσχετισμένη σελίδα ανήκει στο χώρο λογικών διευθύνσεων της διεργασίας, και άρα είναι μια έγκυρη σελίδα Η τιμή άκυρο δείχνει ότι η σελίδα δεν ανήκει στο χώρο λογικών διευθύνσεων της διεργασίας Σελίδα 51

Bits Εγκυρότητας Πλαισίων Σελίδα 52

Σελιδοποίηση (συνέχεια) Σημαντική ιδιότητα της σελιδοποίησης είναι ο πλήρης διαχωρισμός μεταξύ της άποψης του χρήστη για το χώρο διευθύνσεων ενός προγράμματος και την πραγματικότητα στη φυσική μνήμη Λύνει το πρόβλημα του εξωτερικού κατακερματισμού αλλά όσο μεγαλύτερο το μέγεθος της σελίδας τόσο περισσότερη μνήμη μένει ανεκμετάλλευτη μέσα σε μισογεμάτα πλαίσια Όσο μικρότερο το μέγεθος της σελίδας τόσο μεγαλύτερος ο πίνακας των σελίδων για κάθε διεργασία (οπότε χάνεται κύρια μνήμη για την αποθήκευση του) Σελίδα 53

Ιεραρχικοί Πίνακες Σελίδων - Σελιδοποίηση Δύο Επιπέδων (Ι) Το μεγάλο μέγεθος των πινάκων σελίδων αντιμετωπίζεται με την σελιδοποίηση του πίνακα σελίδων, δηλαδή την σελιδοποίηση πολλών επιπέδων. Στη συνέχεια περιοριζόμαστε στα 2 επίπεδα: Κάθε διεργασία έχει έναν πίνακα πρώτου επιπέδου (εξωτερικός πίνακας) με διευθύνσεις βάσης πινάκων δευτέρου επιπέδου (πίνακες), που περιέχουν τις διευθύνσεις των πλαισίων Σελίδα 54

Ιεραρχικοί Πίνακες Σελίδων - Σελιδοποίηση Δύο Επιπέδων (ΙΙ) Μια λογική διεύθυνση χωρίζεται σε 3 τμήματα: Τα πρώτα k bits είναι ο αριθμός του πίνακα δεύτερου επιπέδου μέσα στον εξωτερικό πίνακα Τα συνεχόμενα m bits είναι ο αριθμός της σελίδας μέσα στον πίνακα δεύτερου επιπέδου Τα τελευταία n bits είναι η μετατόπιση μέσα στο πλαίσιο Σελίδα 55

Σχηματική Αναπαράσταση Σελιδοποίησης 2 Επιπέδων Σελίδα 56

Αντεστραμμένοι Πίνακες Σελίδων Μια καταχώρηση για κάθε πραγματικό πλαίσιο μνήμης Η καταχώρηση αποτελείται από την ιδεατή διεύθυνση της σελίδας που είναι αποθηκευμένη σε αυτόν τον πραγματικό χώρο μνήμης, μαζί με πληροφορίες για τη διεργασία που κατέχει τη σελίδα Μειώνεται ο χώρος αποθήκευσης του πίνακα σελίδων, αυξάνεται όμως ο χρόνος αναζήτησης σε αυτόν σε κάθε αναφορά σελίδας Χρησιμοποιείται συσχετιστική μνήμη, η οποία κρατάει τους πιο πρόσφατους εντοπισμούς καταχωρήσεων Σελίδα 57

Αρχιτεκτονική Αντεστραμμένων Πινάκων Σελίδων Σελίδα 58

Πρόσβαση σε Κοινές Σελίδες Μια διεργασία μπορεί να έχει σελίδες κοινές με άλλες διεργασίες Ένα αντίγραφο κώδικα μόνο για ανάγνωση (reentrant) μπορεί να διαμοιράζεται μεταξύ διεργασιών (π.χ., επεξεργαστές κειμένου, μεταγλωττιστές κ.λπ.) Οι πίνακες των διεργασιών δείχνουν στο ίδιο πλαίσιο Διασφαλίζεται η απαγόρευση εγγραφής σε αυτό το πλαίσιο Πρόβλημα όταν χρησιμοποιούνται αντεστραμμένοι πίνακες σελίδων Σελίδα 59

Παράδειγμα Πρόσβασης σε Κοινές Σελίδες Σελίδα 60

Κατάτμηση/Τμηματοποίηση (Segmentation) Σχήμα διαχείρισης μνήμης που υποστηρίζει την άποψη του χρήστη για τη μνήμη ενός προγράμματος Ένα πρόγραμμα είναι μια συλλογή από ξεχωριστά τμήματα που έχουν διαφορετικό λόγο ύπαρξης: Κυρίως πρόγραμμα (main program) Υποπρογράμματα, συναρτήσεις (procedures, functions) Αντικείμενα (objects) Καθολικές μεταβλητές (global variables) Τοπικές μεταβλητές / στοίβα (local variables, stack) Πίνακες συμβόλων (symbol table) Σελίδα 61

Άποψη του Χρήστη για το Πρόγραμμα και Κατάτμηση global variables 4 functionx 1 2 stack 3 main 1 4 2 3 Λογικός χώρος προγράμματος Φυσικός χώρος μνήμης Σελίδα 62

Διευθυνσιοδότηση με Κατάτμηση Η λογική διεύθυνση αποτελείται από m bits που είναι ο αριθμός του τμήματος, και n bits που είναι η μετατόπιση μέσα στο τμήμα Πίνακας τμημάτων (segment table) απεικονίζει αριθμούς τμημάτων σε φυσικές διευθύνσεις, όπου κάθε καταχώρηση έχει: Βάση περιέχει τη διεύθυνση βάσης από την οποία ξεκινάει το τμήμα αυτό στη μνήμη Όριο προσδιορίζει το μήκος του τμήματος Καταχωρητής βάσης του πίνακα τμημάτων (segment-table base register STBR) δείχνει τη θέση του πίνακα τμημάτων στη μνήμη Καταχωρητής μήκους πίνακα τμημάτων (segment-table length register - STLR), δείχνει το πλήθος των τμημάτων. Ο αριθμός τμήματος είναι έγκυρος αν s < STLR Σελίδα 63

Αρχιτεκτονική Κατάτμησης Σελίδα 64

Παράδειγμα Κατάτμησης Σελίδα 65

Κατάτμηση (συνέχεια) Μετατόπιση: Δυναμική μέσω του πίνακα τμημάτων Διαμοίραση: Σε επίπεδο τμήματος. Πρέπει να έχουν τον ίδιο αριθμό Ανάθεση διαθέσιμων τμημάτων μνήμης σε διεργασίες: Πρώτη τοποθέτηση / βέλτιστη τοποθέτηση Εξωτερικός κατακερματισμός Προστασία σε επίπεδο τμήματος: bit εγκυρότητας = 0 μη έγκυρο τμήμα Δικαιώματα ανάγνωσης/γραφής/εκτέλεσης Σελίδα 66

Διαμοίραση Τμημάτων Σελίδα 67

Εναλλαγή Προγραμμάτων στην Μνήμη (swapping) Η κυρίως μνήμη του συστήματος δεν φτάνει για την φόρτωση όλων των προγραμμάτων προς εκτέλεση, και είναι επιθυμητό να υποστηριχθεί η ταυτόχρονη (και όχι η σειριακή) εκτέλεση τους Χρήση μονάδας αποθήκευσης (γρήγορος δίσκος με αρκετό χώρο για να χωρέσει πολλές διεργασίες) για την προσωρινή απομάκρυνση διεργασιών από την μνήμη έτσι ώστε να μπορέσουν να φορτωθούν οι υπόλοιπες διεργασίες Ουρά εισόδου (input queue): σειρά από διεργασίες που αναμένουν (στον δίσκο) να τους δοθεί χώρος στην κύρια μνήμη, προκειμένου να μπορέσουν να εκτελέσουν το πρόγραμμα που έχουν αναλάβει Σελίδα 68

Σχηματική Αναπαράσταση Εναλλαγής Σελίδα 69

Εναλλαγή Προγραμμάτων και Χρονοπρογραμματισμός Το μεγαλύτερο μέρος του χρόνου εναλλαγής είναι ο χρόνος μετακίνησης από/προς το αποθηκευτικό μέσο Ο χρόνος μετακίνησης είναι ευθέως ανάλογος με την ποσότητα της μνήμης που μετακινείται Παραλλαγές της εκδοχής της εναλλαγής απαντώνται σε πολλά συστήματα, π.χ. UNIX, Linux, Windows Η εναλλαγή μνήμης πρέπει να χρησιμοποιηθεί σε συνδυασμό με τον χρονοπρογραμματισμό της ΚΜΕ (εκ περιτροπής ή προτεραιότητες) Κακός συντονισμός μεταξύ χρονοπρογραμματισμού ΚΜΕ και εναλλαγής μνήμης ή/και παρουσία πολλών διεργασιών στο σύστημα μπορεί να οδηγήσει σε thrashing όπου το σύστημα απλά πραγματοποιεί swapping χωρίς να γίνεται «χρήσιμη» δουλειά Σελίδα 70