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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

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

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

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

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

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

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019

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

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

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

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

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

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

Λιβανός Γιώργος Εξάμηνο 2017Β

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 3ο: Διαχείριση Μνήμης

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

Βασική δοµή και Λειτουργία Υπολογιστή

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Λειτουργικά Συστήματα Ι. Διαχείριση Μνήμης (Memory Management)

Οργάνωση Υπολογιστών

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

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

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Παράλληλη Επεξεργασία

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Περιεχόμενο: Δομή υπολογιστή Συστήματα αρίθμησης

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 7 ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Οι διαφάνειες έχουν καθαρά επικουρικό χαρακτήρα στην παρουσίαση των διαλέξεων του μαθήματος. Δεν αντικαθιστούν σε καμία περίπτωση την παρακάτω βιβλιογραφία που αποτελεί και το βασικό εγχειρίδιο αναφοράς. Βιβλιογραφία: Σύγχρονα Λειτουργικά Συστήματα, A.S. Tanenbaum, 3 η έκδ., Κλειδάριθμος, 2009. Λειτουργικά Συστήματα, W. Stallings, 8 η έκδ., Τζιόλα, 2015. Λειτουργικά Συστήματα, A. Silberschatz, P. Galvin, G. Gagne, 7 η εκδ., ΙΩΝ, 2007.

Στόχοι Η διάλεξη αυτή έχει ως στόχο να εισάγει τον σπουδαστή στις βασικές έννοιες και τεχνικές σχετικά με τη διαχείριση της μνήμης και την κατανομή της στις διεργασίες προς εκτέλεση, και ειδικότερα να γνωρίσει: Βασικές έννοιες και λειτουργίες διαχείρισης μνήμης Αλγόριθμους διαχείρισης και χορήγησης μνήμης στις διεργασίες 2

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

Χώρος διευθύνσεων διεργασίας Κάθε διεργασία έχει το δικό της χώρο διευθύνσεων. Ένας χώρος διευθύνσεων (address space) μιας διεργασίας είναι το σύνολο των εικονικών διευθύνσεων το οποίο μπορεί να χρησιμοποιήσει (μέσω των οποίων απευθύνεται στη φυσική μνήμη). Τυπικά αποτελείται από τα ακόλουθα τμήματα: environment: αποθηκεύονται μεταβλητές περιβάλλοντος και παράμετροι γραμμής εντολών stack: αποθηκεύονται μεταβλητές συναρτήσεων, επιστρεφόμενες τιμές και προσωρινές μεταβλητές heap: χρησιμοποιείται για επιπλέον χώρο διευθύνσεων αν απαιτηθεί κατά την εκτέλεση της διεργασίας (δυναμική δέσμευση μνήμης) data: για αρχικοποιημένες στατικές μεταβλητές και σταθερές bss: για μη αρχικοποιημένες στατικές και σφαιρικές μεταβλητές text/code: όπου αποθηκεύεται ο κώδικας.

Τυπική μορφή των τμημάτων του εκτελέσιμου μιας διεργασίας στη μνήμη On 32-bit Linux systems, the code segment starts at address 0x08048000. Το text segment εμπεριέχει τον κώδικα σε εκτελέσιμη μορφή (binary image) της διεργασίας. Το data segment εμπεριέχει αρχικοποιημένες στατικές (static) μεταβλητές. Το bss segment εμπεριέχει μη αρχικοποιημένες στατικές (static) και σφαιρικές (global) μεταβλητές. Τη στοίβα (stack segment) για τα ορίσματα των συναρτήσεων, επιστροφές και τοπικές (automatic/local) μεταβλητές. Το σωρό (heap segment) (ελεύθερος χώρος) για τη δυναμική δέσμευση μνήμης. Επιπλέον, ένα τμήμα environment (συνήθως unmapped to user code) εμπεριέχει μεταβλητές περιβάλλοντος (environment variables) και ορίσματα γραμμής εντολών (command line arguments). Το μέγεθος των τμημάτων text+data+bss μιας διεργασίας προσδιορίζεται κατά τη μεταγλώττιση και παραμένει σταθερό κατά την εκτέλεση. Όμως μια διεργασία μπορεί κατά την εκτέλεση δυναμικά να επεκταθεί στο ελεύθερο χώρο (εικονικής) μνήμης του σωρού (π.χ. χρήση της malloc() στη C). Πηγή: https://huizistar.wordpress.com/2013/05/09/computer-system-chapter-7/ Ενημερωτική προαιρετική διαφάνεια

