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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

Indexing.
5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Απαντήσεις Προόδου II.
Προστασία Λογισμικού - Ιοί
Λειτουργικά Συστήματα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΤΑΞΗ Γ ΓΥΜΝΑΣΙΟΥ Βασικές Έννοιες Επανάληψη (2).
Το υλικο του Υπολογιστη
Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Λειτουργικό Σύστημα 2ο μέρος.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Κατανομή με ευρετήριο.
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Ημιαγωγοί – Τρανζίστορ – Πύλες - Εξαρτήματα
Ζητήματα Σελιδοποίησης
9. Ιδεατή Μνήμη – Διαχείριση
Λογισμικο συστηματοσ Κεφάλαιο 4ο
Κατακερματισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Εικονική Μνήμη (virtual memory) Πολλά προγράμματα εκτελούνται ταυτόχρονα σε ένα υπολογιστή Η συνολική μνήμη που απαιτείται είναι μεγαλύτερη.
7. Διαχείριση κύριας μνήμης
Η ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΧΡΗΣΤΗ ΑΠ’ ΤΟΝ Η/Υ ΤΟΜΕΑΣ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Δ.ΙΕΚ ΠΑΤΡΑΣ.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Χρονοδρομολόγηση CPU Βασικές Αρχές Κριτήρια Χρονοδρομολόγησης
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Κεφάλαιο 2 Το Εσωτερικό του υπολογιστή
Πληροφορική, Β Γυμνασίου
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
Ενότητα Α.4. Δομημένος Προγραμματισμός
1 ΧΡΗΣΗ Η/Υ, ΑΛΕΞΗΣ ΜΠΡΑΪΛΑΣ, 1998 Εφαρμογές Υπολογιστών.
Ο προσωπικός υπολογιστής εσωτερικά
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Λειτουργικά Συστήματα
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Translation Lookaside Buffers Φροντιστήριο του μαθήματος “Προηγμένοι Μικροεπεξεργαστές”
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
ΕΙΣΑΓΩΓΗ μέρος 2 ΜΙΚΡΟΕΛΕΓΚΤΕΣ - ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Π. ΚΩΣΤΑΡΑΚΗΣ Β. ΧΡΙΣΤΟΦΙΛΑΚΗΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ.
Κύρια Μνήμη Διάφοροι τύποι μνήμης RAM Από πάνω προς τα κάτω, DIP, SIPP, SIMM (30-pin), SIMM (72-pin), DIMM (168-pin), DDR DIMM (184-pin). Μνήμη RΟM.
Καταχωρητές (Registers) (1/3) Εισαγωγή στην Πληροφορκή1 Οι Καταχωρητές (Registers) είναι ειδικές θέσεις μνήμης υψηλής ταχύτητας που χρησιμοποιούνται για.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αρχιτεκτονική Η/Υ ΙΙ Ενότητα #3: Σελιδοποίηση – Κατάτμηση στην Κύρια Μνήμη Νικόλαος Χ. Πετρέλλης Σχολή Τεχνολογικών.
1 Λειτουργικά Συστήματα Ενότητα 9 : Ιδεατή Μνήμη 1/2 Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
ΜΑΘΗΜΑ: ΣΥΓΧΡΟΝΟ ΛΟΓΙΣΜΙΚΟ ΟΡΓΑΝΩΣΗ ΓΡΑΦΕΙΟΥ 5 ο ΕΡΓΑΣΤΗΡΙΟ: ΕΓΚΑΤΑΣΤΑΣΗ ΕΚΤΥΠΩΤΩΝ ΚΑΘΗΓΗΤΗΣ: ΓΡΗΓΟΡΙΟΣ Ν. ΚΑΡΑΤΑΣΙΟΣ.
Διαχείριση Πόρων (1/10) Εισαγωγή στην Πληροφορκή 1 Στα πρώτα χρόνια των υπολογιστών, όπου μόνο ένα πρόγραμμα είχε τη δυνατότητα να βρίσκεται στην κύρια.
Θέμα Πτυχιακής Εργασίας
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Θεωρήστε το λογικό χώρο διευθύνσεων που αποτελείται από 8 σελίδες των 1024 λέξεων (word) η καθεμία, που απεικονίζεται σε φυσική μνήμη 32 πλαισίων. Πόσα.
Δυναμικός Κατακερματισμός
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Ανάπτυξη Μοντέλων Διακριτών Συστημάτων Μέρος Β
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Κεφάλαιο 7: Διαδικτύωση-Internet Μάθημα 7.9: Δρομολόγηση
Επαναληπτικές ασκήσεις
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ο ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΗΣ MIPS R10000
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

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

Τύποι Μνήμης Η μνήμη με μηχανικά μέρη είναι σημαντικά πιο αργή αλλά και αρκετά πιο φθηνή. Οι καταχωριτές (registers) είναι ο πιο ακριβός τύπος μνήμης ενώ η μαγνητική ταινία ο πιο φθηνός τύπος. Προσωρινές και μόνιμες (volatile / non-volatile memory)

Παράδειγμα Υποθέτουμε ένα σύστημα με 32ΜΒ κύρια μνήμα Το ΛΣ χρειάζεται 16ΜΒ Διεργασίες Α-Δ χρειάζονται 4ΜΒ η κάθε μια. Διεργασίες Ε και Ζ χρειάζονται 2ΜΒ η κάθε μια. Πως θα κατανείμετε την μνήμη στις ακόλουθες περιπτώσεις Μονοπρογραμματισμός (batch system - Μία διεργασία κάθε φορά). Πολυπρογραμματισμός. Τι θα συμβεί εάν οι διεργασίες Ε και Ζ ζητήσουν από 1 επιπρόσθετο ΜΒ.

