- Η διαχείριση μνήμης βασίζεται στον τρόπο με τον οποίο η μνήμη RAM διαμερίζεται και ανακατανέμεται μεταξύ των διεργασιών, επιδιώκοντας την εξισορρόπηση της απόδοσης και της αξιοποίησης.
- Μοντέλα όπως τα σταθερά διαμερίσματα, τα μεταβλητά διαμερίσματα, η σελιδοποίηση και η τμηματοποίηση αντιμετωπίζουν τον εσωτερικό και εξωτερικό κατακερματισμό με διαφορετικούς τρόπους.
- Ο συνδυασμός σελιδοποίησης, τμηματοποίησης και εικονικής μνήμης επιτρέπει την εκτέλεση περισσότερων και μεγαλύτερων διεργασιών από ό,τι μπορεί να φιλοξενήσει η φυσική μνήμη.
- Οι αποφάσεις σχεδιασμού και διαχείρισης μνήμης επηρεάζουν άμεσα την αντιληπτή απόδοση σε υπολογιστές και κινητές συσκευές.
⚠️ Το ψηφιακό σας δακτυλικό αποτύπωμα (διεύθυνση IP) είναι εκτεθειμένο!
Η διεύθυνση IP σας είναι: ανίχνευση…
Κάντε streaming/download/«Σερφάρισμα» στο διαδίκτυο ανώνυμα με το Surfshark .
🌐 Μόνο $45.63 - 27 μήνες + Unlimited devicesΤο περιεχόμενο αυτού του σεναρίου δημιουργείται αυστηρά για εκπαιδευτικούς σκοπούς. Η χρήση γίνεται με δική σας ευθύνη.
Όταν μιλάμε για ανακατανομή και διαμέριση εσωτερικής μνήμης, δεν αναφερόμαστε μόνο σε ένα θεωρητικό ζήτημα του λειτουργικού συστήματος, αλλά σε ένα πολύ πρακτικό θέμα που επηρεάζει την πραγματική απόδοση ενός υπολογιστή, ενός διακομιστή ή ακόμα και μιας κινητής συσκευής. Η κατανόηση του τρόπου με τον οποίο διαιρείται, δεσμεύεται, προστατεύεται και επαναχρησιμοποιείται η κύρια μνήμη είναι το κλειδί για να κατανοήσουμε γιατί ορισμένα συστήματα λειτουργούν άψογα ενώ άλλα λειτουργούν αργά, ακόμη και με το ίδιο υλικό.
Στις επόμενες ενότητες, θα εξερευνήσουμε, με αρκετή λεπτομέρεια, τις διάφορες τεχνικές διαμέρισης και ανακατανομής μνήμης : από τα απλούστερα συστήματα μίας διεργασίας έως προηγμένα μοντέλα με εικονική μνήμη, σελιδοποίηση, τμηματοποίηση και συνδυασμούς αυτών. Θα εξετάσουμε επίσης κοινά προβλήματα όπως ο εσωτερικός και εξωτερικός κατακερματισμός, και πώς όλα αυτά μεταφράζονται σε πρακτικές αποφάσεις σχεδιασμού και διαχείρισης.
Επισκόπηση της διαχείρισης μνήμης
Μπορούμε να φανταστούμε την κύρια μνήμη ως ένα μεγάλο σύνολο αριθμημένων κελιών , όπου κάθε κελί έχει μια διεύθυνση και μπορεί να αποθηκεύσει οδηγίες ή δεδομένα. Για να εκτελεστεί ένα πρόγραμμα, ο κώδικάς του και τα δεδομένα του πρέπει να βρίσκονται σε αυτήν την κύρια μνήμη (RAM), από όπου ο επεξεργαστής θα διαβάζει οδηγίες, θα έχει πρόσβαση σε τελεστέους και θα γράφει αποτελέσματα.
Η λειτουργική μονάδα του λειτουργικού συστήματος που είναι υπεύθυνη για αυτήν την εργασία είναι ο διαχειριστής μνήμης , ο οποίος αποφασίζει πόση μνήμη εκχωρείται σε κάθε διεργασία, πώς προστατεύεται κάθε περιοχή και τι συμβαίνει όταν εξαντληθεί η μνήμη. Εάν αυτή η διαχείριση δεν γίνεται σωστά ή αναποτελεσματικά, το αποτέλεσμα είναι άμεσα αισθητό: περισσότερη αναμονή, περισσότερες προσβάσεις στο δίσκο και σαφής μείωση της συνολικής απόδοσης.
Με την εξέλιξη των υπολογιστικών συστημάτων, έχουν προταθεί προοδευτικά πιο εξελιγμένα μοντέλα διαχείρισης μνήμης , ξεκινώντας από πολύ απλά συστήματα, σχεδιασμένα να εκτελούν μία μόνο εργασία, μέχρι τα σύγχρονα σχήματα εικονικής μνήμης όπου η προβολή της μνήμης (λογικός χώρος) από το πρόγραμμα είναι πολύ διαφορετική από τον πραγματικό φυσικό χώρο
- Ρίξε μια ματιά και εδώ: Τεχνητή Νοημοσύνη και Βοήθεια: Οδηγός για Προηγμένες Ρυθμίσεις Φωνής
Βασικό μοντέλο: μνήμη για μία μόνο διεργασία
Στους πρώτους υπολογιστές, η κύρια μνήμη χωριζόταν σε δύο μεγάλες, σαφώς ξεχωριστές περιοχές : μία που προοριζόταν για το λειτουργικό σύστημα (συχνά ονομάζεται οθόνη) και μία άλλη για ένα πρόγραμμα ενός χρήστη. Μόνο μία διεργασία μπορούσε να εκτελείται κάθε φορά και, όταν τελείωνε, ο έλεγχος επέστρεφε στο λειτουργικό σύστημα, το οποίο φόρτωνε το επόμενο πρόγραμμα.
Ένα κλασικό παράδειγμα αυτής της προσέγγισης είναι οι πρώιμες εκδόσεις του MS-DOS , όπου το λειτουργικό σύστημα και, σε πολλές περιπτώσεις, ο κώδικας του BIOS καταλάμβαναν το πάνω μέρος του χώρου διευθύνσεων, αφήνοντας το υπόλοιπο για το πρόγραμμα που εκτελούσε. Δεν υπήρχε πραγματικός πολυπρογραμματισμός ή σύνθετη δυναμική ανακατανομή διευθύνσεων: ήταν ένα απλό και άμεσο σχήμα.
Συνεχής κατανομή μνήμης και διαμέριση
Όταν εισάγεται ο πολυπρογραμματισμός, δημιουργείται ένα μοντέλο στο οποίο ο λογικός χώρος μνήμης κάθε διεργασίας καταλαμβάνει μια συνεχή περιοχή φυσικής μνήμης. Δηλαδή, ο κώδικας, τα δεδομένα και η στοίβα της διεργασίας πρέπει να βρίσκονται σε διαδοχικές φυσικές διευθύνσεις. Το λειτουργικό σύστημα είναι υπεύθυνο για την επιλογή σε ποια συνεχή περιοχή θα τοποθετήσει κάθε διεργασία και όταν μια διεργασία τερματιστεί, αποδεσμεύει αυτό το μπλοκ.
Αυτή η προσέγγιση, γνωστή ως συνεχής κατανομή μνήμης (contiguous memory allocation ), είναι απλή στην εφαρμογή της, αλλά έχει τα μειονεκτήματά της. Καθώς οι διεργασίες φορτώνονται και εκφορτώνονται, εμφανίζονται ελεύθεροι χώροι διαφόρων μεγεθών και ο τρόπος διαίρεσης και επαναχρησιμοποίησης αυτών των χώρων είναι αυτός που οδηγεί στις διαφορετικές τεχνικές διαμέρισης που θα δούμε παρακάτω.
Διαχείριση μνήμης με σταθερά διαμερίσματα
Στα σχήματα σταθερής διαμέρισης, η κύρια μνήμη προδιαιρείται σε τμήματα σταθερού μεγέθους πριν από την εκτέλεση των προγραμμάτων. Κάθε ένα από αυτά τα τμήματα, ή διαμερίσματα, μπορεί να περιέχει μία μόνο διεργασία, υπό την προϋπόθεση ότι το λογικό της μέγεθος χωράει σε αυτό.
Αυτή η μέθοδος είναι επίσης γνωστή ως Πολυπρογραμματισμός με Σταθερό Αριθμό Εργασιών (MFT) . Ο μέγιστος αριθμός διεργασιών που μπορούν να εκτελούνται ταυτόχρονα είναι ίσος με τον αριθμό των διαμερισμάτων. Είναι ένα σχετικά εύκολο στη διαχείριση σύστημα, αλλά αντιμετωπίζει ένα συνεχές δίλημμα: πώς να επιλέξετε το μέγεθος του διαμερίσματος για να αποφύγετε την σπατάλη μνήμης.
Ουρές διεργασιών και οργάνωση εργασίας
Το φόρτο εργασίας μπορεί να οργανωθεί με διάφορους τρόπους. Μια επιλογή είναι να διατηρείται μια ουρά για κάθε διαμέρισμα , έτσι ώστε οι διεργασίες να αντιστοιχίζονται στο διαμέρισμα του οποίου το μέγεθος τους ταιριάζει καλύτερα. Μια άλλη πιθανότητα είναι μια ενιαία ουρά έτοιμων διεργασιών και όταν ένα διαμέρισμα ελευθερωθεί, ο χρονοπρογραμματιστής επιλέγει τη διεργασία που της ταιριάζει από τη γενική ουρά.
Το μοντέλο μίας ουράς απλοποιεί τη δομή, αλλά τείνει να κάνει διακρίσεις σε βάρος των μικρών διεργασιών: τους εκχωρείται εύκολα ένα διαμέρισμα πολύ μεγαλύτερο από αυτό που χρειάζονται, σπαταλώντας χώρο. Οι διεργασίες δεν εγκαταλείπουν την ουρά αιτημάτων μέχρι το λειτουργικό σύστημα να τους εκχωρήσει ένα κατάλληλο διαμέρισμα, συνήθως ακολουθώντας ένα κριτήριο FIFO (πρώτο μέσα, πρώτο έξω).
Εσωτερικός και εξωτερικός κατακερματισμός σε σταθερά διαμερίσματα
Σε αυτό το πλαίσιο, αναδύονται δύο βασικές έννοιες: ο εσωτερικός κατακερματισμός και ο εξωτερικός κατακερματισμός . Ο εσωτερικός κατακερματισμός συμβαίνει όταν σε μια διεργασία έχει εκχωρηθεί ένα διαμέρισμα πολύ μεγαλύτερο από αυτό που πραγματικά χρειάζεται, έτσι ώστε ο πλεονάζων χώρος μέσα σε αυτό το διαμέρισμα να παραμένει αχρησιμοποίητος αλλά να μην μπορεί να επαναχρησιμοποιηθεί από άλλη διεργασία.
Ο εξωτερικός κατακερματισμός , από την άλλη πλευρά, συμβαίνει όταν υπάρχουν πολλοί μικροί ελεύθεροι χώροι διάσπαρτοι σε όλη τη μνήμη, τόσο μικροί που είναι δύσκολο να τοποθετηθούν διεργασίες μέσα σε αυτούς. Αν και η συνολική ελεύθερη μνήμη μπορεί να είναι σημαντική, επειδή δεν είναι συνεχόμενη ή σωστά ομαδοποιημένη, δεν μπορεί να φιλοξενήσει νέες διεργασίες ενός ορισμένου μεγέθους.
- Δες και αυτό το σχετικό άρθρο: Προηγμένη πλοήγηση με χειρονομίες: Παραγωγικότητα αφής το 2026
Η επίτευξη ισορροπίας μεταξύ του μεγέθους του διαμερίσματος και του μέσου μεγέθους της διεργασίας είναι περίπλοκη. Τα υπερβολικά μεγάλα διαμερίσματα ενθαρρύνουν τον εσωτερικό κατακερματισμό. Τα υπερβολικά μικρά διαμερίσματα μπορούν να οδηγήσουν σε σημαντικό εξωτερικό κατακερματισμό, επειδή καθίσταται δύσκολο να βρεθούν διεργασίες που ταιριάζουν σε αυτά τα κενά.
Πολλαπλά διαμερίσματα σταθερού μεγέθους με μία μόνο ουρά
Στην τεχνική συνεχούς κατανομής μονής ουράς, σταθερού μεγέθους και πολλαπλών διαμερισμάτων , η μνήμη διαιρείται σε σταθερά διαμερίσματα και όλες οι διεργασίες αποθηκεύονται σε μία μόνο ουρά αιτημάτων. Όταν ένα επαρκώς μεγάλο ελεύθερο διαμέρισμα γίνει διαθέσιμο για την πρώτη διεργασία στην ουρά, αυτό κατανέμεται και φορτώνεται στη μνήμη.
Το σύστημα συνήθως ακολουθεί μια σειρά FIFO (First-In, First-Out) στην ουρά διεργασιών , επομένως δεν μεταβαίνει σε μεταγενέστερες διεργασίες, ακόμη και αν αυτές ταιριάζουν καλύτερα στο διαθέσιμο διαμέρισμα. Αυτό μπορεί να μειώσει την αποδοτικότητα, αλλά απλοποιεί την πολιτική προγραμματισμού. Μόλις ολοκληρωθεί η εκτέλεση μιας διεργασίας, αποδεσμεύει πλήρως το διαμέρισμα στο οποίο βρισκόταν, καθιστώντας το ξανά διαθέσιμο για μια άλλη διεργασία.
Αυτό το διάγραμμα απεικονίζει με σαφήνεια τον εσωτερικό κατακερματισμό : εάν μια διεργασία καταλαμβάνει μόνο ένα μέρος ενός διαμερίσματος, ο υπόλοιπος χώρος δεν μπορεί να χρησιμοποιηθεί από άλλη διεργασία. Σε πολλές εκπαιδευτικές εφαρμογές, αυτή η αχρησιμοποίητη περιοχή αναπαρίσταται με διαφορετικό χρώμα (για παράδειγμα, γκρι), έτσι ώστε ο βαθμός σπατάλης χώρου μέσα σε κάθε διαμέρισμα να είναι άμεσα εμφανής.
Συχνές ερωτήσεις σχετικά με αυτό το μοντέλο
Όταν αυτός ο τύπος διαμέρισης αναλύεται λεπτομερώς, προκύπτουν ερωτήματα όπως τι θα συνέβαινε εάν οι περισσότερες εισερχόμενες διεργασίες ήταν πολύ μικρές . Σε αυτό το σενάριο, πολλά διαμερίσματα, ειδικά τα μεγαλύτερα, σπαταλούν σημαντική ποσότητα εσωτερικής μνήμης, καθώς κάθε διεργασία αφήνει ένα σημαντικό μέρος του διατιθέμενου χώρου αχρησιμοποίητο.
Η αντίθετη περίπτωση συμβαίνει εάν τα περισσότερα αιτήματα αντιστοιχούν σε πολύ μεγάλες διεργασίες, κοντά στο μέγεθος των μεγαλύτερων διαμερισμάτων . Σε αυτήν την περίπτωση, λίγα διαμερίσματα μπορεί να είναι σε θέση να τα φιλοξενήσουν, μειώνοντας τον αποτελεσματικό βαθμό πολυπρογραμματισμού και ενδεχομένως αυξάνοντας τους χρόνους αναμονής στη γενική ουρά.
Μια πιθανή θεωρητική βελτίωση είναι η διατήρηση μιας ξεχωριστής ουράς αναμονής για κάθε μέγεθος διαμερίσματος . Με αυτόν τον τρόπο, οι διεργασίες θα ομαδοποιούνται ανάλογα με το μέγεθός τους και θα γίνεται προσπάθεια για καλύτερη αντιστοίχιση κάθε διεργασίας με τον αντίστοιχο τύπο διαμέρισμά της. Αυτή η οργάνωση μπορεί να μειώσει τον εσωτερικό κατακερματισμό, αν και περιπλέκει τη λογική προγραμματισμού και αυξάνει το φόρτο διαχείρισης της ουράς αναμονής.
Μετεγκατάσταση, λογικές και φυσικές διευθύνσεις
Για να επιτραπεί κάποια ευελιξία στην κατανομή και την ανακατανομή μνήμης, τα συστήματα μπορούν να χρησιμοποιήσουν την μετεγκατάσταση διεργασιών . Αυτό σημαίνει ότι το ίδιο πρόγραμμα μπορεί να εκτελείται σε διαφορετικά διαμερίσματα κατά τη διάρκεια ξεχωριστών εκτελέσεων ή ακόμα και να μετακινείται από το ένα διαμέρισμα στο άλλο κατά την ίδια εκτέλεση, εφόσον οι αναφορές μνήμης μεταφράζονται σωστά.
Από αυτήν την ιδέα προκύπτουν δύο βασικές έννοιες: η λογική ή εικονική διεύθυνση , η οποία είναι αυτή που χρησιμοποιείται από το πρόγραμμα (σε σχέση με την αρχή του χώρου διευθύνσεών του), και η φυσική διεύθυνση , η οποία είναι η πραγματική θέση στην κύρια μνήμη. Για να εκτελεστεί γρήγορα αυτή η μετάφραση, ο επεξεργαστής διαθέτει έναν βασικό καταχωρητή που περιέχει τη φυσική διεύθυνση όπου ξεκινά το διαμέρισμα που έχει αντιστοιχιστεί στη διεργασία.
Εκτός από τον βασικό καταχωρητή, χρησιμοποιείται ένας καταχωρητής ορίου που υποδεικνύει το μέγεθος του διαμερίσματος ή του χώρου διευθύνσεων της διεργασίας. Κάθε φορά που η διεργασία αναφέρεται σε μια λογική διεύθυνση, το υλικό αυξάνει την τιμή του βασικού καταχωρητή και ελέγχει ότι η μετατόπιση δεν υπερβαίνει το όριο. Εάν συμβεί αυτό, ανιχνεύεται παραβίαση μνήμης και το λειτουργικό σύστημα μπορεί να παρέμβει για να προστατεύσει την ακεραιότητα του συστήματος.

