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

Το τμήμα του λειτουργικού συστήματος που διαχει­ρίζεται τη μνήμη λέγεται διαχειριστής μνήμης (memory manager). Μεταξύ άλλων, ο διαχειριστής της μνήμης παρακολουθεί ποια τμήματα της μνήμης είναι σε χρήση και ποια όχι.

Ανταλλαγή (Swapping)

Για να εκτελεστεί ένα πρόγραμμα πρέπει τόσο ο εκτελέσιμος κώδικάς του, όσο και τα δεδομένα του να έ­χουν φορτωθεί στην κύρια μνήμη. Ένας υπολογιστής συνήθως εξυπηρετεί ταυτόχρονα ένα σύνολο προ­γραμμάτων που για να εκτελεσθούν θα πρέπει να βρί­σκονται στην κύρια μνήμη. Έτσι, συνήθως υπάρχουν προγράμματα που δε μπορούν να χωρέσουν ταυτόχρο­να στην κύρια μνήμη. Τα προγράμματα αυτά βρίσκο­νται αποθηκευμένα στο δίσκο και, για να εκτελεσθούν, πρέπει πρώτα να έρθουν στην κύρια μνήμη. Για να φορ­τωθούν στην κύρια μνήμη πρέπει να ελευθερωθεί χώ­ρος από κάποιο άλλο πρόγραμμα που θα μεταφερθεί με τη σειρά του στο δίσκο.

Η παραπάνω διαδικασία της μεταφοράς διεργασιών ονομάζεται ανταλλαγή (swapping). Βασικό μειονέκτημα της ανταλλαγής των διεργασιών είναι οι διάφο­ρες χρονικές καθυστερήσεις που δημιουργούνται.

 

Τμήματα (Segments)

Τα λειτουργικά συστήματα των υπολογιστών επιτρέπουν τη διαίρεση των προγραμμάτων σε τμήματα. Τα τμήματα (segments) είναι υποσύνολα προγραμ­μάτων που μπορούν να φορτωθούν στη μνήμη ανεξάρτητα από το κύριο πρό­γραμμα.

  1. Συνεχόμενη καταχώρηση (Single continuous allocation)

Η απλούστερη τεχνική διάθεσης μνήμης είναι αυτή στην οποία κάθε φορά έ­χουμε ένα μόνο πρόγραμμα στη μνήμη, το οποίο μπορεί να τη χρησιμοποιεί στο σύνολό της. Η μνήμη διαμοιράζεται ανάμεσα στο λειτουργικό σύστημα και σε έ­να μόνο πρόγραμμα του χρήστη. Όταν το πρόγραμμα τελειώσει η μνήμη ελευ­θερώνεται.

  1. Διαβαθμισμένη καταχώρηση (Partitioned allocation)

Όσα συστήματα υποστηρίζουν πολυπρογραμματισμό επιτρέπουν πολλά προγράμματα να είναι ταυτόχρονα αποθηκευμένα στη μνήμη.

Η τμηματική διάθεση μνήμης είναι η απλούστερη τεχνική που μπορεί να υ­ποστηρίξει πολυπρογραμματισμό. Η μνήμη χωρίζεται σε περιοχές ή χωρί­σματα (partitions) και κάθε πρόγραμμα καταλαμβάνει από μια περιοχή. Ο διαχει­ριστής μνήμης αναζητά, για κάθε πρόγραμμα που φορτώνεται, μια αρκετά μεγά­λη περιοχή (χώρισμα) της μνήμης που να το χωράει.

1.Στατικός προσδιορισμός των περιοχών (Staticpartitionspecification)

Ο απλούστερος τρόπος να χωρίσουμε τη μνήμη σε άνισες συνήθως περιοχές (partitions) είναι ο στατικός. Στην περίπτωση αυτή το μέγεθος της περιοχής αυτής παραμένει σταθερό καθόλη τη διάρκεια λειτουργίας του συστήματος.

Το βασικό μειονέκτημα της τεχνικής αυτής είναι ότι ένα μεγάλο μέρος της μνήμης μένει αχρησιμοποίητο, αφού οι περιοχές είναι σταθερού μεγέθους και οποιοδήποτε υπόλοιπο που δε χρησιμοποιείται από κάποιο πρόγραμμα, μένει αναξιοποίητο.

2.Δυναμικός προσδιορισμός των περιοχών (Dynamic par­tition specification)