Μονοπρογραμματισμός Συστήματα τύπου batch. Φορτώνεται μια διεργασία στη μνήμη. Τρέχει μέχρι το τέλος. Φορτώνεται η επόμενη … Σε αυτά τα συστήματα η διαχείριση της μνήμης είναι εύκολή User Program Operating System in RAM FF… User Program Operating System in ROM FF… User Program Operating System FF… Device Drivers Mainframes Palmtops MS-DOS

Πολυπρογραμματισμός με Σταθερή Κατανομή Operating System 100Κ 200Κ Partition 1 Partition 2 Partition M … 300Κ 700Κ 1M Η Μνήμη χωρίζεται σε σταθερά διαμερίσματα ή τμήματα (πιθανόν το κάθε ένα με άνισο χώρο). Σε κάθε διεργασία κατανέμεται ένα διαμέρισμα στο οποίο θα μπορέσει να χωρέσει. Π.χ., μπορεί να μπει στο μικρότερο ελεύθερο διαμέρισμα στο οποίο χωρεί.

Πολυπρογραμματισμός με Σταθερή Κατανομή Εάν δεν υπάρχει ελεύθερο διαμέρισμα με τον απαιτούμενο χώρο ή εάν η πολιτική είναι να μην «σπαταλούμε» μεγάλα διαμερίσματα για σχετικά μικρές διεργασίες, τότε η διεργασία μπαίνει σε μια ουρά Υπάρχουν διάφορα πιθανά μοντέλα όπου είτε το κάθε διαμέρισμα έχει τη δική του ουρά είτε υπάρχει μια ουρά για όλα τα διαμερίσματα είτε υπάρχει μια ουρά για όλα τα διαμερίσματα κάθε χωρητικότητας 100Κ 200Κ Operating System Partition 1 Partition 2 Partition M … 300Κ 700Κ 1M P2 Process 2 Αχρησιμοποίητη μνήμη P4 Process 3 P5 P1 Process 1

Μετατόπιση Διεργασίας και Προστασία Μνήμης Operating System 1000 3000 1976 Operating System 1000 2000 1976 4000 JMP 1976 … JMP 1976 …

Μετατόπιση Διεργασίας και Προστασία της Μνήμης 0xFFFF Operating System 0xFFFF Operating System Limit 2 User 2 Data Base 2 Limit 2 User 1 Data Limit User program and Data Base 2 Limit 1 Limit 1 Base User program Base 1 Base 1

Μετατόπιση Διεργασίας και Προστασία Μνήμης Operating System If(Base+976 < Limit) JMP Base+976; Else Error; Limit 4000 2976 JMP 976 … Base 2000 1976 Εναλλακτικά, κάθε πρόγραμμα, μπορεί να έχει μια λίστα με όλες τις διευθύνσεις τις οποίες καλεί και το ΛΣ να αλλάξει τη λίστα ανάλογα με το τμήμα στο οποίο φορτώθηκε το πρόγραμμα. 1000

Δυναμική Κατανομή Μνήμης Για να αποφευχθεί η αχρησιμοποίητη μνήμης, μπορεί να χρησιμοποιήσουμε δυναμική κατανομή. Η μνήμη κατανέμεται στις διεργασίες όταν χρειάζονται και όση χρειάζονται Operating System Process 3 Process 2 Process 4 Process 1 Κατακερματισμός της Μνήμης (Memory fragmentation) Επεξεργαστής μπορεί να «μετατοπίσει» όλες τις διεργασίες αλλά η λύση αυτή είναι χρονοβόρα.

Ανταλλαγή Μνήμης Τι θα συμβεί εάν ο χώρος της μνήμης είναι μικρότερος απ’ ότι χρειάζονται όλες οι διεργασίες; Το ΛΣ αποφασίζει να ανταλλάξει κάποιες διεργασίες από την κύρια μνήμη στο δίσκο (process swapping) Το πρόβλημα της διαχείρισης της μνήμης θα ήταν αρκετά πιο εύκολο αν ξέραμε από την αρχή πόση μνήμη θα χρειαστεί η κάθε διεργασία. Τι θα συμβεί εάν η Διεργασία 1 ζητήσει επιπρόσθετα 75Κ μνήμης (π.χ. με την εντολή malloc()). Τι θα συμβεί εάν η Διεργασία 1 ζητήσει επιπρόσθετα 105Κ μνήμης Operating System 900Κ Process 2 600Κ 500Κ Process 1 200Κ

Κατανομή Μνήμης Operating System Operating System Stack B Χώρος για Stack B Χώρος για επέκταση Χώρος που χρησιμοποιείται Χώρος επέκτασης Δεδομένα B Πρόγραμμα B Το πρόβλημα παραμένει: Τι θα συμβεί εάν ο μια διεργασία χρειαστεί περισσότερο χώρο από όσο της έχει κατανεμηθεί; Stack A Χώρος για επέκταση Χώρος που χρησιμοποιείται Χώρος επέκτασης Δεδομένα Α Πρόγραμμα Α Operating System Operating System