Σχηματική αναπαράσταση των διαδικασιών δημιουργίας και φόρτωσης του εκτελέσιμου Τα εκτελέσιμα αρχεία (executable image) δεν είναι αναγκαίο να φορτώνονται εξολοκλήρου στη μνήμη, παρά μόνο όποτε απαιτούνται από τη διεργασία (demand loading/paging). Πηγή εικόνας: www.pinterest.com/pin/405535141431055207/ 6 Ενημερωτική προαιρετική διαφάνεια Με την τεχνική αυτή η εικονική μνήμη (σελίδες) φορτώνεται στη φυσική μνήμη (πλαίσια σελίδων), μόνο όταν η διεργασία επιχειρεί να τη χρησιμοποιήσει.

Στάδια επεξεργασίας προγράμματος και προσδιορισμός διευθύνσεων Οι διευθύνσεις στο πηγαίο πρόγραμμα είναι συμβολικές. Οι διευθύνσεις αυτές μπορεί να αναπαρίστανται με διαφορετικούς τρόπους κατά τη διάρκεια των σταδίων επεξεργασίας του προγράμματος. Τυπικά, ο μεταγλωττιστής (compiler) αρχικά θα συσχετίσει αυτές τις συμβολικές διευθύνσεις με μετατοπίσιμες διευθύνσεις (π.χ. 14 bytes από την αρχή αυτού του τμήματος ). Στη συνέχεια το πρόγραμμα διασύνδεσης (linker) ή και φόρτωσης (loader) θα συσχετίσει τις μετατοπίσιμες διευθύνσεις σε απόλυτες διευθύνσεις (π.χ. 74014). Ο συσχετισμός των εντολών και δεδομένων με διευθύνσεις μπορεί να γίνει σε οποιοδήποτε από τα στάδια της επεξεργασίας. 7

Ο προσδιορισμός των πραγματικών διευθύνσεων μνήμης στις οποίες αναφέρεται ένα πρόγραμμα μπορεί να συμβεί: Κατά την μετάφραση (μεταγλώττιση): - εάν η διεύθυνση μνήμης όπου θα τοποθετηθεί η διεργασία είναι γνωστή εκ των προτέρων τότε μπορεί να δημιουργηθεί απόλυτος κώδικας (absolute). - εάν η διεύθυνση μνήμης δεν είναι γνωστή κατά το στάδιο της μετάφρασης τότε σε αυτή την περίπτωση θα δημιουργηθεί μετατοπίσιμος/σχετικός κώδικας (relocatable/relative). Κατά την φόρτωση: στην περίπτωση που έχει δημιουργηθεί μετατοπίσιμος/σχετικός κώδικας (relocatable/relative), οι διευθύνσεις που περιέχει ο κώδικας συσχετίζονται/αναπροσαρμόζονται κατά την φόρτωση. Κατά την εκτέλεση: εφόσον η διεργασία μπορεί να μετακινηθεί κατά την εκτέλεσή της από ένα τμήμα της μνήμης σε ένα άλλο (dynamic relocation) τότε η συσχέτιση με τις πραγματικές διευθύνσεις στη μνήμη πραγματοποιείται κατά το στάδιο της εκτέλεσής της. 8

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

Λογική & φυσική οργάνωση μνήμης Η κύρια μνήμη (RAM) των υπολογιστικών συστημάτων οργανώνεται (λογική οργάνωση) ως ένας γραμμικός, μονοδιάστατος χώρος διευθύνσεων (linear address space) αποτελούμενος από μια ακολουθία bytes ή λέξεων. 10