Στη μέθοδο αυτή οι περιοχές είναι μεταβλητού με­γέθους. Ο αριθμός και το μέγεθος των περιοχών προσ­διορίζεται κατά την εκτέλεση των προγραμμάτων, ώστε αυτές να καλύπτουν τις ανάγκες των συγκεκριμένων προγραμμάτων

Η ευελιξία που μας προσφέρεται στο δυναμικό προσδιορισμό των περιοχών, οφείλεται στο γεγονός ότι δε δεσμεύουμε τη μνήμη με σταθερό αριθμό περιοχών δια­φορετικών μεγεθών (μικρών ή μεγάλων), όπως στο στατικό προσδιορισμό περιοχών. Έτσι αξιοποιούμε καλύτερα τις διάφο­ρες περιοχές της μνήμης και αυξάνουμε την επίδοσή της.

Τα μειονεκτήματα της μεθόδου αυτής παρατηρούνται στους πολύπλοκους αλγό­ριθμους διάθεσης της μνήμης και παρακο­λούθησης των μεταβολών που συμβαίνουν σ? αυτή.

 

Εικονική μνήμη (Virtual memory)

Η εικονική μνήμη (virtual memory) βασίζεται στην ιδέα ότι το μέγεθος ενός προγράμματος και των δεδομένων του μπορεί να ξεπερνά τα όρια της διαθέσι­μης φυσικής μνήμης που απαιτείται για τη φόρτωση και εκτέλεσή του.

Δύο σημαντικές χρήσεις της εικονικής μνήμης είναι να παρέχει στον προ­γραμματιστή ένα χώρο διευθύνσεων μεγαλύτερο από αυτόν της μηχανής του υ­πολογιστή και να επιτρέπει την εκτέλεση μιας διεργασίας ακόμα και αν αυτή δε βρίσκεται ολόκληρη στη μνήμη.

Τα περισσότερα συστήματα εικονικής μνήμης χρησιμοποιούν την τεχνική της σελιδοποίησης (paging) ή του τεμαχισμού (segmentation) ή συνδυασμού των δύο.

 

Σελιδοποίηση (Paging)

Η κύρια μνήμη (ο χώρος φυσικών διευθύνσεων) των υπολογιστών που χρησι­μοποιούν σελιδοποίηση αποτελείται από ισομεγέθη τμήματα ορισμένου μήκους (μέγεθος σελίδας, page size) που ονομάζονται πλαίσια σελίδων (page frames) και το κάθε πρόγραμμα (ο χώρος εικονικών διευθύνσεων) θεωρείται ότι είναι διηρημένο σε σελίδες (pages) του ίδιου μεγέθους.
Τα πλαίσια σελίδων μπορούν να κατανεμηθούν στις διεργασίες που βρίσκο­νται στο

σύστημα, έτσι ώστε σε κάποια χρονική στιγμή μια διεργασία να έχει με­ρικές από τις σελίδες της (τις ενεργές της σελίδες, active pages) στην κύρια μνήμη και τις υπόλοιπες (τις μη ενεργές, inactive pages) στη βοηθητική μνήμη.

Για να υλοποιηθεί η σελιδοποίηση, το λειτουργικό σύστημα χρειάζεται να διατη­ρεί έναν πίνακα σελίδων (page table) για την κάθε διεργασία. Έτσι, ο πίνακας αυτός δείχνει, για κάθε σελίδα της εικονικής μνήμης, το πλαίσιο της σελίδας της φυσικής μνήμης που της αντιστοιχεί ή ότι η σελίδα βρίσκεται στη δευτερεύουσα μνήμη.

Η τεχνική της σελιδοποίησης επιτυγχάνει τη δυναμική μεταθεσιμότητα και ει­κονική μνήμη μεγάλης χωρητικότητας, που είναι δύο από τους σκοπούς της δι­αχείρισης της μνήμης που αναφέραμε παραπάνω.

 

Ένα μειονέκτημα της σελιδοποίησης είναι ο εσωτερικός κατακερματισμός (internal fragmentation), δηλαδή ότι η τελευταία σελίδα του προγράμματος δεν καλύπτει πλήρως το πλαίσιο της φυσικής μνήμης που τη “φιλοξενεί”.

 

 

 

 

 

 

Τεμαχισμός (Segmentation)

Όπως αναφέραμε, ένας σκοπός της διαχείρισης της μνήμης είναι η οργάνω­ση του προγράμματος σε δομοενότητες (modules). Ο σκοπός αυτός επιτυγχά­νεται με την τεχνική του τεμαχισμού.

