ιαχείριση Μνήµης (Memory Management)
Για τη δηµιουργία των διαφανειών έχει χρησιµοποιηθεί υλικό από τις διαφάνειες παραδόσεων που βασίζονται στο βιβλίο, Silberschatz, Galvin and Gagne, Operating Systems Concepts, 6 th Edition. Οι διαφάνειες αυτές βρίσκονται στο δικτυακό τόπο: http://www.cs.purdue.edu/homes/yau/cs503/
Εισαγωγή Βασικές έννοιες και µοντέλο εκτέλεσης Εναλλαγή (swapping) Ανάθεση σε συνεχόµενα τµήµατα (contiguous allocation) Σελιδοποίηση (paging) Τµηµατοποίηση (segmentation) Τµηµατοποίηση µε σελιδοποίηση (segmentation with paging) Σελίδα 3
Βήµατα Επεξεργασίας Προγράµµατος Μετάφραση: Ο πηγαίος κώδικας (γλώσσα ψηλού επιπέδου) µεταφράζεται και δηµιουργείται ο κώδικας µηχανής ιασύνδεση: Οκώδικαςµηχανής συνδέεται µε άλλα µεταφρασµένα κοµµάτια κώδικα και δηµιουργείται το εκτελέσιµο Φόρτωση: Το εκτελέσιµο φορτώνεται στην κύρια µνήµη τουη/υ, συνδέοντάς το µε βιβλιοθήκες που ήδη υπάρχουν στο σύστηµα υναµική φόρτωση: Κοµµάτια από εκτελέσιµο κώδικα φορτώνονται κατά την διάρκεια της εκτέλεσης, όταν και αν αυτό χρειαστεί (π.χ. δυναµικές βιβλιοθήκες) Σελίδα 4
Σχηµατική Αναπαράσταση Βηµάτων Επεξεργασίας Προγράµµατος Σελίδα 5
υναµική ιασύνδεση (Dynamic Linking) Η διασύνδεση αναβάλλεται µέχρι το χρόνο εκτέλεσης Ένα µικρό κοµµάτι κώδικα, η παραποµπή (stub), τοποθετείται στην θέση της κλήσης της συνάρτησης µέσα στο πρόγραµµα Χρησιµοποιείται για τον εντοπισµό της αντίστοιχης συνάρτησης βιβλιοθήκης στη µνήµη (καθώς και την έναρξη της διαδικασίας φόρτωσης της βιβλιοθήκης στην µνήµη, αν αυτό δεν έχει ήδη γίνει) Σελίδα 6
υναµική ιασύνδεση (συνέχεια) Η παραποµπή αντικαθιστά τον εαυτό της µε την διεύθυνση της ρουτίνας που πρέπει να εκτελεστεί Ηδυναµική διασύνδεση είναι εξαιρετικά χρήσιµη για τις βιβλιοθήκες Εφόσον επιτρέπεται από το ΛΣ, τα προγράµµατα παραπέµπονται στο ίδιο αντίγραφο της βιβλιοθήκης (shared libraries) Σελίδα 7
υναµική Φόρτωση (Dynamic Loading) Ο κώδικας προς εκτέλεση δε φορτώνεται πριν πραγµατοποιηθεί κάποια κλήση σε αυτόν Κώδικας που δεν καλείται δεν φορτώνεται ποτέ Καλύτερη διαχείριση του χώρου της µνήµης Εξαιρετικά χρήσιµο ότανµεγάλα τµήµατα κώδικα χρησιµοποιούνται για το χειρισµό σπάνιων περιπτώσεων Συνήθως πρέπει να αποφασισθεί κατά το σχεδιασµό των προγραµµάτων και δεν απαιτείται ειδική υποστήριξη από το ΛΣ (εκτός από την παροχή ειδικών ρουτινών βιβλιοθηκών) Σελίδα 8
Επικαλυπτόµενα Τµήµατα (Overlays) Όταν ο κώδικας του προγράµµατος είναι µεγαλύτερος από το µέγεθος της µνήµης που προβλέπεται να του ανατεθεί, ή µεγαλύτερος από την κύρια µνήµη που διαθέτει το σύστηµα Τµηµατοποίηση του κώδικα (από τον προγραµµατιστή) σε κοµµάτια των οποίων η εκτέλεση δεν γίνεται ταυτόχρονα Μπορεί να γίνει εναλλαγή των τµηµάτων αυτών, έτσι ώστε να χρησιµοποιείται η ίδια περιοχή κύριας µνήµης του συστήµατος Αρκετά πολύπλοκο να υλοποιηθεί (για τον προγραµµατιστή) Τα σύγχρονα ΛΣ επιτυγχάνουν (σχεδόν) το ίδιο αποτέλεσµα µε άλλες πιο απλές (για τον προγραµµατιστή) µεθόδους Σελίδα 9
Σχηµατική Αναπαράσταση Overlays Προγράµµατος µε 2 Τµήµατα Σελίδα 10
Προσδιορισµός ιευθύνσεων Μνήµης Για να τρέξει ένα πρόγραµµα χρήστη (µέσω µιας διεργασίας) πρέπει ο κώδικας του να φορτωθεί στην κύρια µνήµη Ο προσδιορισµός των πραγµατικών διευθύνσεων µνήµης στους οποίους αναφέρεται το πρόγραµµα µπορεί να συµβεί: Κατά την µετάφραση Κατά την φόρτωση Κατά την εκτέλεση Προφανώς ο προσδιορισµός διευθύνσεων µνήµης εξαρτάται από την περιοχή της µνήµης όπου τοποθετείται το πρόγραµµα Σελίδα 11
Προσδιορισµός ιευθύνσεων Μνήµης κατά τη ιάρκεια της Μετάφρασης Ηπεριοχήµνήµης που θα «κατοικήσει» το πρόγραµµα είναι γνωστή εκ των προτέρων ηµιουργείται απόλυτος (absolute) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο µεταφραστής και χειρίζεται το πρόγραµµα είναι και οι πραγµατικές διευθύνσεις την κύριας µνήµης Πρέπει να ξαναγίνει µεταγλώττιση του προγράµµατος, αν για κάποιο λόγο ο κώδικας πρέπει να τοποθετηθεί σε διαφορετική περιοχή Σελίδα 12
Προσδιορισµός ιευθύνσεων Μνήµης κατά τη ιάρκεια της Φόρτωσης Ηπεριοχήµνήµης που θα «κατοικήσει» το πρόγραµµα δενείναι γνωστή εκ των προτέρων Ηπραγµατική θέση του προγράµµατος αποφασίζεται κατά την φόρτωσή του στην κυρίως µνήµη ηµιουργείται σχετικός/µετατοπίσιµος (relocatable) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο µεταφραστής και χειρίζεται το πρόγραµµα δίνονται σε σχέση µε µια υποθετική αρχική διεύθυνση Οι διευθύνσεις που περιέχει ο κώδικας αναπροσαρµόζονται κατά την φόρτωση (fixup) χρησιµοποιώντας κατάλληλες δοµές που έχει δηµιουργήσει ο µεταγλωττιστής Σελίδα 13
Προσδιορισµός ιευθύνσεων Μνήµης κατά τη ιάρκεια της Εκτέλεσης Ηπεριοχήµνήµης που θα «κατοικήσει» το πρόγραµµα δενείναι γνωστή εκ των προτέρων. Ηπραγµατικήθέσητουπρογράµµατος αποφασίζεται κατά την φόρτωση του στην κυρίως µνήµη ηµιουργείται σχετικός/µετατοπίσιµος (relocatable) κώδικας, όπου οι διευθύνσεις που υπολογίζει ο µεταφραστής και χειρίζεται το πρόγραµµα δίνονται σε σχέση µε µια υποθετική αρχική διεύθυνση Η δέσµευση αναστέλλεται µέχρι το χρόνο εκτέλεσης Χρησιµοποιείται έµµεση διευθυνσιοδότηση, συνήθως µε υποστήριξη από το υλικό του ΥΣ (π.χ. ειδικοί καταχωρητές βάσης και ορίου) Σελίδα 14
έσµευσης Συνεχόµενης Μνήµης (contiguous allocation) Μοντέλο συστήµατος / υποθέσεις: Το ΛΣ καταλαµβάνει τις χαµηλότερες διευθύνσεις στη µνήµη και παραµένει φορτωµένο καθ όλη τη διάρκεια λειτουργίας του ΥΣ Οι διεργασίες που δεν έχουν χώρο στη µνήµη φυλάσσονται σε αποθηκευτικό µέσο από το οποίο φορτώνονται στην κύρια µνήµη Προκειµένου να τρέξει µιαδιεργασίαπρέπειναφορτωθείεξ ολοκλήρου στη µνήµη και να καταλάβει µια συνεχόµενη περιοχή Πως οργανώνουµε τηµνήµη έτσι ώστε να επιτευχθεί ο στόχος της ύπαρξης πολλών ταυτόχρονα διεργασιών στη µνήµη; Σελίδα 15
Κατακερµατισµός (fragmentation) Εξωτερικός κατακερµατισµός (external fragmentation): Υπάρχει χώρος στη µνήµη που δεν έχει ανατεθεί σε κάποια διεργασία, αλλά δεν είναι συνεχόµενος ώστε να ικανοποιηθεί µια αίτηση Εσωτερικός κατακερµατισµός (internal fragmentation): Η µνήµη που ανατίθεται σε µια διεργασία µπορεί να είναι µεγαλύτερη από αυτή που ζητήθηκε, οπότε ο επιπλέον αυτός χώρος «χάνεται» και δεν µπορεί να χρησιµοποιηθεί από καµία διεργασία Περιορισµός εξωτερικού κατακερµατισµού µε συγχώνευση (compaction): υναµική µετατόπιση των προγραµµάτων ώστε να δηµιουργηθεί ένα όσο το δυνατόν µεγαλύτερο ελεύθερο τµήµα µνήµης Σελίδα 16
ιαχείριση Μνήµης µε Σταθερά Τµήµατα Αυτόµατη (µε την εκκίνηση του ΛΣ) ή «µε τοχέρι» από το χειριστή του συστήµατος, διαίρεση της µνήµης σε τµήµατα ή διαµερίσεις (partitions) όχι απαραίτητα του ίδιου µεγέθους που µένουν σταθερά 1 η παραλλαγή: Όταν ελευθερώνεται κάποιο τµήµα, φορτώνεται σε αυτό η διεργασία που βρίσκεται πλησιέστερα στην αρχή της ουράς 2 η παραλλαγή: Όταν ελευθερώνεται κάποιο από τα τµήµατα της µνήµης, γίνεται αναζήτηση σε όλη την ουρά εισόδου για τη µεγαλύτερη διεργασία που χωράει στο τµήµα τηςµνήµης Σελίδα 17
Σχηµατική Απεικόνιση 700 Κ Τµήµα 4 Τµήµα 3 400 Κ Τµήµα 2 300 Κ Τµήµα 1 100 Κ Λειτουργικό Σύστηµα 0 Κ Σελίδα 18
Σταθερά Τµήµατα Μνήµης (συνέχεια) Είναι ανεπιθύµητο να δεσµεύεται ένα µεγάλο τµήµα για µια µικρή διεργασία, λόγω του εσωτερικού κατακερµατισµού που προκαλείται Η δεύτερη παραλλαγή επιτυγχάνει µικρότερο εσωτερικό κατακερµατισµό αλλά αδικεί και τις µικρές διεργασίες (που δεν επιλέγονται όσο υπάρχουν µεγαλύτερες) Λύση: Η ύπαρξη ενός τουλάχιστον µικρού τµήµατος στη µνήµη Ηεφαρµογή µιας παραλλαγής της γήρανσης σε κάθε διεργασία που παρακάµπτεται περισσότερες από k φορές Σελίδα 19
Σταθερά Τµήµατα Μνήµης (συνέχεια) Μπορεί να χρησιµοποιείται ξεχωριστή ουρά για κάθε τµήµα µνήµης Έχει νόηµα όταν τα µεγέθη των τµηµάτων διαφέρουν σηµαντικά Γρηγορότερη αναζήτηση κατάλληλης διεργασίας ανά µέγεθος Όταν κάποια ουρά αδειάζει, η αναζήτησηµπορεί να µεταφερθεί στην ουρά του τµήµατος µε το αµέσως µικρότερο µέγεθος (για να ληφθούν υπ όψη τυχόν διεργασίες που περιµένουν εκεί) Σελίδα 20
ιαχείριση Μνήµης µε Μεταβλητά Τµήµατα Με την χρήση σταθερών τµηµάτων, σηµαντικό µέρος της µνήµης µπορεί να χαθεί λόγω εσωτερικού κατακερµατισµού Λύση: Σχήµα διαχείρισης της µνήµης σύµφωνα µε το οποίο, ο αριθµός, η θέσηκαιτοµέγεθος των τµηµάτων είναι µεταβλητό Πλεονέκτηµα: Καλύτερη εκµετάλλευση της µνήµης Μειονέκτηµα: υσχερέστερος ο τρόπος παρακολούθησης των µεταβολών της µνήµης (δέσµευση και αποδέσµευση των τµηµάτων) Σελίδα 21
Μεταβλητά Τµήµατα Μνήµης (συνέχεια) Κάθε στιγµή έχουµε µια λίστα των µεγεθών των τµηµάτων µνήµης που είναι διαθέσιµα Η µνήµη ανατίθεται στη διεργασία της ουράς εισόδου που επιλέγεται από τον µακροπρόθεσµο χρονοπρογραµµατιστή µέχρι να µη µπορεί να ικανοποιηθεί η αίτηση µνήµης που υπάρχει Για διεργασίες που αναµένεται να «µεγαλώσουν» κατά το χρόνο εκτέλεσης, είναι επιθυµητή η δέσµευση περισσότερης µνήµηςαπόαυτήπουζητείταιαρχικά Σελίδα 22
Σχηµατική Απεικόνιση Λειτουργίας Συστήµατος Ουρά Εισόδου ιεργασία Μνήµη Χρόνος Ξεσπάσµατος Ρ1 600Κ 10 Ρ2 1000Κ 5 Ρ3 300Κ 20 Ρ4 700Κ 8 Ρ5 500Κ 15 Σελίδα 23
Σχηµατική Απεικόνιση Λειτουργίας Συστήµατος (συνέχεια) 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 Κ Σελίδα 24
Σχηµατική Απεικόνιση process C free process B free compaction process C free process B process A process A Σελίδα 25
Παρακολούθηση Μεταβολών Μνήµης Απαραίτητη προϋπόθεση για την υποστήριξη της διαχείρισης µνήµης µε µεταβλητά τµήµατα είναι η ύπαρξη µηχανισµών για την παρακολούθηση των µεταβολών της µνήµης Χάρτες δυαδικών ψηφίων (bit maps) Συνδεδεµένες λίστες (linked lists) Σύστηµα των φίλων (buddy system) Βασική υπόθεση εργασίας: ε γνωρίζουµε τίποτα σχετικά µε την κατανοµή πιθανότητας των αιτήσεων για τµήµατα µνήµης και το είδος των διεργασιών Σελίδα 26
Χάρτες υαδικών Ψηφίων (bit maps) Υποδιαίρεση της µνήµης σε ατοµικά τµήµατα. Η κατάσταση κάθε τµήµατος σηµειώνεται µε έναbit (0 = ελεύθερο) στον χάρτη δυαδικών ψηφίων Όσο πιο µεγάλη η µονάδα υποδιαίρεσης, τόσο µικρότερος ο χάρτης δυαδικών ψηφίων αλλά τόσο µεγαλύτερη και η πιθανότητα εσωτερικού κατακερµατισµού Στην πράξη το ΛΣ αναζητά στο χάρτη k συνεχόµενες στοιχειώδεις µονάδες, δηλ. k συνεχόµενα bits να έχουν τιµή 0. Είναι µια «αργή» λειτουργία και έτσι στην πράξη αυτή η τεχνική δεν χρησιµοποιείται συχνά Σελίδα 27
Συνδεδεµένες Λίστες (linked lists) ιατηρείται συνδεδεµένη λίστα, που περιέχει τα δεσµευµένα και τα ελεύθερα τµήµατα της µνήµης. Η λίστα είναι ταξινοµηµένη ως προς τη διεύθυνση των τµηµάτων µνήµης Αρχικά η λίστα αποτελείται από ένα µοναδικό στοιχείο, δηλαδή ολόκληρη τη µνήµη ως ένα µεγάλο ελεύθερο τµήµα. Όταν µια διεργασία ζητήσει µνήµη, γίνεται αναζήτηση στην λίστα για να βρεθεί «κατάλληλο» ελεύθερο τµήµα (αν είναι µεγαλύτερο, τότε το τµήµα σπάει σε ένα δεσµευµένο και ένα ελεύθερο τµήµα) Όταν µια διεργασία ολοκληρωθεί, ελέγχονται τα γειτονικά τµήµατα της µνήµης, και αν κάποιο είναι κενό γίνεται συγχώνευση (compaction) µειώνοντας το µέγεθος της λίστας Σελίδα 28
Αναπαράσταση Συνδεδεµένης Λίστας A B Γ 5 8 14 24 26 Ρ 0 5 Η 5 3 Ρ 8 6 Ρ 14 10 Η 24 2 Ρ 26 8 Σελίδα 29
Συνδεδεµένες Λίστες (συνέχεια) Ηταξινοµηµένη ως προς τη διεύθυνση λίστα, κάνει γρηγορότερη την ενηµέρωσή της για ολοκλήρωση ή µεταφορά διεργασίας στο δίσκο Όταν ο χώρος της µνήµης παρακολουθείται από ταξινοµηµένη ως προς τη διεύθυνση λίστα, µπορούν να χρησιµοποιηθούν οι ακόλουθοι αλγόριθµοι χορήγησης µνήµης: Πρώτης τοποθέτησης (First fit) Επόµενης τοποθέτησης (Next fit) Βέλτιστης τοποθέτησης (Best fit) Χειρότερης Τοποθέτησης (Worst fit) Σελίδα 30
Αλγόριθµοι Χορήγησης Μνήµης σε ιεργασία Πρώτης τοποθέτησης: αναζήτηση στη λίστα, µέχρι να βρεθεί ένα µεγάλο κενό, το οποίο διασπάται σε δύο κοµµάτια (γρήγορος) Επόµενης τοποθέτησης: Όπως και ο προηγούµενος, ξεκινάει µια αναζήτηση από το σηµείο που σταµάτησε την προηγούµενη Βέλτιστης τοποθέτησης: σαρώνει τη λίστα και επιλέγει το µικρότερο κενό που χωράει τη διεργασία (αργός και υπεύθυνος για τη δηµιουργία µεγάλης σπατάλης µνήµης) Χειρότερης τοποθέτησης: τοποθετεί τη διεργασία στο µεγαλύτερο τµήµα µνήµης που είναι διαθέσιµο (όχι και τόσο καλή ιδέα) Σελίδα 31
Αλγόριθµοι Χορήγησης Μνήµης σε ιεργασία - Βελτιώσεις Τήρηση δύο ταξινοµηµένων λιστών, µια για τη µνήµη που κατέχουν διεργασίες και µια για τα κενά (ταξινοµηµένη ως προς µέγεθος) Ο αλγόριθµος βέλτιστης τοποθέτησης γίνεται εξίσου γρήγορος µε τον αλγόριθµο πρώτης τοποθέτησης και ο αλγόριθµος επόµενης τοποθέτησης δεν έχει λόγο ύπαρξης Αλγόριθµος γρήγορης τοποθέτησης (quick fit): Τήρηση διαφορετικών λιστών για τµήµατα µε µεγέθη που ζητούνται περισσότερο τακτικά Παραλλαγές χρησιµοποιούνται για διαχείριση δυναµικής µνήµης Μειονέκτηµα: Όταν µια διεργασία αποχωρεί ο προσδιορισµός των γειτόνων της για να γίνει(;) συγχώνευση «κοστίζει» αρκετά Σελίδα 32
Σύστηµα τωνφίλων(buddy System) Υποδιαίρεση µνήµης σε κατηγορίες µεγεθών δυνάµεις του 2 ιαχείριση λίστας ελεύθερων τµηµάτων ανά κατηγορία µεγέθους (1ΜByte µνήµης 21 λίστες) Κάθε διεργασία τοποθετείται σε τµήµα µε µέγεθος την πλησιέστερη δύναµη του2 που τη χωράει. Κάθε τµήµα χωρίζεται σε δύο γειτονικά τµήµατα ίδιου µεγέθους (το ένα δίνεται στη διεργασία το άλλο εισάγεται στην αµέσως «µικρότερη» λίστα) Πλεονέκτηµα: οι συνενώσεις γίνονται µόνο µεταξύ τµηµάτων του ίδιου µεγέθους, άρα είναι πολύ γρήγορες Μειονέκτηµα: Όλες οι απαιτήσεις ανάγονται σε δυνάµεις του 2, δηµιουργώντας εσωτερικό κατακερµατισµό Σελίδα 33
Σύστηµα τωνφίλων(συνέχεια) Απαίτηση για 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 Σελίδα 34
Λογικές και Φυσικές ιευθύνσεις
Λογικός και Φυσικός Χώρος ιευθύνσεων Οδιαχωρισµός µεταξύ του χώρου λογικών διευθύνσεων (logical address space) και του χώρου φυσικών διευθύνσεων (physical address space) είναι κεντρική για ένα (µοντέρνο) ΛΣ Λογική ή ιδεατή διεύθυνση (logical or virtual address): Η διεύθυνση που «βλέπει» η ΚΜΕ του συστήµατος Φυσική διεύθυνση (physical address): Οι διευθύνσεις όπως τις «βλέπει» η µονάδα µνήµης του συστήµατος Οι λογικές διευθύνσεις συµπίπτουν µε τις φυσικές διευθύνσεις σε περιβάλλοντα προσδιορισµού διευθύνσεων κατά την µετάφραση και φόρτωση Οι λογικές διευθύνσεις διαφέρουν από τις φυσικές διευθύνσεις σε περιβάλλοντα προσδιορισµού διευθύνσεων κατά την εκτέλεση Σελίδα 36
Μονάδα ιαχείρισης Μνήµης Memory-Management Unit (MMU) Ειδική συσκευή του υλικού του συστήµατος που αντιστοιχίζει τις λογικές διευθύνσεις σε φυσικές διευθύνσεις Το πρόγραµµα του χρήστη ασχολείται µε τις λογικές διευθύνσεις και δε βλέπει τις πραγµατικές φυσικές διευθύνσεις (οι οποίες υπολογίζονται από τις λογικές διευθύνσεις και την MMU διαφανώς προς το πρόγραµµα του χρήστη) Σελίδα 37
Μονάδα ιαχείρισης Μνήµης (συνέχεια) Ένα απλό σχήµα MMU, περιλαµβάνει τον καταχωρητή µετατόπισης (relocation register), η τιµή του οποίου προστίθεταισεκάθελογικήδιεύθυνσηπουδηµιουργείται καθώς αυτή αποστέλλεται στη µνήµη Έλεγχος ορίων µέσω καταχωρητή ορίου (limit register), η τιµή του οποίου ελέγχεται πριν γίνει η προσαρµογή της λογικής διεύθυνσης Ητιµή των καταχωρητών αλλάζουν σε κάθε context switch Σελίδα 38
ιευθυνσιοδότηση µε Χρήση Καταχωρητών Μετατόπισης και Ορίου Σελίδα 39
Ξεπερνώντας τον Περιορισµό της Συνεχόµενης Μνήµης - Σελιδοποίηση Η απαίτηση ο κώδικας ενός προγράµµατος να φορτώνεται (ολόκληρος) σε µια συνεχόµενη περιοχή µνήµης δηµιουργεί πρόβληµα εξωτερικού κατακερµατισµού Μπορεί να υπάρχουν διάσπαρτα ελεύθερα τµήµατα µνήµης που δεν µπορούν να χρησιµοποιηθούν - εκτός και αν υποστηρίζεται µετατόπιση κώδικα (που διευκολύνεται από την ύπαρξη της MMU) Σελίδα 40
Σελιδοποίηση (Paging) Η σελιδοποίηση λύνει το πρόβληµα του εξωτερικού κατακερµατισµού επιτρέποντας ταυτόχρονα την φόρτωση του προγράµµατος σε διάσπαρτα τµήµατα της κύριας µνήµης (δεν άρουµε την δεύτερη απαίτηση, ότι θα πρέπει να φορτωθεί όλος ο λογικός χώρος διευθύνσεων µιας διεργασίας στη µνήµη) Ηφυσικήµνήµη χωρίζεταισετµήµατα ίσου µεγέθους (πλαίσια), ενώ η λογική µνήµη του προγράµµατος χωρίζεται σε τµήµατα µε το ίδιο µέγεθος (σελίδες). Το µέγεθος είναι συνήθως 512-8192 bytes Η επιλογή της δύναµης του 2 για µέγεθος πλαισίου/σελίδας απλοποιεί τη µετατροπή µιας λογικής διεύθυνσης σε φυσική Σελίδα 41
Σελιδοποίηση (συνέχεια) Αν ο αριθµός των bits των λογικών διευθύνσεων είναι m και το µέγεθος σελίδας είναι 2 n, τότε: τα «υψηλότερα» (most significant) m-n bits µιας λογικής διεύθυνσης προσδιορίζουν τον αριθµό της σελίδας και τα υπόλοιπα n bits τη µετατόπιση µέσα στην σελίδα Η αντιστοίχιση του αριθµού µιας σελίδας και της φυσικής διεύθυνσης του πλαισίου γίνεται µέσω του πίνακα σελίδων (page table) Σελίδα 42
Σελιδοποίηση - Παράδειγµα Ιδεατή µνήµη µεγέθους 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 Σελίδα 43
Λογικός και Φυσικός Χώρος ιεργασίας Σελίδα 44
Αρχιτεκτονική Μετάφρασης ιευθύνσεων µε Σελιδοποίηση Σελίδα 45
Ανάθεση Πλαισίων σε ιεργασία Πριν την ανάθεση Μετά την ανάθεση Σελίδα 46
Πρόσβαση στον Πίνακα Σελίδων Ο πίνακας σελίδων τηρείται στην κύρια µνήµη του συστήµατος Ο καταχωρητής βάσης του πίνακα σελίδων (page-table base register (PTBR)) δείχνει στον πίνακα σελίδων Ο καταχωρητής µήκους του πίνακα σελίδων (page-table length register (PTLR)) δείχνει το µέγεθός του Με αυτό το σχήµα, κάθε προσπέλαση σε δεδοµένα ή εντολή του προγράµµατος απαιτεί δύο προσπελάσεις στη µνήµη: µια για τον πίνακα σελίδων µια για τα δεδοµένα/εντολή Τη λύση δίνει το υλικό! Σελίδα 47
Συσχετιστική Μνήµη Το πρόβληµα αυτό λύνεται µε χρήση υλικού γρήγορης αναζήτησης που καλείται συσχετιστική µνήµη (associative memory) ή ενδιάµεση µνήµη µετάφρασης (translation look-aside buffers TLBs) υνατότητα παράλληλης αναζήτησης! Μετάφραση διεύθυνσης (A, A ): Αν το A είναι στη συσχετιστική µνήµη, δώσε τον αντίστοιχο αριθµό πλαισίου Αλλιώς δώσε τον αριθµό πλαισίου από τον πίνακα σελίδων που βρίσκεται στη µνήµη Ζητήµατα: γεµάτο TLB, διαγραφή του σε context switch Σελίδα 48
Υλικό Σελιδοποίησης µε TLB Σελίδα 49
Πραγµατικός Χρόνος Πρόσβασης Αναζήτηση στη Συσχετιστική Μνήµη = ε χρονικές µονάδες Υποθέτουµε χρόνο κύκλου µνήµης 1µs Λόγος Επιτυχίας (Hit ratio) ποσοστό των περιπτώσεων που ο αριθµός σελίδας βρίσκεται στους συσχετιστικούς καταχωρητές. Εξαρτάται σαφώς από το πλήθος τους Λόγος Επιτυχίας = α Πραγµατικός Χρόνος Πρόσβασης (Effective Access Time (EAT)) EAT = (1 + ε) α + (2 + ε)(1 α) = 2 + ε α Σελίδα 50
εδοµέναπίνακασελίδων Απενεργοποίηση της χρήσης γρήγορης µνήµης Τροποποίηση Παρουσία / Απουσία Αριθµός πλαισίου σελίδας Αναφορά Προστασία Bit παρουσίας / απουσίας της σελίδας στη µνήµη και εγκυρότητας Τα bit προστασίας δηλώνουν τα επιτρεπτά είδη προσπέλασης Bit τροποποίησης για την ενηµέρωση αντιγράφου σελίδας στο δίσκο Bit αναφοράς που τίθεται όταν γίνεται µια αναφορά στη σελίδα Απενεργοποίηση αποθήκευσης σελίδων στην κρυφή µνήµη Σελίδα 51
Προστασία Μνήµης Η προστασία της µνήµης υλοποιείται µε το συσχετισµό bits προστασίας µε κάθεπλαίσιοµνήµης Ένα bit εγκυρότητας ακυρότητας (valid-invalid) συνδέεται σε κάθε καταχώρηση του πίνακα σελίδων: Ητιµή έγκυρο δείχνει ότι η συσχετισµένη σελίδα ανήκει στο χώρο λογικών διευθύνσεων της διεργασίας, και άρα είναι µια έγκυρη σελίδα Ητιµή άκυρο δείχνει ότι η σελίδα δεν ανήκει στο χώρο λογικών διευθύνσεων της διεργασίας Σελίδα 52
Bits Εγκυρότητας Πλαισίων Σελίδα 53
Σελιδοποίηση (συνέχεια) Σηµαντική ιδιότητα της σελιδοποίησης είναι ο πλήρης διαχωρισµός µεταξύ της άποψης του χρήστη για το χώρο διευθύνσεων ενός προγράµµατος και την πραγµατικότητα στη φυσική µνήµη Λύνει το πρόβληµα του εξωτερικού κατακερµατισµού αλλά όσο µεγαλύτερο το µέγεθος της σελίδας τόσο περισσότερη µνήµη µένει ανεκµετάλλευτη µέσα σε µισογεµάτα πλαίσια Όσο µικρότερο το µέγεθος της σελίδας τόσο µεγαλύτερος ο πίνακας των σελίδων για κάθε διεργασία (οπότε χάνεται κύρια µνήµη γιατην αποθήκευση του) Σελίδα 54
Ιεραρχικοί Πίνακες Σελίδων - Σελιδοποίηση ύο Επιπέδων (Ι) Το µεγάλο µέγεθος των πινάκων σελίδων αντιµετωπίζεται µε την σελιδοποίηση του πίνακα σελίδων, δηλαδή την σελιδοποίηση πολλών επιπέδων. Στη συνέχεια περιοριζόµαστε στα 2 επίπεδα: Κάθε διεργασία έχει έναν πίνακα πρώτου επιπέδου (εξωτερικός πίνακας) µε διευθύνσεις βάσης πινάκων δευτέρου επιπέδου (πίνακες), που περιέχουν τις διευθύνσεις των πλαισίων Σελίδα 55
Ιεραρχικοί Πίνακες Σελίδων - Σελιδοποίηση ύο Επιπέδων (ΙΙ) Μια λογική διεύθυνση χωρίζεται σε 3 τµήµατα: Τα πρώτα k bits είναι ο αριθµός του πίνακα δεύτερου επιπέδου µέσα στον εξωτερικό πίνακα Τα συνεχόµενα m bits είναι ο αριθµός της σελίδας µέσαστονπίνακαδεύτερουεπιπέδου Τα τελευταία n bits είναι η µετατόπιση µέσα στο πλαίσιο Σελίδα 56
Σχηµατική Αναπαράσταση Σελιδοποίησης 2 Επιπέδων Σελίδα 57
Μετάφραση ιεύθυνσης µε Σελιδοποίηση 2 Επιπέδων Σελίδα 58
Πίνακες Σελίδων µε Hashing Συνηθισµένη προσέγγιση σε λογικούς χώρους διευθύνσεων > 32 bit Οαριθµός της σελίδας αποθηκεύεται σε hash table, όπου κάθε στοιχείο δείχνει σε µια λίστα από στοιχεία του πίνακα σελίδων Πρόσβαση στο hash table γίνεται µε βάση τον αριθµό σελίδας, και εν συνεχεία γίνεται αναζήτηση στην λίστα µέχρι να βρεθεί το σωστό στοιχείο του πίνακα Αν δεν υπάρχει τέτοιο στοιχείο τότε ο αριθµός της σελίδας είναι λανθασµένος Σελίδα 59
Αναπαράσταση Σελιδοποίησης µε Hash Table Σελίδα 60
Αντεστραµµένοι Πίνακες Σελίδων Μια καταχώρηση για κάθε πραγµατικό πλαίσιο µνήµης Η καταχώρηση αποτελείται από την ιδεατή διεύθυνση τηςσελίδαςπουείναιαποθηκευµένη σε αυτόν τον πραγµατικό χώρο µνήµης, µαζί µε πληροφορίες για τη διεργασία που κατέχει τη σελίδα Μειώνεται ο χώρος αποθήκευσης του πίνακα σελίδων, αυξάνεται όµως ο χρόνος αναζήτησης σε αυτόν σε κάθε αναφορά σελίδας Χρησιµοποιείται συσχετιστική µνήµη, η οποία κρατάει τους πιο πρόσφατους εντοπισµούς καταχωρήσεων Σελίδα 61
Αρχιτεκτονική Αντεστραµµένων Πινάκων Σελίδων Σελίδα 62
Πρόσβαση σε Κοινές Σελίδες Μια διεργασία µπορείναέχεισελίδεςκοινέςµε άλλες διεργασίες Ένα αντίγραφο κώδικα µόνο για ανάγνωση (reentrant) µπορεί να διαµοιράζεται µεταξύ διεργασιών (π.χ., επεξεργαστές κειµένου, µεταγλωττιστές κ.λπ.) Οι πίνακες των διεργασιών δείχνουν στο ίδιο πλαίσιο ιασφαλίζεται η απαγόρευση εγγραφής σε αυτό το πλαίσιο Πρόβληµα ότανχρησιµοποιούνται αντεστραµµένοι πίνακες σελίδων Σελίδα 63
Παράδειγµα Πρόσβασης σε Κοινές Σελίδες Σελίδα 64
Κατάτµηση/Τµηµατοποίηση (Segmentation) Σχήµα διαχείρισης µνήµης που υποστηρίζει την άποψη του χρήστη για τη µνήµη ενός προγράµµατος Ένα πρόγραµµα είναι µια συλλογή από ξεχωριστά τµήµατα που έχουν διαφορετικό λόγο ύπαρξης: Κυρίως πρόγραµµα (main program) Υποπρογράµµατα, συναρτήσεις (procedures, functions) Αντικείµενα (objects) Καθολικές µεταβλητές (global variables) Τοπικές µεταβλητές / στοίβα (local variables, stack) Πίνακες συµβόλων (symbol table) Σελίδα 65
Άποψη του Χρήστη για το Πρόγραµµα και Κατάτµηση 1 global variables 4 functionx 2 stack 3 main 1 4 2 3 Λογικός χώρος προγράµµατος Φυσικός χώρος µνήµης Σελίδα 66
ιευθυνσιοδότηση µε Κατάτµηση Η λογική διεύθυνση αποτελείται από m bits που είναι ο αριθµός του τµήµατος, και n bits που είναι η µετατόπιση µέσα στο τµήµα Πίνακας τµηµάτων (segment table) απεικονίζει αριθµούς τµηµάτων σε φυσικές διευθύνσεις, όπου κάθε καταχώρηση έχει: Βάση περιέχει τη διεύθυνση βάσης από την οποία ξεκινάει το τµήµα αυτό στη µνήµη Όριο προσδιορίζει το µήκος του τµήµατος Καταχωρητής βάσης του πίνακα τµηµάτων (segment-table base register STBR) δείχνει τη θέση του πίνακα τµηµάτων στη µνήµη Καταχωρητής µήκους πίνακα τµηµάτων (segment-table length register - STLR), δείχνει το πλήθος των τµηµάτων. Ο αριθµός τµήµατος είναι έγκυρος αν s < STLR Σελίδα 67
Αρχιτεκτονική Κατάτµησης Σελίδα 68
Παράδειγµα Κατάτµησης Σελίδα 69
Κατάτµηση (συνέχεια) Μετατόπιση: υναµική µέσω του πίνακα τµηµάτων ιαµοίραση: Σε επίπεδο τµήµατος. Πρέπει να έχουν τον ίδιο αριθµό Ανάθεση διαθέσιµων τµηµάτων µνήµης σε διεργασίες: Πρώτη τοποθέτηση / βέλτιστη τοποθέτηση Εξωτερικός κατακερµατισµός Προστασία σε επίπεδο τµήµατος: bit εγκυρότητας = 0 µη έγκυρο τµήµα ικαιώµατα ανάγνωσης/γραφής/εκτέλεσης Σελίδα 70
ιαµοίραση Τµηµάτων Σελίδα 71
Κατάτµηση µε Σελιδοποίηση - MULTICS Η κατάτµηση εισάγει πάλι το πρόβληµα του εξωτερικού κατακερµατισµού και της χρονοβόρας αναζήτησης για ελεύθερα τµήµατα µνήµης Η κατάτµηση µε σελιδοποίηση, σελιδοποιεί τα τµήµατα Η καταχώρηση του πίνακα τµηµάτων δεν περιέχει τη διεύθυνση βάσης του τµήµατος, αλλά τη διεύθυνση βάσης ενός πίνακα σελίδων για αυτό το τµήµα Έτσι λύνονται: Το πρόβληµα του εξωτερικού κατακερµατισµού Το πρόβληµα τωνµεγάλων χρόνων αναζήτησης τµηµάτων Σελίδα 72
Αρχιτεκτονική Κατάτµησης µε Σελιδοποίησης -MULTICS Σελίδα 73
Κατάτµησης µε Σελιδοποίηση 2 Επιπέδων - Intel 386 Σελίδα 74
Εναλλαγή Προγραµµάτων στην Μνήµη (swapping) Ηκυρίωςµνήµη του συστήµατος δεν φτάνει για την φόρτωση όλων των προγραµµάτων προς εκτέλεση, και είναι επιθυµητό να υποστηριχθεί η ταυτόχρονη (και όχι η σειριακή) εκτέλεση τους Χρήση µονάδας αποθήκευσης (γρήγορος δίσκος µε αρκετόχώρογια να χωρέσει πολλές διεργασίες) για την προσωρινή αποµάκρυνση διεργασιών από την µνήµη έτσι ώστε να µπορέσουν να φορτωθούν οι υπόλοιπες διεργασίες Ουρά εισόδου (input queue): σειρά από διεργασίες που αναµένουν (στον δίσκο) να τους δοθεί χώρος στην κύρια µνήµη, προκειµένου να µπορέσουν να εκτελέσουν το πρόγραµµα που έχουν αναλάβει Σελίδα 75
Σχηµατική Αναπαράσταση Εναλλαγής Σελίδα 76
Εναλλαγή Προγραµµάτων και Χρονοπρογραµµατισµός Το µεγαλύτερο µέρος του χρόνου εναλλαγής είναι ο χρόνος µετακίνησης από/προς το αποθηκευτικό µέσο Οχρόνοςµετακίνησης είναι ευθέως ανάλογος µε την ποσότητα της µνήµης που µετακινείται Παραλλαγές της εκδοχής της εναλλαγής απαντώνται σε πολλά συστήµατα, π.χ. UNIX, Linux, Windows Η εναλλαγή µνήµης πρέπει να χρησιµοποιηθεί σε συνδυασµό µε τον χρονοπρογραµµατισµό της ΚΜΕ(εκ περιτροπής ή προτεραιότητες) Κακός συντονισµός µεταξύ χρονοπρογραµµατισµού ΚΜΕ και εναλλαγής µνήµης ή/και παρουσία πολλών διεργασιών στο σύστηµα µπορεί να οδηγήσει σε thrashing όπου το σύστηµα απλά πραγµατοποιεί swapping χωρίς να γίνεται «χρήσιµη» δουλειά Σελίδα 77