Η φυσική μνήμη ενός υπολογιστικού συστήματος είναι οργανωμένη (φυσική οργάνωση) σε δυο επίπεδα την κύρια (RAM) και τη δευτερεύουσα μνήμη (σκληρός δίσκος, SSD, optical, κλπ.). Όμως η κύρια μνήμη είναι μικρής χωρητικότητας, ενώ η δευτερεύουσα μνήμη είναι αρκετά μεγαλύτερη. Έτσι η διαθέσιμη κύρια μνήμη για ένα πρόγραμμα και τα δεδομένα του μπορεί να είναι ανεπαρκής. Συνεπώς, η κύρια μνήμη μπορεί να χρησιμοποιείται για να διατηρεί (προσωρινά) τμήματα από προγράμματα και δεδομένα που είναι σε χρήση (εκτέλεση), και η δευτερεύουσα να συμβάλλει σε αυτή τη λειτουργία της. Η οργάνωση της ροής των πληροφοριών για τη μεταφορά διεργασιών ανάμεσα στην κύρια και στη δευτερεύουσα μνήμη αποτελεί μια από τις κύριες λειτουργίες διαχείρισης μνήμης (memory management) για το σύστημα (ευρύτερα γνωστή ως ιδεατή ή εικονική μνήμη, virtual memory). 11

Εναλλαγή και επανατοποθέτηση διεργασιών Το Λ.Σ. για να μεγιστοποιεί το βαθμό χρήσης του επεξεργαστή με ενεργές διεργασίες προς εκτέλεση, διαχειρίζεται την εναλλαγή διεργασιών (swapping), όποτε κρίνει αναγκαίο, δηλ. την εκτόπισή τους στο δίσκο (αδρανείς διεργασίες) και την επαναφορά τους (ενεργές διεργασίες). Disk 12

Η επανατοποθέτησή τους στην κύρια μνήμη (relocation) όμως ενδέχεται να είναι σε διαφορετική περιοχή μνήμης (διαφορετικές διευθύνσεις, προβλήματα διευθυνσιοδότησης). 13

Φυσικά το ΛΣ ως υπεύθυνο για τη μεταφορά της διεργασίας στην κύρια μνήμη υπολογίζει και γνωρίζει κάθε φορά τις πραγματικές φυσικές διευθύνσεις, ώστε να έχει πρόσβαση στις απαραίτητες πληροφορίες που χρειάζεται για την εκτέλεσή της. Π.χ. τη θέση του μπλοκ με τις πληροφορίες ελέγχου της διεργασίας (Process Control Block), τη διεύθυνση έναρξης της εκτέλεσης του κώδικα της διεργασίας, της στοίβας της διεργασίας, κ.α. 14

Έτσι το ΛΣ συνήθως με τη βοήθεια του υλικού του επεξεργαστή είναι σε θέση να μεταφράζει τις αναφορές μνήμης του κώδικα σε πραγματικές διευθύνσεις φυσικής μνήμης (mapping logical to physical addresses)*. (*) Θα μελετηθεί στη θεματολογία για την Εικονική μνήμη. 15

Διαμοιρασμός και προστασία μνήμης Επιπλέον, για να γίνεται εφικτή η εκμετάλλευση των κοινών πόρων στη μνήμη, και οι διεργασίες να διαμοιράζονται αποδοτικά την πρόσβαση στις ίδιες δομές κώδικα (share same copy of code/text) και δεδομένων (π.χ. δεδομένα - shared data και βιβλιοθήκες - shared libraries), το ΛΣ επιτρέπει την ελεγχόμενη πρόσβαση σε διαμοιραζόμενες περιοχές μνήμης. 16