Ένας άλλος στόχος του τεμαχισμού είναι η αποφυγή του εσωτερικού κατακερ­ματισμού, ώστε στο πρόγραμμα να δίνεται όση ακριβώς μνήμη του χρειάζεται.

Ο εικονικός χώρος διευθύνσεων του προγράμματος διαιρείται σε τμήματα δι­αφορετικού μεγέθους, που αντιστοιχούν στις δομοενότητες του προγράμματος, δηλαδή σε ομάδες υποπρογραμμάτων, ομάδες δομών δεδομένων κ.λπ.. Όπως και στη σελιδοποίηση, τα τμήματα δεν είναι απαραίτητο να καταλαμβάνουν συ­νεχόμενο χώρο στη μνήμη, ούτε να βρίσκονται όλα ταυτόχρονα σ? αυτήν.

Για κάθε διεργασία υπάρχει ένας πίνακας τμημάτων της διεργασίας. Κάθε στοιχείο του πίνακα περιέχει, μεταξύ άλλων, τη διεύθυνση της βάσης κάθε τμή­ματος (αρχική διεύθυνση στη μνήμη) και το μήκος του.

 

Τα όσα αναφέραμε για τη σελιδοποίηση ισχύουν και για τον τεμαχισμό, εκτός του ότι τα τμήματα έχουν διαφορετικά μεγέθη και μπορούν να είναι φορτωμένα σ? οποιοδήποτε σημείο της κύριας μνήμης (δηλαδή στην περίπτωση αυτή, η μνή­μη δε θεωρείται διηρημένη σε πλαίσια). Το υλικό πραγματοποιεί την απεικόνιση μεταξύ των εικονικών διευθύνσεων των εντολών του προγράμματος και των φυ­σικών διευθύνσεων της κύριας μνήμης ως εξής:

Εκτός από τη λογική οργάνωση του προγράμματος σε δομοενότητες, η τε­χνική του τεμαχισμού έχει επίσης το πλεονέκτημα ότι επιτρέπει την εύκολη υλο­ποίηση του (κατα) μερισμού κοινών τμημάτων, που βρίσκονται στη μνήμη, από περισσότερες της μίας διεργασίες.

Το βασικό μειονέκτημα του τε­μαχισμού είναι ο εξωτερικός κατα­κερματισμός (external fragmenta­tion) που προκύπτει από την ανταλ­λαγή τμημάτων διαφορετικού μεγέ­θους. Ο εξωτερικός κατακερματι­σμός είναι η εμφάνιση πολλών κε­νών (empty) περιοχών της μνήμης που ονομάζονται οπές (holes). Ένα άλλο μειονέκτημα είναι ότι το μέγι­στο μέγεθος μιας δομοενότητας περιορίζεται από το μέγεθος της φυσικής μνήμης

 

 

Τεμαχισμός με Σελιδοποίηση (Paged Segmentation)

Σε όλους τους σύγχρονους υπολογιστές χρησιμοποιείται ένας συνδυασμός των δύο τεχνικών, η τεχνική του τεμαχισμού με σελιδοποίηση, γιατί συνδυάζει τα πλεονεκτήματα και των δύο μεθόδων. Επιπλέον, αποφεύγει το μειονέκτημα του τεμαχισμού ότι κάθε τμήμα καταλαμβάνει μια συνεχόμενη περιοχή στη μνήμη.

Στις μηχανές αυτές (paged segmented machines) η κύρια μνήμη θεωρείται χωρισμένη σε ισομεγέθη πλαίσια και ο εικονικός χώρος διευθύνσεων του προ­γράμματος διαιρείται σε τμήματα διαφορετικού μεγέθους που αντιστοιχούν στις λογικές δομοενότητες του προγράμματος. Το κάθε τμήμα αποτελείται από ισο­μεγέθεις σελίδες που έχουν το ίδιο μέγεθος με τα πλαίσια της μνήμης. Η κάθε εικονική διεύθυνση αποτελείται από έναν αριθμό τμήματος, έναν αριθμό σελίδας του τμήματος και έναν αριθμό λέξης μέσα στη σελίδα.

 

Το μειονέκτημα αυτής της μεθόδου είναι το αυξημένο κόστος του υλικού. Παρόλα αυτά η τεχνική αυτή χρησιμοποιείται στους περισσότερους σύγχρο­νους υπολογιστές, διότι συνδυάζει τα πλεονεκτήματα του τεμαχισμού και της σελιδοποίησης.