ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαχείριση μνήμης III Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange, Operating Systems Concepts. Deitel, Deitel and Choffnes, Operating Systems Λειτουργικά Συστήματα, Γ.Α. Παπαδόπουλος, Πανεπιστήμιο Κύπρου Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Systems Programming in C, A.D. Marshal, University of Cardiff Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διαχείριση μνήμης III Κατάτμηση (Τμηματοποίηση) Μελέτες περίπτωσης Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (Τμηματοποίηση) () Ένας μεταγλωττιστής μπορεί να έχει πολλούς πίνακες και άλλες δομές που αναπτύσσονται δυναμικά κατά τη μεταγλώττιση, μεταξύ των άλλων: Το αποτέλεσμα της μεταγλώττισης, το κείμενο με τα μηνύματα και τα σφάλματα για το χρήστη κλπ. Ο πίνακας συμβόλων ονόματα, ιδιότητες και θέσεις εμφάνισης των μεταβλητών. Ο πίνακας των σταθερών. Το δένδρο σάρωσης, η δομή δεδομένων για τη συντακτική ανάλυση του προγράμματος. Η στοίβα για τις κλήσεις διαδικασιών του μεταγλωττιστή. Η στοίβα υπολογισμού των εκφράσεων. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (2) Ανάπτυξη δομών δεδομένων στο χώρο διευθύνσεων μιας διεργασίας μεταγλωττιστή. Οι δυναμικές δεδομένων είναι αρκετές και η πρόβλεψη της ανάπτυξής τους δύσκολη. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (3) Κάθε σημαντική δυναμική δομή δεδομένων καταλαμβάνει δικό της χώρο διευθύνσεων (τμήμα, segment) που αναπύσσεται ανεξάρτητα από τις χώρους των άλλων δομών. Ο χώρος διευθύνσεων αποτελείται από το σύνολο των τμημάτων συν τον κοινόχρηστο χώρο. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (4) Τα τμήματα έχουν δικό τους γραμμικό χώρο λογικών διευθύνσεων που είναι ανεξάρτητος για το καθένα (μέχρι κάποιο μέγιστο). Η λογική διεύθυνση του ενιαίου χώρου διευθύνσεων της διεργασίας τώρα αποτελείται από δύο τμήματα: αριθμός τμήματος (segment number) και διεύθυνση εντός του τμήματος (segment offset) Τα τμήματα είναι λογικές οντότητες, διαχειρίσιμες σε επίπεδο προγράμματος εφαρμογής, πχ αρχεία που περιέχουν συναρτήσεις, δομές δεδομένων, σταθερές και μπορούν μεταγλωττίζονται ξεχωριστά, ώστε αλλαγές σε ένα τμήμα δεν επηρεάζουν τα άλλα τμήματα. Ιδιαίτερα χρήσιμα για μοιραζόμενες συναρτήσεις βιβλιοθήκης (shared libraries), με πολυεπίπεδες κοινές αναφορές, και άμεση δυνατότητα χαρακτηρισμού τμημάτων ως Read Only, Shared κλπ, καθώς και σε προγράμματα πολλαπλών αρχείων (separate compilation) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (5) Μια εικονική διεύθυνση είναι ένας αριθμός τμήματος (segment number) και μια μετατόπιση offset. 5a68 2 2 base=eb4 bound=5a68 base=ff5 bound=2 74b ff5 4a eb4 base=4a bound=74b Κάθε τμήμα τοποθετείται σε μια συνεχόμενη περιοχή της μνήμης. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Μετατροπή διεύθυνσης σε σύστημα με κατάτμηση () Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Μετατροπή διεύθυνσης σε σύστημα με κατάτμηση (2) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση : μετατροπή λογικών σε φυσικές διευθύνσεις Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Ανάλυση του παραδείγματος Λογική διεύθυνση : Αριθμός τμήματος : 4 bits και είναι ο αριθμός Μετατόπιση τμήματος 2 bits Μέγιστο μέγεθος τμήματος 22=496 bytes Η μετατόπιση της λογικής διεύθυνσης αντιστοιχεί στον αριθμό : 52+28+64+32+6=(752) 248 24 52 256 28 64 32 6 8 4 2 Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Μετάφραση σε φυσική διεύθυνση Αριθμός τμήματος Ο αριθμός αυτός χρησιμοποιείται στον segment table της διεργασίας για να βρεθεί η φυσική διεύθυνση της αρχής του τμήματος Συγκρίνεται η μετατόπιση με το μήκος του τμήματος. Αν ΜΕΤΑΤΟΠΙΣΗ > ΜΗΚΟΣ ΤΜΗΜΑΤΟΣ προκύπτει ΜΗ ΕΓΚΥΡΗ ΔΙΕΥΘΥΝΣΗ ΦΥΣΙΚΗ ΔΙΕΥΘΥΝΣΗ = ΑΘΡΟΙΣΜΑ : ΦΥΣΙΚΗΣ ΔΙΕΥΘΥΝΣΗΣ ΑΡΧΗΣ ΤΜΗΜΑΤΟΣ + ΜΕΤΑΤΟΠΙΣΗ Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Από τον process segment table προκύπτει ότι το segment έχει μήκος : 52 + 28 + 64 + 32 + 8 + 4 + 2 = 75 248 24 52 256 28 64 32 6 8 4 2 Άρα η λογική διεύθυνση πράγματι βρίσκεται στο segment (752 > 75) Για να βρεθεί η φυσική διεύθυνση θα προσθέσω τη μετατόπιση στη βάση του segment : base offset address Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση (6) Η κατάτμηση είναι φανερή στον προγραμματιστή σε αντίθεση με τη σελιδοποίηση, και παρέχεται ως διευκόλυνση για την οργάνωση προγραμμάτων και δεδομένων (αρκεί ο προγραμματιστής να γνωρίζει τα όρια τμημάτων που αναγνωρίζει η γλώσσα προγραμματισμού καθώς και αν όλα μπορούν να έχουν δυναμικό μέγεθος). Ο προγραμματιστής βλέπει το πρόγραμμα σαν συλλογή από segments π.χ. main program, function, objects, global variables, stack Δεν υπάρχει μια απλή συσχέτιση μεταξύ των λογικών και των φυσικών διευθύνσεων. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Παράδειγμα συστήματος με τμήματα Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Πλεονεκτήματα της κατάτμησης Η εικόνα της μνήμης είναι η εικόνα που έχει ο προγραμματιστής (ή ο έμπειρος χρήστης). Τα τμήματα προστατεύονται μεταξύ τους. Κάθε τμήμα περιέχει ένα τύπο πληροφορίας (πχ, instructions, stack, ). Η διαμοίραση τμημάτων είναι λογική και εύκολη. Αν όλες οι εντολές είναι σε ένα τμήμα και όλα τα δεδομένα σε άλλο, το τμήμα εντολών μπορεί να διαμοιραστεί ελεύθερα σε διαφορετικές διεργασίες (κάθε μια με τα δικά της δεδομένα). Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Διαμοίραση τμημάτων Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Εφαρμογή κατάτμησης Ανάπτυξη φαινομένου κατακερματισμού (fragrmentation). Ουσιαστικά εφαρμογή δυναμικών διαμερισμάτων. Απαλοιφή ενδιάμεσων κενών με σύπτυξη (compaction). Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Σύγκριση κατάτμησης και σελιδοποίησης () Η κατάτμηση απαιτεί περισσότερο σύνθετο hardware για τον μετασχηματισμό των διευθύνσεων Η κατάτμηση έχει το μειονέκτημα του εξωτερικού κατακερματισμού Η σελιδοποίηση δημιουργεί πολύ μικρό εσωτερικό κατακερματισμό Η κατάτμηση είναι ορατή από τον προγραμματιστή ενώ η σελιδοποίηση είναι αδιαφανής Η κατάτμηση θεωρείται ως πλεονέκτημα που προσφέρεται στον προγραμματιστή για να οργανώσει λογικά ένα πρόγραμμα σε segments και να χρησιμοποιήσει διαφορετικά είδη προστασίας (π.χ. execute-only, read-write) Για το σκοπό αυτό στους πίνακες τμημάτων πρέπει να χρησιμοποιούνται bits προστασίας Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Σύγκριση σελιδοποίησης και κατάτμησης (2) σελιδοποίηση κατάτμηση Είναι απαραίτητο να γνωρίζει ο προγραμματιστής ότι χρησιμοποιείται αυτή η τεχνική; ΟΧΙ ΝΑΙ Πόσοι χώροι γραμμικών διευθύνσεων υπάρχουν; ΠΟΛΛΟΙ Ο συνολικός χώρος διευθύνσεων υπερβαίνει το μέγεθος της φυσικής μνήμης; ΝΑΙ ΝΑΙ Μπορούν οι διαδικασίες και τα δεδομένα να διαχωριστούν και να προστατευθούν ξεχωριστά; ΟΧΙ ΝΑΙ Μπορούν πίνακες με αυξομειούμενο μέγεθος να εξυπηρετηθούν εύκολα; ΟΧΙ ΝΑΙ Διευκολύνεται η διαμοίραση των διαδικασιών μεταξύ των χρηστών; ΟΧΙ ΝΑΙ Η απόκτηση ενός μεγάλου γραμμικού χώρου διευθύνσεων χωρίς να είναι αναγκαία η αγορά επιπλέον φυσικής μνήμης Να δοθεί η δυνατότητα σε προγράμματα και δεδομένα να διασπαστούν σε ανεξάρτητες λογικές ενότητες που διαμοιράζονται και προστατεύονται εύκολα. Ποιος είναι ο σκοπός αυτής της τεχνικής; Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση () Οι σύγχρονοι υπολογιστές χρησιμοποιούν συνδυασμό κατάτμησης και σελιδοποίησης. Ο χώρος διευθύνσεων του χρήστη χωρίζεται σε ένα πλήθος τμημάτων και κάθε τμήμα διασπάται σε ένα πλήθος σελίδων σταθερού μεγέθους που είναι το ίδιο με το μέγεθος πλαισίου της κύριας μνήμης. Κάθε διεργασία συνδέεται με έναν πίνακα τμήματος και έναν αριθμό από πίνακες σελίδων, έναν για κάθε τμήμα της διεργασίας. Επιλύεται το πρόβλημα του εξωτερικού κατακερματισμού μέσω της σελιδοποίησης των τμημάτων. Κάθε είσοδος στον πίνακα τμημάτων δεν περιέχει τη διεύθυνση βάσης του τμήματος, αλλά τη διεύθυνση βάσης του πίνακα σελίδων που αντιστοιχεί στο τμήμα. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση (2) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση (3) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS () Κάθε διεργασία είχε εικονική μνήμη που αποτελείται από 2^8 τμήματα. Κάθε τμήμα σελιδοποιείται ξεχωριστά. Τα τμήματα ελέγχονται από τον πίνακα περιγραφέων (descriptors). Κάθε περιγραφέας τμήματος έχει μήκος 36 bit και δείχνει σε ξεχωριστό πίνακα σελίδων για κάθε τμήμα. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (2) Περιγραφέας τμήματος 36 bits. Φυσική διεύθυνση 24 bits (2^24 bytes) αλλά δεδομένα στοιχισμένα στα 64 (2^6) bytes. Άρα απαιτούνται 8 bits για τη διεύθυνση του πίνακα σελίδων. Μέγιστος αριθμός σελίδων ανά τμήμα 64 (2^6) Σελιδοποίηση και των πινάκων τμημάτων / σελίδων. Τυπικό μέγεθος σελίδας Κ (2^)words. Δύο εναλλακτικά μεγέθη σελίδων. Δυνατότητα ενιαίου τμήματος. Σημείωση αν το τμήμα είναι εντός-εκτός μνήμης. Προστασία RWX Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (3) Εικονική διεύθυνση 34 bit. Χωρίζεται σε τρία τμήματα: Αριθμός τμήματος (segment number)8 bit (2^8 τμήματα) Aριθμός σελίδας (page number) 6 bit (2^6 σελίδες ανά τμήμα) Διεύθυνση εντός σελίδας (page offset) bits (2^ λέξεις ανά σελίδα) Φυσική διεύθυνση 24 bits. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (4) Αλγόριθμος 'μετάφρασης' της εικονικής σε φυσική διεύθυνση: Ο αριθμός τμήματος (segmeny number )δείχνει τον περιγραφέα τμήματος. (Εδώ κανονικά υπάρχει περίπτωση για segment fault, αφού και ο πίνακας τμημάτων είναι σελιδοποιημένος αλλά..) Ο περιγραφέας τμήματος δηλώνει αν ο πίνακας σελίδων είναι στη μνήμη. Αν όχι έχουμε segment fault. O περιγραφέας τμήματος δηλώνει αν τα δικαιώματα πρόσβασης είναι επαρκή. Αν όχι έχουμε protection violation fault. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (5) Τελικά ο περιγραφέας τμήματος δείχνει στη διεύθυνση βάσης του πίνακα σελίδων του τμήματος Ο αριθμός σελίδας δείχνει στη σωστή θέση (page number ) στο πίνακα σελίδων. Αν η σελίδα δεν βρίσκεται στη μνήμη έχουμε page fault. Τελικά η θέση του πίνακα σελίδας παράγει τη διεύθυνση βάσης της σελίδας στη μνήμη. Η διεύθυνση μέσα στη σελίδα (page offset) προστίθεται στη διεύθυνση βάσης σελίδας για να παράγει τη φυσική διεύθυνση. Η πρόσβαση στη μνήμη μπορεί να πραγματοποιηθεί. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (6) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: MULTICS (7) Απλοποιημένη μορφή του MULTICS TLB. Τα δύο πρώτα και το τελευταίο πεδίο είναι τα πεδία συσχέτισης του πίνακα. Κατόπιν γίνεται έλεγχος στα δικαιώματα πρόσβασης και τελικά παράγεται η δ/νση του page frame. Επίσης υπάρχει ηλικία της σελίδας για τους αλγόριθμους αντικατάστασης. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: Pentium () 'Εξι ειδικοί καταχωρητές τμημάτων (segment registers). Σημαντικότεροι ο Code Segment και ο Data Segmet registers. O Pentium selector φορτώνεται σε ένα καταχωρητή τμήματος. Global Descriptor Table (GDT): ένας πίνακας τμημάτων για όλο το σύστημα. Local Descriptor Table (LDT): ο πίνακας τμημάτων της διεργασίας. Privilege Level (Επίπεδο Προνομίων): -3 (δες επόμενη διαφάνεια) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: Pentium (2) Επίπεδα προστασίας Pentium. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: Pentium (3) Περιγραφέας τμήματος κώδικα (32 bits). Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: Pentium (4) Base address: Διεύθυνση βάσης πίνακα τμημάτων Offset: Αριθμός τμήματος Γραμμική διεύθυνση (linear address): Εικονική διεύθυνση ή Φυσική διεύθυνση (αν δεν υπάρχει σελιδοποίηση) Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Κατάτμηση με σελιδοποίηση: Pentium (5) Απεικόνιση της γραμμικής (εικονικής) διεύθυνσης σε φυσική. Δύο επίπεδα σελιδοποίησης μετά τη κατάτμηση. Tanenbaum, Modern Operating Systems 3 e, (c) 28 Prentice-Hall, Inc. All rights reserved. -3-66639
Διαχείριση μνήμης στο Unix Process A Process B Process A's virtual address space Physical memory (διαμοιρασμός κώδικα, text) Process B's virtual address space
Διαμοιραζόμενα αρχεία Two processes can share a mapped file.
Κλήσεις συστήματος POSIX για διαμοιρασμό αρχείων s is an error code b and addr are memory addresses len is a length prot controls protection flags are miscellaneous bits fd is a file descriptor offset is a file offset
Σελιδοποίηση UNIX The core map in 4BSD. Core map=πίνακας σελίδων, Two-handed Clock
Σελιδοποίηση Linux () Το Linux έχει τρία επίπεδα σελιδοποίησης.
Σελιδοποίηση Linux (2) Operation of the buddy algorithm. Δέσμευση μνήμης: Buddy algorithm
Windows () Virtual address space layout for 3 user processes White areas are private per process Shaded areas are shared among all processes
Windows (2) Mapped regions with their shadow pages on disk The lib.dll file is mapped into two address spaces at same time
Κλήσεις συστήματος Win32 Βασικές κλήσεις συστήματος Win32 API για απεικόνιση αρχείων στη μνήμη.
Πίνακας σελίδων Γραμμή πίνακα σελίδων στο Pentium
Διαχείριση μνήμης Windows () Λίστες σελίδων και κανόνες μετάβασης
Διαχείριση μνήμης Windows (2) Οργάνωση των λιστών σελίδων.