Επιπλέον, θα πρέπει να παρέχει προστασία πρόσβασης (ανάγνωσης ή εγγραφής) σε περιοχές στη μνήμη (protection of address space) επιτρέποντας ή απορρίπτοντας τις διεργασίες ανάλογα με τα δικαιώματα. Για αυτό το σκοπό, όλες οι αναφορές μνήμης που παράγονται από μια διεργασία, το ΛΣ πρέπει να τις ελέγχει κατά τη διάρκεια της εκτέλεσης*, για να διασφαλίσει ότι έχουν αναφορά μόνο στο χώρο μνήμης που έχει ανατεθεί σε αυτή τη διεργασία. (*) Ο λόγος που πρέπει να το κάνει κατά τον χρόνο της εκτέλεσης είναι ότι η εκάστοτε φυσική θέση του προγράμματος συνήθως δεν μπορεί να προβλεφθεί νωρίτερα (λογική θέση). Οι περισσότερες γλώσσες προγραμματισμού επιτρέπουν τον δυναμικό υπολογισμό των διευθύνσεων, δηλ. κατά το χρόνο εκτέλεσης. Το υλικό (base & limit registers) συμβάλλει σημαντικά σε αυτούς τους υπολογισμούς και ελέγχους των αναφορών μνήμης. 17

Εναλλαγή προγραμμάτων στη μνήμη (swapping) Ιδανικό είναι όλες οι απαιτήσεις για δέσμευση μνήμης (ιδιαίτερα από εφαρμογές υψηλών απαιτήσεων) να ικανοποιούνται από τη φυσική μνήμη. Όμως η κύρια μνήμη του συστήματος δεν επαρκεί για την φόρτωση όλων των προγραμμάτων προς εκτέλεση. Οπότε είναι δυνατόν η φυσική μνήμη να εξαντληθεί. Στην περίπτωση αυτή πραγματοποιείται η εναλλαγή των διεργασιών. Οι διεργασίες μεταφέρονται προσωρινά στο δίσκο για να δοθεί χώρος σε άλλες διεργασίες. Στις περιπτώσεις αυτές δηλαδή, τα περιεχόμενα στη μνήμη των διεργασιών αυτών μεταφέρονται (swapped out) στο χώρο εναλλαγής (swap space) στον σκληρό δίσκο. Έτσι ο χώρος που απελευθερώνεται (πλαίσια φυσικής μνήμης -frames) μπορεί να δοθεί σε μια άλλη διεργασία. Τα πλαίσια αυτά στο χώρο εναλλαγής δεν μπορούν να χρησιμοποιηθούν άμεσα. Έτσι αν μια διεργασία αναφέρεται σε μια τέτοια σελίδα (major page fault) πρέπει πρώτα να μεταφερθεί στη μνήμη (swapped in). 18

19

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

Διαχείριση (ανάθεση) μνήμης με σταθερά τμήματα Αυτόματη (με την εκκίνηση του ΛΣ): διαίρεση της μνήμης σε τμήματα (partitions), όχι απαραίτητα του ίδιου μεγέθους, που μένουν σταθερά (fixed). Τμήμα 4 εκδοχή: Όταν ελευθερώνεται κάποιο τμήμα, φορτώνεται σε αυτό η διεργασία που βρίσκεται πλησιέστερα στην αρχή της ουράς. 1 η 700 Κ 400 Κ Τμήμα 3 Τμήμα 2 2 η εκδοχή: Όταν ελευθερώνεται κάποιο από τα τμήματα της μνήμης, γίνεται αναζήτηση σε όλη την ουρά εισόδου για τη μεγαλύτερη διεργασία που χωράει στο τμήμα της μνήμης. 300 Κ 100 Κ 0 Κ Τμήμα 1 Λειτουργικό Σύστημα (πυρήνας) 21

