Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

Στατική και δυναμική κατανομή της κύριας μνήμης

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

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

Η κατανομή της κύριας μνήμης μπορεί να είναι στατική (static allocation) ή δυναμική (dynamic allocation).

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

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