Μεταβλητά διαμερίσματα: ευελιξία με κόστος
Για να ξεπεραστούν οι περιορισμοί των σταθερών διαμερισμάτων, σχεδιάστηκαν σχήματα μεταβλητής διαμέρισης , όπου το μέγεθος των μπλοκ μνήμης που καταλαμβάνονται από κάθε διεργασία μπορεί να αλλάζει με την πάροδο του χρόνου. Αντί να προκαθορίζει άκαμπτα διαμερίσματα, το σύστημα διατηρεί έναν πίνακα με κατειλημμένες και ελεύθερες περιοχές.
Όταν φτάνει μια νέα διεργασία, αναζητείται ένα συνεχόμενο μπλοκ μνήμης αρκετά μεγάλο για να τη χωρέσει . Στη διεργασία εκχωρείται μόνο το απαραίτητο τμήμα και, εάν το διαθέσιμο ελεύθερο μπλοκ ήταν μεγαλύτερο, το επιπλέον γίνεται ένα νέο ελεύθερο τμήμα. Όταν η διεργασία τερματιστεί, ο χώρος της σημειώνεται ως διαθέσιμος και, εάν συνορεύει με άλλα ελεύθερα μπλοκ, αυτά συγχωνεύονται για να σχηματίσουν ένα μεγαλύτερο τμήμα.
Αυτό το μοντέλο μειώνει ορισμένους τύπους σπατάλης, αλλά με την πάροδο του χρόνου τείνει να δημιουργεί σημαντικό εξωτερικό κατακερματισμό , καθώς η μνήμη γεμίζει με πολλούς ελεύθερους χώρους διαφόρων μεγεθών. Ακόμα κι αν η συνολική ποσότητα ελεύθερης μνήμης είναι επαρκής, μπορεί να καταστεί αδύνατο να βρεθεί ένα συνεχόμενο τμήμα του μεγέθους που απαιτείται από μια συγκεκριμένη διεργασία.
Στρατηγικές κατανομής σε μεταβλητά διαμερίσματα
Χρησιμοποιούνται αρκετές κλασικές στρατηγικές για να αποφασιστεί σε ποιο ελεύθερο τμήμα μνήμης θα ανατεθεί μια διεργασία, καθεμία με τα πλεονεκτήματα και τα μειονεκτήματά της. Η πιο άμεση είναι η first-fit , η οποία αναθέτει τη διεργασία στο πρώτο διαθέσιμο μπλοκ μνήμης. Είναι γρήγορη, αλλά τείνει να αφήνει πολλά μικρά τμήματα στην αρχή της μνήμης με την πάροδο του χρόνου.
Μια παραλλαγή είναι η next-fit , η οποία ξεκινά την αναζήτηση από το τελευταίο σημείο κατανομής αντί να ξεκινά πάντα από την αρχή. Αυτό συχνά προκαλεί κατακερματισμό του ελεύθερου χώρου, ειδικά προς το τέλος της μνήμης, γεγονός που τελικά οδηγεί σε σχετικά συχνή συμπύκνωση.
Μια άλλη προσέγγιση είναι η βέλτιστη προσαρμογή , η οποία επιχειρεί να αξιοποιήσει στο έπακρο τη διαθέσιμη μνήμη αναθέτοντας τη διεργασία στο μικρότερο ελεύθερο μπλοκ που μπορεί να τη χωρέσει. Ενώ αυτό ακούγεται πολύ αποτελεσματικό, στην πράξη τείνει να δημιουργεί πολλά μικροσκοπικά, δύσχρηστα θραύσματα, συχνά επιδεινώνοντας την κατάσταση του εξωτερικού κατακερματισμού.
Τέλος, η προσέγγιση της χειρότερης προσαρμογής δίνει προτεραιότητα στη χρήση των μεγαλύτερων ελεύθερων μπλοκ πρώτα, ελπίζοντας ότι τα υπόλοιπα μπλοκ θα εξακολουθούν να έχουν λογικό μέγεθος για μελλοντικές διεργασίες. Αυτό μπορεί να καθυστερήσει την ανάγκη για συμπύκνωση, αλλά απαιτεί τη διέλευση όλων των ελεύθερων μπλοκ για τη λήψη της απόφασης, κάτι που συνεπάγεται μεγαλύτερη επιβάρυνση.
- Σχετικό άρθρο που αξίζει: Παραγωγή βίντεο Android: Επαγγελματική εγγραφή οθόνης
Συμπύκνωση μνήμης
Όταν ο εξωτερικός κατακερματισμός γίνεται προβληματικός, χρησιμοποιείται η συμπύκνωση μνήμης . Αυτή η διαδικασία περιλαμβάνει τη μετακίνηση όλων των κατειλημμένων μπλοκ στο ένα άκρο της μνήμης (συνήθως σε χαμηλότερες διευθύνσεις) για την ομαδοποίηση και συγχώνευση των ελεύθερων χώρων σε ένα μόνο μπλοκ ή σε πολύ λίγα μεγάλα μπλοκ.
Η συμπύκνωση μνήμης σάς επιτρέπει να ανακτήσετε μια μεγάλη συνεχόμενη περιοχή ελεύθερης μνήμης , αλλά έχει σημαντικό κόστος: είναι μια αργή διαδικασία, καθώς περιλαμβάνει την αντιγραφή ολόκληρων μπλοκ μνήμης και την ενημέρωση όλων των συσχετισμένων αναφορών ή δομών. Επομένως, είναι καλύτερο να αναβάλλετε τη συμπύκνωση όσο το δυνατόν περισσότερο εφαρμόζοντας ορθές πολιτικές κατανομής.
Σελιδοποίηση: διακοπή της συνεχείας
Για να αποφευχθεί η δέσμευση ελεύθερης μνήμης σε συνεχόμενα μπλοκ, εισάγεται η σελιδοποίηση . Σε αυτό το μοντέλο, η φυσική μνήμη χωρίζεται σε μονάδες σταθερού μεγέθους που ονομάζονται πλαίσια σελίδας (page frames), και ο λογικός χώρος κάθε διεργασίας διαιρείται ομοίως σε σελίδες του ίδιου μεγέθους.
Κάθε σελίδα μιας διεργασίας μπορεί να αποθηκευτεί σε οποιοδήποτε ελεύθερο πλαίσιο σελίδας , χωρίς να απαιτείται όλα τα πλαίσια να είναι φυσικά συνεχόμενα. Το λειτουργικό σύστημα διατηρεί έναν πίνακα σελίδων για κάθε διεργασία, υποδεικνύοντας ποια λογική σελίδα βρίσκεται σε ποιο φυσικό πλαίσιο. Έτσι, το πρόγραμμα συνεχίζει να αντιλαμβάνεται τη μνήμη του ως συνεχόμενη, παρόλο που στην πραγματικότητα είναι κατανεμημένη σε όλη τη μνήμη RAM.
Αυτή η τεχνική ουσιαστικά εξαλείφει τον εξωτερικό κατακερματισμό, επειδή μια διεργασία χρειάζεται μόνο έναν ορισμένο αριθμό ελεύθερων καρέ για να εκτελεστεί, ανεξάρτητα από την τοποθεσία τους. Ο εσωτερικός κατακερματισμός περιορίζεται στον εναπομείναντα χώρο μέσα στο τελευταίο καρέ που έχει εκχωρηθεί σε μια διεργασία. Κατά μέσο όρο, περίπου το μισό μέγεθος μιας σελίδας σπαταλιέται σε αυτό το τελευταίο καρέ.
Μετάφραση διεύθυνσης σε σελιδοποίηση
Σε ένα σελιδοποιημένο σύστημα, οι λογικές διευθύνσεις χωρίζονται σε δύο μέρη: τον αριθμό σελίδας και την μετατόπιση εντός αυτής της σελίδας . Ο αριθμός σελίδας λειτουργεί ως δείκτης για την αναζήτηση του πίνακα σελίδων της διεργασίας και την απόκτηση του σχετικού φυσικού πλαισίου. Η μετατόπιση στη συνέχεια συνενώνεται ή προστίθεται για να ληφθεί η τελική φυσική διεύθυνση.
Δεδομένου ότι αυτή η μετάφραση εκτελείται σε κάθε πρόσβαση μνήμης , θα ήταν ανέφικτο να γίνεται αποκλειστικά σε λογισμικό. Επομένως, χρησιμοποιείται συγκεκριμένο υλικό (όπως το Translation Lookaside Buffer ή TLB) για την επιτάχυνση των ερωτημάτων στον πίνακα σελίδων και την ελαχιστοποίηση του αντίκτυπου στην απόδοση. Το λειτουργικό σύστημα διατηρεί επίσης έναν καθολικό χάρτη πλαισίων που υποδεικνύει ποια πλαίσια είναι ελεύθερα, ποια είναι κατειλημμένα και από ποια διεργασία.
Η επιλογή του μεγέθους σελίδας αποτελεί σημαντικό συμβιβασμό: με μικρές σελίδες , ο εσωτερικός κατακερματισμός μειώνεται, αλλά οι πίνακες σελίδων γίνονται μεγαλύτεροι, καταναλώνοντας επιπλέον μνήμη. Με μεγάλες σελίδες , απαιτείται λιγότερη μνήμη για τους πίνακες, αλλά ο εσωτερικός κατακερματισμός αυξάνεται, καθώς το τελευταίο πλαίσιο κάθε διεργασίας τείνει να αφήνει περισσότερο αχρησιμοποίητο χώρο.
Τμηματοποίηση: λογική οργάνωση προγραμμάτων και δεδομένων
Σε αντίθεση με την σελιδοποίηση, η οποία υιοθετεί μια καθαρά τεχνική προσέγγιση, η τμηματοποίηση εστιάζει περισσότερο στον τρόπο με τον οποίο οι προγραμματιστές και οι χρήστες δομούν τον κώδικα και τα δεδομένα. Ένα πρόγραμμα μπορεί να θεωρηθεί ως ένα σύνολο λογικών στοιχείων διαφόρων μεγεθών: συναρτήσεις, ενότητες, πίνακες, στοίβες, περιοχές δεδομένων και ούτω καθεξής.
Στην τμηματοποίηση, ο μεταγλωττιστής δημιουργεί ένα σύνολο τμημάτων, καθένα από τα οποία έχει ένα αναγνωριστικό, ένα σημείο έναρξης και ένα μέγεθος . Οι λογικές διευθύνσεις που χρησιμοποιούνται από το πρόγραμμα εκφράζονται ως ζεύγος (αριθμός τμήματος, μετατόπιση εντός του τμήματος). Το σύστημα διασφαλίζει ότι η μετατόπιση δεν υπερβαίνει το δηλωμένο μέγεθος του τμήματος, αποτρέποντας αναφορές εκτός εύρους.
Ένα βασικό πλεονέκτημα είναι η δυνατότητα προστασίας και κοινής χρήσης τμημάτων με μεγάλη λεπτομέρεια. Για παράδειγμα, τα τμήματα που περιέχουν κώδικα μπορούν να επισημανθούν ως μόνο για ανάγνωση, μια ενότητα μπορεί να αποτραπεί από την πρόσβαση στα δεδομένα μιας άλλης ή ένα τμήμα κώδικα μπορεί να κοινοποιηθεί μεταξύ πολλαπλών διεργασιών για εξοικονόμηση μνήμης. Όλα αυτά ελέγχονται από έναν πίνακα τμημάτων και τα σχετικά χαρακτηριστικά προστασίας τους.
Όπως και με την σελιδοποίηση, η τμηματοποίηση απαιτεί έναν μηχανισμό για τη μετατροπή λογικών διευθύνσεων σε φυσικές διευθύνσεις . Σε αυτήν την περίπτωση, ο πίνακας τμημάτων περιέχει, για κάθε τμήμα, τη φυσική διεύθυνση βάσης και το μέγιστο μέγεθος. Το υλικό προσθέτει την μετατόπιση στη διεύθυνση βάσης και ελέγχει ότι δεν έχει ξεπεραστεί το όριο, εξασφαλίζοντας έτσι προστασία.
- Δες επίσης: Τάσεις και δημοφιλείς αναζητήσεις στο Google Play: Ένας πλήρης οδηγός για την ανάλυση αγοράς
Συνδυασμός σελιδοποίησης και τμηματοποίησης
Πολλά σύγχρονα συστήματα συνδυάζουν τα πλεονεκτήματα της τμηματοποίησης και της σελιδοποίησης . Από την οπτική γωνία του προγραμματιστή, η διαδικασία παραμένει οργανωμένη σε λογικά τμήματα (κώδικας, στοίβα, δεδομένα κ.λπ.), αλλά εσωτερικά καθένα από αυτά τα τμήματα διαιρείται σε σελίδες σταθερού μήκους για κατανομή στη φυσική μνήμη.
Σε αυτήν την προσέγγιση, ο πίνακας τμημάτων δεν δείχνει πλέον απευθείας σε φυσικές διευθύνσεις. Αντίθετα, κάθε καταχώρηση δείχνει στην αρχή του πίνακα σελίδων που σχετίζεται με αυτό το τμήμα . Η λογική διεύθυνση αποτελείται από έναν αριθμό τμήματος και μια μετατόπιση. Το σύστημα διαιρεί αυτήν την μετατόπιση με το μέγεθος της σελίδας για να λάβει τον αριθμό σελίδας εντός του τμήματος και την μετατόπιση εντός της σελίδας.
Το αποτέλεσμα είναι ένα εξαιρετικά ευέλικτο μοντέλο, που επιτρέπει τόσο συνεκτική λογική οργάνωση όσο και αποτελεσματική φυσική κατανομή σε σταθερά μπλοκ. Ωστόσο, έχει τρία σαφή μειονεκτήματα: η διαδικασία μετάφρασης γίνεται πιο περίπλοκη και καταναλώνει περισσότερους πόρους, απαιτείται περισσότερος χώρος για την αποθήκευση των πολλαπλών πινάκων σελίδων (ένας ανά τμήμα) και ο εσωτερικός κατακερματισμός μπορεί να αυξηθεί λόγω πιθανώς μερικώς κατειλημμένων πλαισίων στο τέλος κάθε τμήματος.
Εικονική μνήμη και δυναμική ανακατανομή
Όλες οι μέθοδοι που έχουν συζητηθεί μέχρι στιγμής υποθέτουν, με τον ένα ή τον άλλο τρόπο, ότι μια διεργασία έπρεπε να φορτωθεί πλήρως στην κύρια μνήμη για να εκτελεστεί . Η εικονική μνήμη παραβιάζει αυτόν τον περιορισμό, επιτρέποντας μόνο σε ένα ενεργό μέρος της διεργασίας να βρίσκεται στη μνήμη RAM και στο υπόλοιπο να διατηρείται σε δευτερεύουσα αποθήκευση (για παράδειγμα, σε δίσκο), ανακτώμενο κατ’ απαίτηση.
Η εικονική μνήμη συνήθως υλοποιείται χρησιμοποιώντας σχήματα σελιδοποίησης ή τμηματοποίησης ή έναν συνδυασμό και των δύο. Όταν μια διεργασία αναφέρεται σε μια διεύθυνση που δεν βρίσκεται στην κύρια μνήμη, παρουσιάζεται σφάλμα σελίδας. Το σύστημα εντοπίζει την αντίστοιχη σελίδα στον δίσκο, δεσμεύει ένα ελεύθερο πλαίσιο στη μνήμη RAM και το φορτώνει. Εάν δεν υπάρχουν διαθέσιμα ελεύθερα πλαίσια, χρησιμοποιείται ένας αλγόριθμος αντικατάστασης για να επιλέξει ποια σελίδα θα εξαχθεί στον δίσκο.
Καθ’ όλη τη διάρκεια αυτής της διαδικασίας, η διεργασία που δημιούργησε το σφάλμα σελίδας μπλοκάρεται , περιμένοντας να φορτωθεί η σελίδα της στη μνήμη. Ο πίνακας σελίδων συνήθως περιλαμβάνει ένα bit παρουσίας που υποδεικνύει εάν κάθε λογική σελίδα της διεργασίας βρίσκεται αυτήν τη στιγμή στην κύρια μνήμη ή μόνο στον δίσκο. Αυτό επιτρέπει στο υλικό και το λειτουργικό σύστημα να προσδιορίσουν γρήγορα εάν μια αναφορά είναι έγκυρη και εάν η σελίδα πρέπει να φορτωθεί.
Αυτό το μοντέλο επιτρέπει πολύ καλύτερη αξιοποίηση της μνήμης , καθώς εστιάζει στη διατήρηση μόνο των ενεργά χρησιμοποιούμενων τμημάτων των διεργασιών στη μνήμη RAM. Επιπλέον, με τη δυνατότητα να φιλοξενεί περισσότερες διεργασίες ταυτόχρονα, βελτιώνεται η αξιοποίηση του επεξεργαστή. Ωστόσο, εάν το σύστημα παρουσιάσει υπερβολικά σφάλματα σελίδας, οι προσβάσεις στο δίσκο αυξάνονται κατακόρυφα και η απόδοση υποβαθμίζεται δραστικά, ένα φαινόμενο γνωστό ως thrashing.
Η ανταλλαγή και η σχέση της με την διαμέριση
Σε πολλά από τα μοντέλα διαχείρισης μνήμης που περιγράφονται, ειδικά στη σταθερή διαμέριση, τη μεταβλητή διαμέριση και τη σελιδοποίηση , χρησιμοποιείται συνήθως η εναλλαγή (swapping). Αυτό περιλαμβάνει την προσωρινή μετακίνηση αποκλεισμένων διεργασιών σε δευτερεύουσα αποθήκευση, απελευθερώνοντας έτσι την κύρια μνήμη για νέες διεργασίες ή για την ανάπτυξη υπαρχουσών διεργασιών.
Η ενότητα που είναι υπεύθυνη για αυτήν την εργασία, που συχνά ονομάζεται swapper , πρέπει να αποφασίσει ποιες διεργασίες αντικαθίστανται και πότε επανέρχονται. Διαχειρίζεται επίσης την δευτερεύουσα περιοχή μνήμης που προορίζεται για την αποθήκευση των εικόνων των διεργασιών που αντικαταστάθηκαν. Σε συνδυασμό με τεχνικές μετεγκατάστασης, αυτό επιτρέπει στην ίδια διεργασία να επιστρέψει στη μνήμη σε διαφορετικό διαμέρισμα ή σύνολο πλαισίων από το αρχικό, υπό την προϋπόθεση ότι η μετάφραση διευθύνσεων παραμένει συνεπής.
Ανακατανομή εσωτερικής μνήμης σε συγκεκριμένες συσκευές
Όλο αυτό το θεωρητικό σύνολο έχει επίσης άμεσο αντίκτυπο στις καταναλωτικές συσκευές, όπως τα κινητά τηλέφωνα με chipset MTK (MediaTek). Πολλές από αυτές τις συσκευές οργανώνουν την εσωτερική μνήμη σε ξεχωριστά λογικά διαμερίσματα (για παράδειγμα, ένα για δεδομένα χρήστη και ένα άλλο για εφαρμογές), γεγονός που μερικές φορές αφήνει ένα διαμέρισμα πρακτικά αχρησιμοποίητο εάν ο χρήστης δεν το χρησιμοποιήσει για τον προβλεπόμενο σκοπό του.
Σε ορισμένα μοντέλα και γενιές chipset (για παράδειγμα, MTK657x έναντι MTK6582 ), οι χρήστες έχουν αναζητήσει μεθόδους για να “συγχωνεύσουν” ή να αλλάξουν το μέγεθος αυτών των εσωτερικών διαμερισμάτων για να αξιοποιήσουν καλύτερα τον συνολικό χώρο. Αυτή η ανακατανομή περιλαμβάνει την τροποποίηση πινάκων διαμερισμάτων χαμηλού επιπέδου και, στην πράξη, συμπεριφέρεται παρόμοια με την αλλαγή του σχήματος διαμέρισης σε ένα επιτραπέζιο σύστημα, με όλους τους σχετικούς κινδύνους (απώλεια δεδομένων, προβλήματα εκκίνησης κ.λπ.).
Η πραγματική δυνατότητα αυτών των λειτουργιών εξαρτάται από τον τρόπο με τον οποίο ο κατασκευαστής έχει ορίσει τον χάρτη διαμερισμάτων και τα εργαλεία που είναι διαθέσιμα για το συγκεκριμένο chipset. Παρόλο που υπάρχουν εκπαιδευτικά βίντεο και συγκεκριμένα βοηθητικά προγράμματα για ορισμένες σειρές MTK, δεν είναι πάντα δυνατό να εφαρμοστούν οι ίδιες μέθοδοι σε μεταγενέστερες γενιές και συνιστάται εξαιρετική προσοχή, επειδή δεν πρόκειται απλώς για μια λειτουργία υψηλού επιπέδου, αλλά για μια βαθιά τροποποίηση της δομής της εσωτερικής μνήμης.
Καλές πρακτικές διαχείρισης μνήμης
Παρόλο που οι περισσότερες λεπτομέρειες διαχείρισης μνήμης χειρίζονται αυτόματα και με διαφάνεια από το λειτουργικό σύστημα, οι χρήστες και οι διαχειριστές μπορούν να ακολουθήσουν ορισμένα απλά βήματα για να βελτιώσουν την απόδοση του συστήματος . Το πρώτο και πιο προφανές είναι να έχετε εγκατεστημένη επαρκή ποσότητα μνήμης RAM: η ελάχιστη συνιστώμενη από τους κατασκευαστές είναι συνήθως πολύ συντηρητική.
Πέρα από το υλικό, είναι σημαντικό να αποφεύγετε την εκτέλεση περισσότερων προγραμμάτων από ό,τι είναι απολύτως απαραίτητο ταυτόχρονα. Το να έχετε ανοιχτές πολλές εφαρμογές που δεν χρησιμοποιούνται στην πραγματικότητα χρησιμεύει μόνο για την κατάληψη της μνήμης και αναγκάζει το σύστημα να καταφεύγει συχνότερα σε τεχνικές εναλλαγής ή εικονικής μνήμης, πολλαπλασιάζοντας τις προσβάσεις στο δίσκο.
Είναι επίσης σημαντικό να παρακολουθείτε τα πρόσθετα και τα γραφικά στοιχεία, όπως κινούμενα σχέδια, gadget επιφάνειας εργασίας, μικρές υπηρεσίες φόντου και επεκτάσεις προγράμματος περιήγησης, τα οποία, αν και φαινομενικά ακίνδυνα, καταναλώνουν κύκλους RAM και CPU. Σε μηχανήματα με περιορισμένους πόρους, αυτά τα είδη στοιχείων θα πρέπει να είναι τα πρώτα που θα απενεργοποιηθούν εάν παρατηρηθεί σημαντική πτώση στην απόδοση.
Συνολικά, η κατανόηση του τρόπου με τον οποίο λειτουργούν η διαμέριση και η ανακατανομή της εσωτερικής μνήμης μας βοηθά να ερμηνεύσουμε καλύτερα τη συμπεριφορά των συστημάτων μας, να επιλέξουμε πιο κατάλληλες διαμορφώσεις και να αξιολογήσουμε πότε αξίζει να επενδύσουμε σε περισσότερη φυσική μνήμη, να προσαρμόσουμε τις παραμέτρους του συστήματος ή να επανεξετάσουμε τον τρόπο με τον οποίο οργανώνουμε τις διαδικασίες και τις υπηρεσίες που συνεχίζουμε να εκτελούμε. Κοινοποιήστε αυτές τις πληροφορίες, ώστε περισσότεροι χρήστες να μπορούν να μάθουν για το θέμα.