Με την 1 η εκδοχή είναι πιθανό και ανεπιθύμητο να δεσμεύεται ένα μεγάλο τμήμα για μια μικρή διεργασία, λόγω του εσωτερικού κατακερματισμού που προκαλείται. Η 2 η εκδοχή επιτυγχάνει μικρότερο εσωτερικό κατακερματισμό, αλλά αδικεί και τις μικρές διεργασίες (που δεν επιλέγονται όσο υπάρχουν μεγαλύτερες). Λύση: Η ύπαρξη ενός τουλάχιστον μικρού τμήματος στη μνήμη Η εφαρμογή μιας παραλλαγής της γήρανσης σε κάθε διεργασία που παρακάμπτεται περισσότερες από k φορές Επιπλέον, μπορεί να χρησιμοποιείται ξεχωριστή ουρά για κάθε τμήμα μνήμης (έχει νόημα όταν τα μεγέθη των τμημάτων διαφέρουν σημαντικά). Έτσι επιτυγχάνεται γρηγορότερη αναζήτηση της κατάλληλης διεργασίας ανά μέγεθος. Όταν κάποια ουρά αδειάζει η αναζήτηση μπορεί να μεταφερθεί στην ουρά του τμήματος με το αμέσως μικρότερο μέγεθος (για να ληφθούν υπ όψη τυχόν διεργασίες που περιμένουν εκεί). 22

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

Χάρτες δυαδικών ψηφίων (bit maps) Υποδιαίρεση της μνήμης σε τμήματα (μονάδες κατανομής). Με τη μέθοδο του χάρτη δυαδικών ψηφίων η μνήμη διαιρείται σε μονάδες κατανομής (τμήματα μέχρι μερικά Kbytes), όπου η κάθε μονάδα αντιστοιχεί σε ένα bit στο χάρτη, και της οποίας η κατάσταση σημειώνεται με ένα bit (0 - ελεύθερο, 1- κατειλημμένο). Το μέγεθος της μονάδας κατανομής είναι σημαντικό σχεδιαστικό ζήτημα. Όσο πιο μεγάλη η μονάδα κατανομής (τα τμήματα μνήμης) τόσο μικρότερος ο χάρτης δυαδικών ψηφίων, αλλά τόσο μεγαλύτερη και η πιθανότητα εσωτερικού κατακερματισμού. Βασικό πρόβλημα αποτελεί η αναζήτηση η οποία είναι χρονοβόρα. Όταν το ΛΣ πρέπει να φέρει στη μνήμη μια διεργασία μεγέθους k μονάδες κατανομής, αναζητά στο χάρτη k συνεχόμενα bits με τιμή 0. Αυτό αποτελεί μια «αργή» λειτουργία με αποτέλεσμα στην πράξη αυτή η τεχνική να μην χρησιμοποιείται συχνά. 24

Παράδειγμα Τμήμα μνήμης με 5 διεργασίες και 3 οπές (α) Ο αντίστοιχος χάρτης δυαδικών ψηφίων Τμήμα μνήμης με 5 διεργασίες και 3 οπές. Οι σκιασμένες περιοχές (0 στο χάρτη των bit) είναι ελεύθερες (οπές). (α) Ο αντίστοιχος χάρτης δυαδικών ψηφίων. (β) Η ίδια πληροφορία ως λίστα. (β) Η ίδια πληροφορία ως λίστα 25

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

Παράδειγμα Α, Β, Γ, Δ Διεργασίες Σκιασμένα τμήματα Οπές P (δεσμευμένα τμήματα) H (ελεύθερα τμήματα) A B Γ Δ 5 8 14 24 26 Ρ 0 5 Η 5 3 Ρ 8 6 Ρ 14 10 Η 24 2 Ρ 26 8 Ως συνδεδεμένη λίστα 27

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

Οι προηγούμενοι αλγόριθμοι μπορούν να βελτιωθούν και να επιταχυνθούν. Ένας τρόπος είναι αν τηρούνται ξεχωριστές λίστες για τις διεργασίες και τα κενά. Στην περίπτωση αυτή η λίστα με τα κενά πρέπει να είναι ταξινομημένη ως προς μέγεθος ώστε ο αλγόριθμος βέλτιστης τοποθέτησης να εκτελείται ταχύτερα. Τότε ο αλγόριθμος αυτός γίνεται εξίσου γρήγορος με τον αλγόριθμο πρώτης τοποθέτησης ενώ ο αλγόριθμος επόμενης τοποθέτησης δεν έχει λόγο ύπαρξης. Επίσης θα μπορούσε να επιταχυνθεί η διαχείριση της μνήμης αν τηρούνται λίστες για τμήματα με μεγέθη που ζητούνται περισσότερο συχνά (αλγόριθμος γρήγορης τοποθέτησης -quick fit). Παραλλαγές χρησιμοποιούνται για τη διαχείριση δυναμικής μνήμης. Μειονέκτημα: όταν μια διεργασία αποχωρεί ο προσδιορισμός των γειτόνων της για να διαπιστωθεί αν μπορεί να γίνει συγχώνευση «κοστίζει» αρκετά. 29