Διαχείριση της Μνήμης Bitmap Μνήμη Πως το ΛΣ ξέρει πια τμήματα είναι δεσμευμένα και πια ελεύθερα; Bitmap Η μνήμη χωρίζεται σε μικρές μονάδες u (π.χ., 4 bytes) Ορίζεται ένας πίνακας στον οποίο κάθε μονάδα u αντιπροσωπεύεται από ένα bit. Εάν το u είναι δεσμευμένο, τότε το αντίστοιχο bit έχει την τιμή 1. Διαφορετικά παίρνει την τιμή 0 Μνήμη u1 u2 u3 u4 … Δ1 Δ2 Δ3 Δ4 Δ5 Πόση επιπρόσθετη μνήμη χρειάζεται αυτή η μέθοδος; Για κάθε u bits χρειάζεται 1 bit (δηλαδή η μέθοδος αυτή χρησιμοποιεί το 1/(u+1) της ολικής μνήμης. 1 1 1 1 .

Bitmap Υποθέστε πως σε κάποιο ΛΣ το μικρό διάστημα u είναι 32 bits. Η συνολική μνήμη του συστήματος είναι 256ΜΒ. Πόσο μεγάλο πρέπει να είναι το bitmap; Υποθέστε πως το ΛΣ θέλει να φορτώσει ένα πρόγραμμα το οποίο χρειάζεται 4ΜΒ μνήμης. Πως το ΛΣ θα βρει το τμήμα στο οποίο να τοποθετήσει το πρόγραμμα; Θα ψάξει για 1,048,576 (1Μ = 220) συνεχόμενα 0! Το ψάξιμο ενός bitmap για το κατάλληλο χώρο στο οποίο θα τοποθετηθεί μια διεργασία είναι γενικά χρονοβόρα διαδικασία.

Συνδεδεμένη Λίστα (Linked List) Ορίζεται μια δομή με 4 πεδία η οποία χαρακτηρίζει το κάθε τμήμα της μνήμης P/H (process/hole): Καθορίζει κατά πόσο το συγκεκριμένο τμήμα είναι δεσμευμένο (κατανεμημένο σε κάποια διεργασία) ή ελεύθερο. Η διεύθυνση του πρώτου byte του τμήματος Το μέγεθος του τμήματος Δείκτης (pointer) στο επόμενο τμήμα Μνήμη Δ1 Δ2 Δ3 Δ4 Δ5 P 6 H 6 4 P 10 2 H 12 1 P 13 7

Διαχείριση Συνδεδεμένης Λίστα Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ6; Δ1 Δ2 Δ3 Δ4 Δ5 Δ6 P 8 P 6 H 4 10 2 12 1 13 7 P 8 2 Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ7; Δ1 Δ2 Δ3 Δ4 Δ5 Δ7 P 6 H 4 10 2 12 1 13 7 P 12 P 6 H 6 4 P 10 2 H 12 1 P 13 7

Διαχείριση Συνδεδεμένης Λίστα Πως θα τοποθετούσατε την Δ19 η οποία έχει μέγεθος 2; P 4 H 6 10 2 12 1 13 7 Ψάχνοντας τη λίστα από την αρχή μέχρι να βρούμε ελεύθερο χώρο (H-Hole) στον οποίο να χωρά η Δ19 (first fit). Ψάχνοντας τη λίστα από το σημείο στο οποίο σταματήσαμε την προηγούμενη φορά μέχρι να βρούμε ελεύθερο χώρο (H-Hole) στον οποίο να χωρά η Δ19 (next fit). Ψάχνοντας όλη τη λίστα βρίσκουμε τον ελεύθερο χώρο στον οποίο χωρά «καλύτερα» η Δ19 (best fit). Διατηρώντας πολλαπλές λίστες, μια για κάθε «κοινό» μέγεθος διεργασίας (quick fit). Σε αυτή την περίπτωση η διαχείριση των λιστών γίνεται πολύπλοκη, γιατί;

Μονάδα Διαχείρισης Μνήμης (ΜΔΜ) Ο επεξεργαστής είναι εξοπλισμένος με την ΜΔΜ η οποία είναι υπεύθυνη να μεταφράζει τις εικονικές διευθύνσεις (virtual address) σε πραγματικές διευθύνσεις. Π.χ., όταν ο επεξεργαστής εκτελέσει την εντολή MOV REG 1000 η ΜΔΜ βρίσκει σε πιο σημείο της πραγματικής μνήμης αντιστοιχεί η διεύθυνση 1000.

Εικονική Μνήμη Όταν τρέχει κάποιο πρόγραμμα, είναι υποχρεωτικό να είναι ολόκληρο φορτωμένο στην κύρια μνήμη; Όχι κατ’ ανάγκη! Βασική ιδέα Το ΛΣ θα μπορούσε να φορτώσει το «αρχικό» μέρος του προγράμματος το οποίο ξεκινά και τρέχει. Σε κάποιο σημείο, μόλις δηλαδή χρειαστεί μέρος του προγράμματος το οποίο δεν είναι φορτωμένο στην κύρια μνήμη, στέλνει ένα σήμα στο ΛΣ ότι χρειάζεται κομμάτι του προγράμματος το οποίο δεν είναι διαθέσιμο στην κύρια μνήμη. Τότε το ΛΣ αναλαμβάνει να βρει χώρο στην κύρια μνήμη (πιθανόν ανταλλάσσοντας (swapping) κάποιον άλλο χώρο) και φορτώνει το ζητούμενο κομμάτι. Αυτό επαναλαμβάνεται όσο χρειάζεται.

Εικονικές Διευθύνσεις (Virtual Addresses) Ένα πρόγραμμα υποθέτει ότι ξεκινά πάντα στην διεύθυνση 0 Κάθε φορά που αναφέρεται σε μια διεύθυνση (π.χ., 1876) δεν αναφέρεται στη πραγματική διεύθυνση 1876 αλλά στην διεύθυνση που απέχει 1876 bytes από την αρχή του προγράμματος (θυμηθείτε τους καταχωρητές base και limit). Οι διευθύνσεις αυτές (οι οποίες δημιουργούνται από το πρόγραμμα) ονομάζονται εικονικές διευθύνσεις virtual addresses. Επίσης κάθε πρόγραμμα υποθέτει πως μπορεί να έχει όλη την δυνατή μνήμη στην διάθεση του (virtual address space). Π.χ., σε 32-bit σύστημα, κάθε πρόγραμμα μπορεί να χρησιμοποιήσει όλο τον χώρο από 0 έως 232 = 4096ΜΒ. Με αυτό τον τρόπο είναι δυνατόν να τρέξουμε προγράμματα τα οποία είναι κατά πολύ μεγαλύτερα από το μέγεθος της φυσική μνήμης που υπάρχει στο σύστημα. Π.χ., σε υπολογιστή με 256ΜΒ μνήμη μπορούμε να τρέξουμε πρόγραμμα το οποίο μπορεί να είναι μέχρι 4096ΜΒ.

Σελιδοποίηση (Paging) Ολόκληρος ο χώρος των εικονικών διευθύνσεων χωρίζεται σε σελίδες (pages). Ολόκληρη η πραγματική μνήμη χωρίζεται επίσης σε σελίδες πλαίσια (page frames) Όλες οι σελίδες και σελίδες πλαίσια είναι του ίδιου μεγέθους (π.χ., 4KB). Η ΜΔΜ για κάθε διεργασία διατηρεί ένα πίνακα με δείκτες στον οποίο φαίνεται ποιες από τις σελίδες (εικονικές) είναι φορτωμένες στην κύρια μνήμη και σε πια σελίδα πλαίσιο της πραγματικής μνήμης είναι τοποθετημένη. Εάν ζητηθεί σελίδα η οποία δεν είναι φορτωμένη στην πραγματική μνήμη τότε η ΜΔΜ στέλνει «σφάλμα μνήμης» (page fault) στο ΛΣ το οποίο θα πρέπει να φροντίσει να φορτωθεί η σελίδα και να ενημερώσει τη ΜΔΜ.

Παράδειγμα Virtual Addresses 60K-64K 56K-60K 52K-56K 48K-52K 44K-48K 40K-44K 36K-40K 32K-36K 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Υποθέτουμε ένα 16-bit σύστημα με 32Κ πραγματικής μνήμης όπου η ΜΔΜ έχει τον εξής πίνακα 7 3 6 Physical Addresses 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Virtual Address Physical Address 100 4096 20580 12290 Virtual Address 4096 4196 20480 100 Page fault 4 2 5 1

Μονάδα Διαχείρισης Μνήμης Virtual Addresses 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Physical Addresses 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K 1 001 1 101 1 010 1 000 1 100 1 110 1 011 1 111 0 000 0110 0000 0101 1101 IVA: Present / absent bit OPA: 100 0000 0101 1101 0001 0110 0101 0010 IVA: OPA: 101 0110 0101 0010 IVA: Input Virtual Address OPA: Output Physical Address

Μονάδα Διαχείρισης Μνήμης Θεωρητικά, κάθε διεργασία θα μπορούσε να έχει τον δικό της πίνακα φυλαγμένο σε καταχωρητές της ΜΔΜ. Κάθε φορά που η διεργασία αναφέρεται στη μνήμη, τότε «εύκολα» βρίσκει τη φυσική διεύθυνση. Γιατί μια τέτοια λύση δεν είναι εφικτή; Υποθέστε ένα σύστημα με 32-bit διευθύνσεις και 4KB σελίδες. Πόσες δυνατές σελίδες υπάρχουν; Απάντηση: 220 = 1Μ Υποθέστε ένα σύστημα με 64-bit διευθύνσεις και 4KB σελίδες. Πόσες δυνατές σελίδες υπάρχουν; Απάντηση: 252 !! Το μέγεθος της αναγκαίας μνήμης είναι τεράστιο με αποτέλεσμα η ανταλλαγή διεργασιών (process switching) να είναι χρονοβόρα! Θα μπορούσε ο πίνακας αυτός να φυλαγόταν στην κύρια μνήμη; Όχι, αφού για κάθε αναφορά στην μνήμη θα χρειαζόταν επιπρόσθετη αναφορά για την ανεύρεση της φυσικής διεύθυνσης!

Ιεραρχικοί Πίνακες ΜΔΜ 1022 1023 2 1 0 . 1 . Η εικονική διεύθυνση χωρίζεται σε διάφορα πεδία. Π.χ. υποθέστε 32-bit σύστημα με 4ΚΒ σελίδες. Ένας πιθανός διαχωρισμός είναι 1022 1023 2 1 0 . 1 . 1 . π1 10 bits π2 offset 12 bits 1022 1023 2 1 1 . 1 . 0 . Πρώτο επίπεδο 1022 1023 2 1 1 . 0 . 0 . Σε σελίδες

Δομή Καταχωρήσεων στο Πίνακα ΜΔΜ Η δομή γενικά εξαρτάται από το συγκεκριμένο σύστημα. Σε πολλά συστήματα εμφανίζονται οι πιο κάτω καταχωρήσεις Referenced Present/absent bit Page Frame Number protection Unused Caching disabled Modified Protection (1-3bits): Προνόμια πρόσβασης στη σελίδα Modified/referenced bits: χρήση της σελίδας Caching disabling: Χρησιμοποιείται κυρίως για συσκευές Ε/Ε οι οποίες παρουσιάζονται σαν διευθύνσεις μνήμης.

Αρχή της «Τοπικότητας» Principle of Locality or Locality of Reference Οι αναφορές στη μνήμη συνήθως γίνονται από / προς «κοντινές» διευθύνσεις. Εάν σε μια επανάληψη υπήρξε αναφορά στη διεύθυνση xyz τότε υπάρχει σχετικά ψηλή πιθανότητα ότι και η επόμενη αναφορά θα είναι σε κάποια διεύθυνση πολύ κοντά xyz. Κάποιος μπορεί να χρησιμοποιήσει την αρχή της τοπικότητας για να μειώσει το μέγεθος του πίνακα στην ΜΔΜ καθώς και για να αποφασίσει ποιες σελίδες να φορτώσει στην κύρια μνήμη. Πώς;

Translation Lookaside Buffers TLB Λόγω του μεγάλου μεγέθους του πίνακα πολλά συστήματα αποφεύγουν να φορτώνουν ολόκληρο τον πίνακα στην ΜΔΜ. Εναλλακτικά, φορτώνουν ένα μικρό πίνακα (TLB) στον οποίο περιγράφουν μόνο ποιες εικονικές σελίδες είναι φορτωμένες στην κύρια μνήμη και σε πιο σημείο. Κάθε φορά που υπάρχει αναφορά στην μνήμη, η ΜΔΜ πρώτα ψάχνει το TLB. Για καλύτερη απόδοση, η ΜΔΜ μπορεί να είναι εξοπλισμένη με υλικό το οποίο ελέγχει όλες τις καταχωρήσεις του TLB παράλληλα. Εάν η ζητούμενη σελίδα δεν βρεθεί στο TLB τότε η ΜΔΜ ψάχνει τη σελίδα στον πίνακα που είναι φορτωμένος στην κύρια μνήμη. Χρησιμοποιώντας την αρχή της τοπικότητας, η ΜΔΜ ενημερώνει το TLB προσθέτοντας την νέα σελίδα και αφαιρώντας κάποια άλλη. Το TLB συνήθως έχει το πολύ 64 καταχωρήσεις. Για απλοποίηση του υλικού της ΜΔΜ, σε πολλά συστήματα το ρόλο της διαχείρισης της ΜΔΜ αναλαμβάνει το ΛΣ.

Αλγόριθμοι Αντικατάστασης Σελίδων Πως αποφασίζουμε ποιες σελίδες θα φορτωθούν στην κύρια μνήμη και ποιες θα μείνουν στον σκληρό δίσκο; Βέλτιστος αλγόριθμος αντικατάστασης (optimal replacement algorithm) Στο σύνολο των διεργασιών που είναι φορτωμένες στη μνήμη, υπολογίζουμε το χρόνο που θα ξαναχρησιμοποιηθεί η κάθε μια. Επιλέγουμε αυτή που πρόκειται να χρησιμοποιηθεί πιο μακριά στο μέλλον. Γενικά ο αλγόριθμος αυτός δεν είναι εφαρμόσιμος αφού το ΛΣ δεν μπορεί να προβλέψει τους χρόνους που θα χρησιμοποιηθεί η κάθε σελίδα. Ο αλγόριθμος αυτός γενικά χρησιμοποιείται σαν μέτρο σύγκρισης των εφαρμόσιμων αλγορίθμων.

First-In First-Out Page Replacement Algorithm Επιλέγουμε τη σελίδα η οποία ήταν φορτωμένη στη μνήμη το περισσότερο χρόνο. Παράδειγμα: Υποθέστε πως βρισκόμαστε στον χρόνο 15 και πως θέλουμε να αντικαταστήσουμε μια σελίδα με την Σ11 η οποία χρειάζεται τώρα. Σελίδα Χρόνος Φόρτωσης Τελευταίος χρόνος αναφοράς Σ10 Σ21 10 5 12 14 Σ13 Σ14 8 13 Με βάση την πολιτική FIFO πρέπει να αντικαταστήσουμε τη σελίδα Σ21. Παρατηρήστε όμως ότι παρόλο που η Σ21 φορτώθηκε πρώτη, χρησιμοποιήθηκε πολύ πρόσφατα (14) και πιθανόν να έχει ξαχαχρησιμοποιηθεί αρκετές φορές από τότε που φορτώθηκε πρώτη φορά!

Not Recently Used (NRU) page replacement algorithm Πως εφαρμόζεται η πολιτική: Θυμηθείτε τα bits R (referenced) και Μ (modified). Όταν μια σελίδα αλλάξει (write) τότε το bit Μ=1. Όταν μια σελίδα αναφερθεί τότε το bit R=1 Υπάρχει ένας διακόπτης ρολόι το οποίο περιοδικά στέλνει σήμα στο ΛΣ να μετατρέψει το R=0. Οι διεργασίες κατηγοριοποιεί τις σελίδες ως ακολούθως Κατηγορία 0: R=0, M=0 Κατηγορία 1: R=0, M=1 Κατηγορία 2: R=1, M=0 Κατηγορία 3: R=1, M=1 O NRU επιλέγει τυχαία από τις σελίδες της κατηγορίας με τον μικρότερο δυνατό αριθμό. Τι πρέπει να κάνει το ΛΣ σε περίπτωση που επιλεχθεί σελίδα κατηγορίας 1;

Second Chance Page Replacement Algorithm Επιλέγουμε τη σελίδα η οποία ήταν φορτωμένη στη μνήμη το περισσότερο χρόνο. Σε περίπτωση που το R=1, τότε ξέρουμε πως η σελίδα έχει χρησιμοποιηθεί τελευταία, οπόταν Θέτουμε το R=0. Ενημερώνουμε τον χρόνο φόρτωσής (θέτοντας τον στην δεδομένη στιγμή) Τοποθετούμε την συγκεκριμένη σελίδα στο τέλος της ουράς. Επιλέγουμε την επόμενη σελίδα και επαναλαμβάνουμε. Σελίδα που φορτώθηκε πρώτη Σελίδα που φορτώθηκε τελευταία Σ 10 13 Σ 10 6 Σ 6 7 Σ 11 8 Σ 12 10 Σ 3 12

Clock Page Replacement Algorithm Ο ίδιος με τον second chance page replacement αλγόριθμο. Η μόνη διαφορά είναι στην υλοποίηση όπου ο clock page replacement αλγόριθμος υλοποιεί μια κυκλική λίστα. Σ1 Σ6 Σ11 Σ5 Σ4 Σ7 Σ15 Σ3 Σ8 Σ13 Ο αλγόριθμος τρέχει κάθε φορά που το ΛΣ χρειάζεται να αντικαταστήσει μια σελίδα.

Least Recently Used (LRU) Page Replacement Algorithm Παρατήρηση: σελίδες που έχουν χρησιμοποιηθεί τελευταία έχουν μεγάλη πιθανότητα να ξαναχρησιμοποιηθούν στο μέλλον (αρχή τοπικότητας) Ο LRU είναι μια προσπάθεια υλοποίησης του βέλτιστου αλγορίθμου. Ο LRU επιλέγει την σελίδα η οποία δεν έχει χρησιμοποιηθεί για τον περισσότερο χρόνο Υλοποίηση: Οι σελίδες διατηρούνται σε μια συνδεδεμένη λίστα όπου η σελίδα που χρησιμοποιήθηκε πιο πρόσφατα εμφανίζεται στην αρχή της λίστας και αυτή που χρησιμοποιήθηκε το λιγότερο πρόσφατα στο τέλος Κάθε φορά που υπάρχει αναφορά σε μια σελίδα, αυτή μεταφέρεται στην αρχή της λίστας Χρονοβόρα λύση αφού πρέπει να αλλάζουν οι δείκτες σε κάθε βήμα.

Least Recently Used (LRU) Page Replacement Algorithm Υλοποίηση 1 σε υλικό: Το σύστημα έχει ένα μετρητή (64-bit) ο οποίος αυξάνεται αυτόματα σε κάθε βήμα. Η κάθε καταχώρηση στον πίνακα με τις σελίδες (page table entry) έχει χώρο για να αποθηκευτεί η τιμή του μετρητή. Κάθε φορά που γίνεται αναφορά σε μια σελίδα, τότε στην καταχώρηση της αντιγράφεται η τιμή του μετρητή Ο αλγόριθμος επιλέγει τη σελίδα της οποίας ο μετρητής έχει την πιο μικρή τιμή. Υλοποίηση 2 σε υλικό: Το ΛΣ διατηρεί ένα πίνακα με nxn bits Κάθε φορά που γίνεται αναφορά στη σελίδα k όλα τα bits της σειράς k γίνονται 1 και τα bits κάθε στήλης 0. Ο αλγόριθμος επιλέγει την σελίδα στην οποία αντιστοιχεί η μικρότερη δυαδική τιμή

Not Frequently Used (NFU) Page Replacement Algorithm Οι προηγούμενοι 2 αλγόριθμοι χρειάζονται τη βοήθεια του υλικού, αλλά οι πλείστοι επεξεργαστές εν παρέχουν αυτή τη βοήθεια. Αλγόριθμος σε λογισμικό Για κάθε σελίδα υπάρχει ένας καταχωρητής (shift register) Σε κάθε σήμα διακοπής από το ρολόι (clock interrupt) το ΛΣ σπρώχνει την τιμή του R-bit στην πιο αριστερή θέση του καταχωρητή Όταν το ΛΣ θέλει να επιλέξει σελίδα για να αντικαταστήσει επιλέγει αυτή της οποίας ο καταχωρητής έχει την μικρότερη τιμή Σε περίπτωση που δύο ή περισσότεροι καταχωρητές έχουν την ίδια τιμή, διαλέγει μια στην τύχη. Ποίες οι διαφορές του NFU από τον LRU; Στον NFU δεν ξεχωρίζουμε μεταξύ σελίδων που αναφέρθηκαν στον ίδιο κύκλο του clock interrupt. Ο NFU «ξεχνά» μετά από κάποιους κύκλους.

Working Set Page Replacement Algorithm Η ιδέας του working set είναι σημαντική αφού περιορίζει τα σφάλματα σελίδας (page faults) και την καθυστέρηση αντικατάστασης σελίδων. Πρακτικά το σύνολο εργασίας μπορεί να ορισθεί σαν το σύνολο των σελίδων που έχουν αναφερθεί στους τελευταίους n κύκλους ή τ msec. Για κάθε σελίδα υπάρχει καταχώρηση στον πίνακα σελίδων με τον χρόνο στον οποίο αναφέρθηκε τελευταία η σελίδα. Σε κάθε κύκλο εάν το R-bit =1 τότε ενημερώνεται η καταχώρηση με τον παρόν χρόνο. Εάν το R=0 και η ηλικία (age) της σελίδας είναι μεγαλύτερη από τ τότε η σελίδα επιλέγεται για αντικατάσταση Εάν η ηλικία όλων των σελίδων είναι μικρότερη το τ (όλες ανήκουν στο working set) τότε επιλέγεται αυτή με την μεγαλύτερη ηλικία.

Working Set Clock Page Replacement Algorithm Όλες οι σελίδες οργανώνονται σε μια κυκλική λίστα στην οποία αναγράφεται επίσης ο χρόνος τελευταίας αναφοράς στη σελίδα. Όταν α αλγόριθμος ψάχνει σελίδα για αντικατάσταση, ελέγχει το R bit. Εάν είναι 1 τότε ενημερώνεται ο τελευταίος χρόνος αναφοράς Εάν είναι 0 και η ηλικία της σελίδας είναι μεγαλύτερη από το τ τότε η σελίδα είναι υποψήφια για αντικατάσταση Σ1 1121 Σ6 Σ11 Σ5 1432 Σ4 1321 Σ7 Σ15 Σ3 1220 Σ8 Σ13

Σχεδιασμός Συστημάτων Σελίδωσης Πολιτικές για «τοπική» (local) ή «γενική» (global) κατανομή σελίδων. Έλεγχος Φόρτου (Load control) Μέγεθος Σελίδας (Page size) Σελίδες για εντολές (πρόγραμμα) ή δεδομένα και Κοινές σελίδες (Shared memory) Αντικατάσταση σελίδων (Cleaning policy)

Πολιτικές για «τοπική» (local) ή «γενική» (global) κατανομή σελίδων Μέχρι τώρα υποθέσαμε πως η αντικατάσταση σελίδων γίνεται μόνο με σελίδες της ίδιας διεργασίας Όμως σε μια δεδομένη στιγμή μπορεί να τρέχουν αρκετές διεργασίες. Σε αυτή την περίπτωση θα βρούμε τη σελίδα που χρησιμοποιείται λιγότερο από Τις σελίδες της ίδιας διεργασίας (τοπική κατανομή). Όλες τις σελίδες όλων των διεργασιών (γενική κατανομή). Υποθέστε ότι στη δεδομένη στιγμή η διεργασία Α χρειάζεται τη σελίδα Α6. Ποια σελίδα θα πρέπει να αντικαταστήσει; Τοπική πολιτική Α12 Γενική πολιτική Β2 Διεργασία Σελίδα Ηλικία Α 1 7 12 3 9 Β 5 2 6 10

Πολιτικές για τοπική ή γενική κατανομή σελίδων Σε σταθερές κατανομές, πως το ΛΣ αποφασίζει πόσες σελίδες να κατανείμει σε κάθε διεργασία; Κάθε διεργασία παίρνει ίσο μερίδιο Κάθε διεργασία παίρνει μερίδιο ανάλογο με το μέγεθος της Οι γενικές κατανομές δουλεύουν καλύτερα απ’ ότι οι τοπικές κατανομές ειδικά σε περιπτώσεις που χρησιμοποιείται το working set. Εάν σε μια διεργασία με μικρό working set δώσουμε πολλές σελίδες, τότε σπαταλούμε τη μνήμη Εάν σε μια διεργασία με μεγάλο working set δεν δώσουμε αρκετές σελίδες, τότε η διεργασία αυτή θα χάνει πολλή ώρα να φορτώνει σελίδες. Κάθε διεργασία χρειάζεται ένα ελάχιστο αριθμό σελίδων για να μπορεί να τρέξει Καθώς η διεργασία τρέχει μπορεί το ΛΣ να αλλάζει το αριθμό σελίδων κάθε διεργασίας Π.χ. παρακολουθώντας τη συχνότητα σφαλμάτων σελίδας. Πως θα δούλευε ένας τέτοιος αλγόριθμος;

Έλεγχος Φόρτου (Load Control) Ας υποθέσουμε πως υπάρχει τρόπος να υπολογίσουμε ακριβώς το working set της κάθε διεργασίας. Μπορούμε με βεβαιότητα να περιορίσουμε τη συχνότητα των σφαλμάτων σελίδας; Thrashing: το φαινόμενο κατά το οποίο ο επεξεργαστής σπαταλά πολλή ώρα στο να ανταλλάζει σελίδες από την κύρια μνήμη χωρίς να επιτυγχάνει πρόοδο στην εκτέλεση της διεργασίας. Τι θα συμβεί στην περίπτωση που το working set όλων των έτοιμων (ready) διεργασιών είναι μεγαλύτερο από την διαθέσιμη μνήμη; Σε τέτοιες περιπτώσει το ΛΣ θα πρέπει να μεταφέρει κάποιες διεργασίες στο δίσκο (swapping) μέχρι που κάποια διεργασία από αυτές που θα μείνουν τελειώσει.

Μέγεθος Σελίδας (Page Size) Γιατί μικρές σελίδες; Η τελευταία σελίδα κάθε προγράμματος ή δεδομένων δεν θα είναι γεμάτη. Κατά μέσο όρο μόνο η μισή σελίδα θα είναι γεμάτη Εσωτερικός Κατακερματισμός (Internal Fragmentation ) Εάν οι σελίδες είναι μεγάλες τότε ένα μεγάλο μέρος του προγράμματος θα είναι φορτωμένο στη κύρια μνήμη. Όμως υπάρχει μεγάλη πιθανότητα μονό μικρό μέρος της σελίδας να είναι όντως στο working set της διεργασίας Γιατί μεγάλες σελίδες; Για κάθε σελίδα πρέπει να υπάρχει καταχώρηση στον πίνακα σελίδων (page table) και συνεπώς θα χρειάζεται μικρότερος πίνακας Σε κάποια συστήματα ο πίνακας σελίδων φορτώνεται σε καταχωρητές! Μεγάλες σελίδες φορτώνουν σχετικά πιο γρήγορα από ότι μικρές σελίδες Ο μεγαλύτερος χρόνος πρόσβασης στο δίσκο είναι ο χρόνος εντοπισμού του ζητούμενου τμήματος

Ξεχωριστές Σελίδες για Πρόγραμμα ή Δεδομένα και Κοινές Σελίδες (Shared Memory) Ένα πρόγραμμα μπορεί να έχει δύο ξεχωριστούς (εικονικούς) χώρους I-Space: Instruction space D-Space: Data Space Με αυτό τον τρόπο είναι δυνατό να αυξήσουμε ακόμα περισσότερο το μέγεθος ενός προγράμματος Το υλικό ξέρει πως ότι αν χρειάζεται εντολή πρέπει να ψάξει τον πίνακα σελίδων με τις εντολές της διεργασίας αν χρειάζεται δεδομένα πρέπει να ψάξει τον πίνακα σελίδων με τα δεδομένα της διεργασίας Κάποιες διεργασίες μπορούν να έχουν κοινό I-Space και διαφορετικό D-Space Μπορεί να υπάρχει δυνατότητα χρήσης κοινού D-Space αλλά σε περιπτώσεις Read Only. Υπάρχει περίπτωση που σε προχωρημένα συστήματα οι χρήστες να μπορούν να ελέγχουν την εικονική μνήμη για σκοπούς προγραμματισμού διεργασιών με κοινή μνήμη.

Αντικατάσταση Σελίδων (Cleaning Policy) Η διαδικασία επιλογής της σελίδας που θα πρέπει να ανταλλαγεί καθώς και η μόνιμη αποθήκευση της στο δίσκο σε περίπτωση που έχει μεταβληθεί (για μελλοντική αναφορά) είναι χρονοβόρα. Μια διεργασία paging daemon τρέχει περιοδικά και επιλέγει ένα σύνολο από σελίδες οι οποίες όταν χρειαστεί θα μπορούσαν να αντικατασταθούν (ανάλογα με τον αλγόριθμο που έχουμε επιλέξει) και σε περίπτωση που έχουν μεταβληθεί, τις αποθηκεύει επίσης στο δίσκο. Εάν μια από τις σελίδες που έχουν επιλεχθεί αναφερθεί στο άμεσο μέλλον, τότε αυτή απλά αφαιρείται από το σύνολο των υποψήφιων για ανταλλαγή. Μόλις συμβεί ένα σφάλμα μνήμης τότε επιλέγεται αμέσως μια σελίδα από το σύνολο υποψηφίων για ανταλλαγή

Τμηματοποίηση (Segmentation) Πολλές φορές είναι πιο αποδοτικό να σπάσουμε το χώρο διευθύνσεων (address space) ενός προγράμματος σε διάφορα ανεξάρτητα κομμάτια Πιο εύκολη η πρόσβαση σε κομμάτια της μνήμης από πολλαπλές διεργασίες (memory sharing) Καλύτερη προστασία Για παράδειγμα υποθέστε ένα μεταγλωττιστή (compiler) ο οποίος χωρίζει τη εικονική μνήμη σε διάφορα μέρη Πρόγραμμα, πίνακας συμβόλων, πίνακας με τις σταθερές, το stack κλπ. Πόσος χώρος θα πρέπει να κατανεμηθεί για το κάθε μέρος; Τι θα συμβεί εάν ο μεταγλωττιστής τελικά χρειάζεται περισσότερο χώρο από αυτόν που του έχει κατανεμηθεί; Η λύση είναι να τμηματοποιηθεί η εικονική μνήμη σε ανεξάρτητους χώρους έτσι που να μπορούν να μεγαλώσουν όσο χρειάζονται

Τμηματοποίηση (Segmentation) Σελιδοποίηση Τμηματοποίηση Πρέπει ο προγραμματιστής να γνωρίζει τη μέθοδο; Όχι Ναι Πόσοι γραμμικοί χώροι διευθύνσεων 1 Πολλοί Μπορεί ο χώρος διευθύνσεων να υπερβεί τη φυσική μνήμη; Μπορεί να ξεχωρίσει ο κώδικας από τα δεδομένα Υποστηρίζουν κοινή μνήμη Μπορούν να χρησιμοποιηθούν πίνακες με διαφορετικό μέγεθος; Γιατί ανακαλύφθηκε η κάθε τεχνική; Δυνατόν να τρέξουν προγράμματα μεγαλύτερα από την φυσική μνήμη Καλύτερη διαχείριση κοινής μνήμης