Παράδειγμα Θεωρείστε ένα σύστημα διαχείρισης μνήμης με συνδεδεμένες λίστες. Σε αυτό υπάρχουν τα ακόλουθα τμήματα ελεύθερης μνήμης (σε αύξουσα σειρά διευθύνσεων της φυσικής μνήμης): 10K, 4K, 20K, 18K, 7K, 9K, 12K, 15K Ποια τμήματα χρησιμοποιούνται και πως τμηματοποιείται περαιτέρω η μνήμη αν φορτωθούν, η μια μετά την άλλη, τρεις διεργασίες που χρειάζονται μνήμη 12K, 10K και 9K αντίστοιχα, με τους αλγόριθμους (α) πρώτης τοποθέτησης (first fit) και (β) βέλτιστης τοποθέτησης (best fit). (α) (β) 10K, 4K, 20K, 18K, 7K, 9K, 12K, 15K 10Κ, 4Κ, {[12Κ],[8Κ]}, {[9Κ ],[9Κ]}, 7Κ, 9Κ, 12Κ, 15Κ 10Κ, 4Κ, 20Κ, 18Κ, 7Κ, 9Κ, 12Κ, 15Κ 30

Σύστημα των Φίλων (buddy system) Υποδιαίρεση μνήμης σε τμήματα με μεγέθη σε δυνάμεις του 2 k. Τα τμήματα μνήμης είναι διαθέσιμα σε μεγέθη των 2 K words, με L K U, όπου: - 2 L = μέγεθος του μικρότερου τμήματος που ανατίθεται - 2 U = μέγεθος του μεγαλύτερου τμήματος που ανατίθεται (γενικά 2 U είναι το μέγεθος ολόκληρης της μνήμης που διατίθεται για ανάθεση) Κάθε διεργασία που αιτείται χώρο τοποθετείται σε τμήμα με μέγεθος την πλησιέστερη δύναμη του 2 που τη χωράει. Αν το αίτημα είναι μεγέθους s τέτοιο ώστε 2 U-1 < s 2 U, τότε ανατίθεται ολόκληρο το τμήμα. Στην περίπτωση που το αίτημα για χώρο είναι μικρότερο από το μέγεθος του τμήματος, αυτό οδηγεί το διαχωρισμό του τμήματος σε δύο γειτονικά τμήματα ίδιου μεγέθους. Η διαδικασία αυτή συνεχίζεται έως ότου παραχθεί το μικρότερο τμήμα που είναι μεγαλύτερο ή ίσο με το ζητούμενο. Το ένα δίνεται στη διεργασία το άλλο εισάγεται στην αμέσως «μικρότερη» λίστα. Πλεονέκτημα: οι συνενώσεις γίνονται μόνο μεταξύ τμημάτων του ίδιου μεγέθους, άρα είναι πολύ γρήγορες. Μειονέκτημα: Όλες οι απαιτήσεις ανάγονται σε δυνάμεις του 2, δημιουργώντας εσωτερικό κατακερματισμό.

Παράδειγμα 1 Mbyte block 1 M Request 100 K A = 128K 128K 256K 512K Request 240 K A = 128K 128K B = 256K 512K Request 64 K A = 128K C = 64K 64K B = 256K 512K Request 256 K A = 128K C = 64K 64K B = 256K D = 256K 256K Release B A = 128K C = 64K 64K 256K D = 256K 256K Release A 128K C = 64K 64K 256K D = 256K 256K Request 75 K E = 128K C = 64K 64K 256K D = 256K 256K Release C E = 128K 128K 256K D = 256K 256K Release E 512K D = 256K 256K Release D 1M 32

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

Παράδειγμα Έστω ότι χρησιμοποιείται το σύστημα των φίλων (buddy system) για τη διαχείριση της μνήμης. Θεωρείστε ότι αρχικά έχει ελεύθερο ένα μπλοκ του 1Μ και ότι στη συνέχεια εμφανίζονται διαδοχικά 4 διεργασίες οι οποίες έχουν αντίστοιχα τις ακόλουθες απαιτήσεις σε μνήμη: 70Κ, 35Κ, 80Κ και 60Κ Να σχηματίσετε τον πίνακα των τμημάτων της μνήμης όπως προκύπτει μετά την εξυπηρέτηση των παραπάνω απαιτήσεων, στον οποίο να φαίνονται ποια μπλοκ της μνήμης είναι ελεύθερα και ποια δεσμευμένα και ποιο είναι το μέγεθός τους. 34

Απαιτήσεις σε μνήμη: 70Κ, 35Κ, 80Κ και 60Κ Αρχικά ένα κενό μεγέθους 1Μ Απαίτηση για 70Κ 70Κ 128 256 512 Απαίτηση για 35Κ 35Κ 64 256 512 Απαίτηση για 80Κ 64 80Κ 128 512 Απαίτηση για 60Κ 60Κ 128 512 35

Ερωτήσεις Τι γνωρίζετε για την εναλλαγή προγραμμάτων στη μνήμη. Τι είναι ο εσωτερικός και τι ο εξωτερικός κατακερματισμός; Τι γνωρίζετε για την διαχείριση και παρακολούθηση της δέσμευσηςαποδέσμευσης μνήμης με τους χάρτες δυαδικών ψηφίων (bit maps); Τι γνωρίζετε για την διαχείριση και παρακολούθηση της δέσμευσηςαποδέσμευσης μνήμης με συνδεδεμένες λίστες (linked lists); Περιγράψτε τους αλγόριθμους χορήγησης μνήμης σε διεργασίες όταν ο χώρος της μνήμης παρακολουθείται από ταξινομημένη ως προς τη διεύθυνση λίστα τμημάτων. Τι γνωρίζετε για την διαχείριση και παρακολούθηση της δέσμευσηςαποδέσμευσης μνήμης με το σύστημα των φίλων (buddy system); 36

Θεωρείστε ένα σύστημα διαχείρισης μνήμης με συνδεδεμένες λίστες. Σε αυτό υπάρχουν τα ακόλουθα τμήματα ελεύθερης μνήμης (σε αύξουσα σειρά διευθύνσεων της φυσικής μνήμης): 10K, 20K, 8K, 18K, 14K και 12K. Ποια τμήματα χρησιμοποιούνται και πως τμηματοποιείται περαιτέρω η μνήμη αν φορτωθούν, η μια μετά την άλλη, τρεις διεργασίες που χρειάζονται μνήμη 14K, 12K και 8K αντίστοιχα, με τους αλγόριθμους (α) πρώτης τοποθέτησης (first fit) και (β) βέλτιστης τοποθέτησης (best fit). Σε ένα υπολογιστικό σύστημα χρησιμοποιείται το σύστημα των φίλων (buddy system algorithm) για τη διαχείριση της μνήμης. Θεωρείστε ότι αρχικά έχει ελεύθερο ένα μπλοκ των 512 KB και ότι στη συνέχεια εμφανίζονται διαδοχικά τέσσερις διεργασίες οι οποίες έχουν αντίστοιχα τις ακόλουθες απαιτήσεις σε μνήμη: 50Κ, 70Κ, 40Κ και 128Κ. Να σχηματίσετε τον πίνακα των τμημάτων της μνήμης όπως προκύπτει μετά την εξυπηρέτηση των παραπάνω απαιτήσεων, στον οποίο να φαίνονται ποια μπλοκ της μνήμης είναι ελεύθερα και ποια δεσμευμένα και ποιο είναι το μέγεθός τους. 37