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

Σχετικά έγγραφα
ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Λειτουργικά Συστήματα Η/Υ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Διδάσκοντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη Λειτουργικά Συστήματα

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Εικονική Μνήμη (Virtual Μemory)

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

Μάθημα 8: Διαχείριση Μνήμης

Εισαγωγή στα Λειτουργικά Συστήματα

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Λειτουργικά Συστήματα Η/Υ

Εικονική Μνήμη (Virtual Memory)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Λειτουργικά Συστήματα (Λ/Σ)

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 9

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Λειτουργικά Συστήματα

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

Εικονική Μνήμη (virtual memory)

Εισαγωγή στα Λειτουργικά Συστήματα

Αρχιτεκτονική Υπολογιστών

Εισαγωγή στα Λειτουργικά

Λειτουργικά Συστήματα Ι. Διαχείριση Μνήμης (Memory Management)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης II

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης II

ΛΟΓΙΣΜΙΚΟ (software)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Υλισµικό διαχείρισης µνήµης (Memory management hardware)

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Κεφάλαιο 3ο: Διαχείριση Μνήμης

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

Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο Τ.Ε.Ι. Σερρών

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

Λειτουργικά Συστήματα

Εισαγωγή στην Πληροφορική

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης II

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

Επιτεύγµατα των Λ.Σ.

ιαχείριση Μνήµης Κεφάλαιο 7 Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Λειτουργικά Συστήματα (ΗΥ321)

Υλισμικό Διαχείρισης Μνήμης (Memory Management Hardware)

Εισαγωγή στην Πληροφορική

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Περιγραφή και Έλεγχος ιεργασιών

Λειτουργικά Συστήματα (ΗΥ321)

Ενότητα 7 (Κεφάλαιο 7) Διαχείριση Μνήμης. Περιεχόμενα. Ανάγκη για διαχείριση μνήμης. Βασικές αρχές διαχείρισης μνήμης.

ΠΛΕ- 027 Μικροεπεξεργαστές

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Οργάνωση Υπολογιστών (ΙI)

Αδιέξοδα (Deadlocks)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ. Μνήμη

Λειτουργικά Συστήματα

E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ. TfiÌÔ B' ÂÈÙÔ ÚÁÈÎ ÛÙ Ì Ù I

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΕΠΑΝΑΛΗΨΗ

Εικονική Μνήμη (1/2)

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ - ΣΗΜΕΙΩΣΕΙΣ

Εικονική Μνήµη (Virtual Memory)

Λειτουργικά. Συστήματα Ι. Διεργασίες-Νήματα. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά Συστήματα

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Λειτουργικά Συστήματα (ΗΥ222)

Ε-85: Ειδικά Θέµατα Λογισµικού

Εικονική Μνήμη (virtual memory)

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 5. Μεγάλη και γρήγορη: Αξιοποίηση της ιεραρχίας της µνήµης

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Λειτουργικά Συστήματα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

πίνακας σελίδων Bit Παρουσίας Αριθμός Πλαισίου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχιτεκτονική υπολογιστών

Virtual Memory. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Transcript:

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

Παράδειγµα Υποθέτουµε ένα σύστηµα µε 32ΜΒ κύρια µνήµα Το ΛΣ χρειάζεται 6ΜΒ ιεργασίες Α- χρειάζονται 4ΜΒ η κάθε µια. ιεργασίες Ε και Ζ χρειάζονται 2ΜΒ η κάθε µια. Πως θα κατανείµετε την µνήµη στις ακόλουθες περιπτώσεις Μονοπρογραµµατισµός (batch system - Μία διεργασία κάθε φορά). Πολυπρογραµµατισµός. Τι θα συµβεί εάν οι διεργασίες Ε και Ζ ζητήσουν από επιπρόσθετο ΜΒ. Μονοπρογραµµατισµός Συστήµατα τύπου batch. Φορτώνεται µια διεργασία στη µνήµη. Τρέχει µέχρι το τέλος. Φορτώνεται η επόµενη Σε αυτά τα συστήµατα η διαχείριση της µνήµης είναι εύκολή User Program in RAM FF in ROM User Program FF FF Device Drivers User Program Mainframes Palmtops MS-DOS 2

Πολυπρογραµµατισµός µε Σταθερή Κατανοµή ΗΜνήµη χωρίζεται σε σταθερά διαµερίσµατα ή τµήµατα (πιθανόν το κάθε ένα µε άνισο χώρο). Σε κάθε διεργασία κατανέµεται ένα διαµέρισµα στο οποίο θα µπορέσει να χωρέσει. Π.χ., µπορεί να µπει στο µικρότερο ελεύθερο διαµέρισµα στο οποίο χωρεί. Partition M Partition 2 Partition M 7Κ 3Κ 2Κ Κ Πολυπρογραµµατισµός µε Σταθερή Κατανοµή Εάν δεν υπάρχει ελεύθερο διαµέρισµα µε τον απαιτούµενο χώρο ή εάν η πολιτική είναι να µην «σπαταλούµε» µεγάλα διαµερίσµατα για σχετικά µικρές διεργασίες, τότε η διεργασία µπαίνει σε µια ουρά Υπάρχουν διάφορα πιθανά µοντέλα όπου είτε το κάθε διαµέρισµα έχει τη δική του ουρά είτε υπάρχει µια ουρά για όλα τα διαµερίσµατα είτε υπάρχει µια ουρά για όλα τα διαµερίσµατα κάθε χωρητικότητας Αχρησιµοποίητη µνήµη Partition M P2 Process 2 P5 P4 Process Partition 23 P Process Partition M 7Κ 3Κ 2Κ Κ 3

Μετατόπιση ιεργασίας και Προστασία Μνήµης 4 3 JMP 976 2 976 JMP 976 976 Μετατόπιση ιεργασίας και Προστασία της Μνήµης Limit Base xffff User program and Data xffff Limit 2 Base 2 Limit Base User 2 Data User Data User program Limit 2 Base 2 Limit Base 4

Μετατόπιση ιεργασίας και Προστασία Μνήµης If(Base+976 < Limit) Limit 4 JMP Base+976; 2976 JMP 976 Else Error; Base 2 976 Εναλλακτικά, κάθε πρόγραµµα, µπορεί να έχει µια λίστα µε όλες τις διευθύνσεις τις οποίες καλεί και το ΛΣ να αλλάξει τη λίστα ανάλογα µε το τµήµα στο οποίο φορτώθηκε το πρόγραµµα. υναµική Κατανοµή Μνήµης Για να αποφευχθεί η αχρησιµοποίητη µνήµης, µπορεί να χρησιµοποιήσουµε δυναµική κατανοµή. Η µνήµη κατανέµεται στις διεργασίες όταν χρειάζονται και όση χρειάζονται Process 3 Process 4 Process 2 Κατακερµατισµός της Μνήµης (Memory fragmentation) Επεξεργαστής µπορεί να «µετατοπίσει» όλες τις διεργασίες αλλά η λύση αυτή είναι χρονοβόρα. Process 5

Ανταλλαγή Μνήµης Τι θα συµβεί εάν ο χώρος της µνήµης είναι µικρότερος απ ότι χρειάζονται όλες οι διεργασίες; Το ΛΣ αποφασίζει να ανταλλάξει κάποιες διεργασίες από την κύρια µνήµη στο δίσκο (process swapping) Το πρόβληµα της διαχείρισης της µνήµης θα ήταν αρκετά πιο εύκολο αν ξέραµε από την αρχή πόση µνήµη θα χρειαστεί η κάθε διεργασία. Τι θα συµβεί εάν η ιεργασία ζητήσει επιπρόσθετα 75Κ µνήµης (π.χ. µε την εντολή malloc()). Τι θα συµβεί εάν η ιεργασία ζητήσει επιπρόσθετα 5Κ µνήµης 9Κ 6Κ 5Κ 2Κ Process 2 Process Κατανοµή Μνήµης Stack B Χώρος για επέκταση Χώρος επέκτασης εδοµένα B Χώρος που χρησιµοποιείται Πρόγραµµα B Χώρος για επέκταση Χώρος που χρησιµοποιείται Stack A Χώρος επέκτασης εδοµένα Α Πρόγραµµα Α Το πρόβληµα παραµένει: Τι θα συµβεί εάν ο µια διεργασία χρειαστεί περισσότερο χώρο από όσο της έχει κατανεµηθεί; 6

ιαχείριση της Μνήµης Πως το ΛΣ ξέρει πια τµήµατα είναι δεσµευµένα και πια ελεύθερα; Bitmap Η µνήµη χωρίζεται σε µικρές µονάδες u (π.χ., 4 bytes) Ορίζεται ένας πίνακας στον οποίο κάθε µονάδα u αντιπροσωπεύεται από ένα bit. Εάν το u είναι δεσµευµένο, τότε το αντίστοιχο bit έχει την τιµή. ιαφορετικά παίρνει την τιµή Μνήµη u u 2 u 3 u 4 2 3 4 5... Πόση επιπρόσθετη µνήµη χρειάζεται αυτή η µέθοδος; Για κάθε u bits χρειάζεται bit (δηλαδή η µέθοδος αυτή χρησιµοποιεί το /(u+) της ολικής µνήµης. Bitmap Υποθέστε πως σε κάποιο ΛΣ το µικρό διάστηµα u είναι 32 bits. Η συνολική µνήµη του συστήµατος είναι 256ΜΒ. Πόσο µεγάλο πρέπει να είναι το bitmap; 256MB 8,34, 48 bytes 33 Υποθέστε πως το ΛΣ θέλει να φορτώσει ένα πρόγραµµα το οποίο χρειάζεται 4ΜΒ µνήµης. Πως το ΛΣ θα βρει το τµήµα στο οποίο να τοποθετήσει το πρόγραµµα; Θα ψάξει για,48,576 (Μ = 2 2 ) συνεχόµενα! Το ψάξιµο ενός bitmap για το κατάλληλο χώρο στο οποίο θα τοποθετηθεί µια διεργασία είναι γενικά χρονοβόρα διαδικασία. 7

Συνδεδεµένη Λίστα (Linked List) Ορίζεται µια δοµή µε 4 πεδία η οποία χαρακτηρίζει το κάθε τµήµα της µνήµης P/H (process/hole): Καθορίζει κατά πόσο το συγκεκριµένο τµήµα είναι δεσµευµένο (κατανεµηµένο σε κάποια διεργασία) ή ελεύθερο. Η διεύθυνση του πρώτου byte του τµήµατος Το µέγεθος του τµήµατος είκτης (pointer) στο επόµενο τµήµα Μνήµη 2 3 4 5 P 6 H 6 4 P 2 H 2 P 3 7 ιαχείριση Συνδεδεµένης Λίστα Πως θα µεταβληθεί η λίστα όταν εισέλθει η 6; 6 2 3 4 5 P 68 HP 68 42 P 2 H 2 P 3 7 Πως θα µεταβληθεί η λίστα όταν εισέλθει η 7; 7 2 3 4 5 P 6 H 6 4 P 2 H 2 P 3 7 P 2 6 H 6 4 P 2 H 2 P 3 7 8

ιαχείριση Συνδεδεµένης Λίστα Πως θα τοποθετούσατε την 9 η οποία έχει µέγεθος 2; P 4 H 4 6 P 2 H 2 P 3 7 Ψάχνοντας τη λίστα από την αρχή µέχρι να βρούµε ελεύθερο χώρο (H- Hole) στον οποίο να χωρά η 9 (first fit). Ψάχνοντας τη λίστα από το σηµείο στο οποίο σταµατήσαµε την προηγούµενη φορά µέχρι να βρούµε ελεύθερο χώρο (H-Hole) στον οποίο να χωρά η 9 (next fit). Ψάχνοντας όλη τη λίστα βρίσκουµε τον ελεύθερο χώρο στον οποίο χωρά «καλύτερα» η 9 (best fit). ιατηρώντας πολλαπλές λίστες, µια για κάθε «κοινό» µέγεθος διεργασίας (quick fit). Σε αυτή την περίπτωση η διαχείριση των λιστών γίνεται πολύπλοκη, γιατί; Μονάδα ιαχείρισης Μνήµης (Μ Μ) Ο επεξεργαστής είναι εξοπλισµένος µε την Μ Μ η οποία είναι υπεύθυνη να µεταφράζει τις εικονικές διευθύνσεις (virtual address) σε πραγµατικές διευθύνσεις. Π.χ., όταν ο επεξεργαστής εκτελέσει την εντολή MOV REG η Μ Μ βρίσκει σε πιο σηµείο της πραγµατικής µνήµης αντιστοιχεί η διεύθυνση. 9

Εικονική Μνήµη Όταν τρέχει κάποιο πρόγραµµα, είναι υποχρεωτικό να είναι ολόκληρο φορτωµένο στην κύρια µνήµη; Όχι κατ ανάγκη! Βασική ιδέα Το ΛΣ θα µπορούσε να φορτώσει το «αρχικό» µέρος του προγράµµατος το οποίο ξεκινά και τρέχει. Σε κάποιο σηµείο, µόλις δηλαδή χρειαστεί µέρος του προγράµµατος το οποίο δεν είναι φορτωµένο στην κύρια µνήµη, στέλνει ένα σήµα στο ΛΣ ότι χρειάζεται κοµµάτι του προγράµµατος το οποίο δεν είναι διαθέσιµο στην κύρια µνήµη. Τότε το ΛΣ αναλαµβάνει να βρει χώρο στην κύρια µνήµη (πιθανόν ανταλλάσσοντας (swapping) κάποιον άλλο χώρο) και φορτώνει το ζητούµενο κοµµάτι. Αυτό επαναλαµβάνεται όσο χρειάζεται. Εικονικές ιευθύνσεις (Virtual Addresses) Ένα πρόγραµµα υποθέτει ότι ξεκινά πάντα στην διεύθυνση Κάθε φορά που αναφέρεται σε µια διεύθυνση (π.χ., 876) δεν αναφέρεται στη πραγµατική διεύθυνση 876 αλλά στην διεύθυνση που απέχει 876 bytes από την αρχή του προγράµµατος (θυµηθείτε τους καταχωρητές base και limit). Οι διευθύνσεις αυτές (οι οποίες δηµιουργούνται από το πρόγραµµα) ονοµάζονται εικονικές διευθύνσεις virtual addresses. Επίσης κάθε πρόγραµµα υποθέτει πως µπορεί να έχει όλη την δυνατή µνήµη στην διάθεση του (virtual address space). Π.χ., σε 32-bit σύστηµα, κάθε πρόγραµµα µπορεί να χρησιµοποιήσει όλο τον χώρο από έως 2 32 = 496ΜΒ. Με αυτό τον τρόπο είναι δυνατόν να τρέξουµε προγράµµατα τα οποία είναι κατά πολύ µεγαλύτερα από το µέγεθος της φυσική µνήµης που υπάρχει στο σύστηµα. Π.χ., σε υπολογιστή µε 256ΜΒ µνήµη µπορούµε να τρέξουµε πρόγραµµα το οποίο µπορεί να είναι µέχρι 496ΜΒ.

Σελιδοποίηση (Paging) Ολόκληρος ο χώρος των εικονικών διευθύνσεων χωρίζεται σε σελίδες (pages). Ολόκληρη η πραγµατική µνήµη χωρίζεται επίσης σε σελίδες πλαίσια (page frames) Όλες οι σελίδες και σελίδες πλαίσια είναι του ίδιου µεγέθους (π.χ., 4KB). Η Μ Μ για κάθε διεργασία διατηρεί ένα πίνακα µε δείκτες στον οποίο φαίνεται ποιες από τις σελίδες (εικονικές) είναι φορτωµένες στην κύρια µνήµη και σε πια σελίδα πλαίσιο της πραγµατικής µνήµης είναι τοποθετηµένη. Εάν ζητηθεί σελίδα η οποία δεν είναι φορτωµένη στην πραγµατική µνήµη τότε η Μ Μ στέλνει «σφάλµα µνήµης» (page fault) στο ΛΣ το οποίο θα πρέπει να φροντίσει να φορτωθεί η σελίδα και να ενηµερώσει τη Μ Μ. Παράδειγµα Virtual Addresses 6K-64K 7 56K-6K 52K-56K 48K-52K 44K-48K 3 4K-44K 6 36K-4K 32K-36K 28K-32K 24K-28K 4 2K-24K 6K-2K 2K-6K 8K-2K 2 4K-8K 5 K-4K Physical Addresses Υποθέτουµε ένα 6-bit σύστηµα µε 32Κ πραγµατικής µνήµης όπου η Μ Μ έχει τον εξής πίνακα 28K-32K 24K-28K 2K-24K 6K-2K 2K-6K 8K-2K 4K-8K K-4K Virtual Address 496 258 229 Physical Address 496 496 248 Page fault

Μονάδα ιαχείρισης Μνήµης IVA: OPA: IVA: OPA: IVA: Input Virtual Address OPA: Output Physical Address Virtual Addresses 5 4 3 2 9 8 7 6 5 4 3 2 Present / absent bit Physical Addresses 28K-32K 24K-28K 2K-24K 6K-2K 2K-6K 8K-2K 4K-8K K-4K Μονάδα ιαχείρισης Μνήµης Θεωρητικά, κάθε διεργασία θα µπορούσε να έχει τον δικό της πίνακα φυλαγµένο σε καταχωρητές της Μ Μ. Κάθε φορά που η διεργασία αναφέρεται στη µνήµη, τότε «εύκολα» βρίσκει τη φυσική διεύθυνση. Γιατί µια τέτοια λύση δεν είναι εφικτή; Υποθέστε ένα σύστηµα µε 32-bit διευθύνσεις και 4KB σελίδες. Πόσες δυνατές σελίδες υπάρχουν; Απάντηση: 2 2 = Μ Υποθέστε ένα σύστηµα µε 64-bit διευθύνσεις και 4KB σελίδες. Πόσες δυνατές σελίδες υπάρχουν; Απάντηση: 2 52!! Το µέγεθος της αναγκαίας µνήµης είναι τεράστιο µε αποτέλεσµα η ανταλλαγή διεργασιών (process switching) να είναι χρονοβόρα! Θα µπορούσε ο πίνακας αυτός να φυλαγόταν στην κύρια µνήµη; Όχι, αφού για κάθε αναφορά στην µνήµη θα χρειαζόταν επιπρόσθετη αναφορά για την ανεύρεση της φυσικής διεύθυνσης! 2

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

Αρχή της «Τοπικότητας» Principle of Locality or Locality of Reference Οι αναφορές στη µνήµη συνήθως γίνονται από / προς «κοντινές» διευθύνσεις. Εάν σε µια επανάληψη υπήρξε αναφορά στη διεύθυνση xyz τότε υπάρχει σχετικά ψηλή πιθανότητα ότι και η επόµενη αναφορά θα είναι σε κάποια διεύθυνση πολύ κοντά xyz. Κάποιος µπορεί να χρησιµοποιήσει την αρχή της τοπικότητας για να µειώσει το µέγεθος του πίνακα στην Μ Μ καθώς και για να αποφασίσει ποιες σελίδες να φορτώσει στην κύρια µνήµη. Πώς; Translation Lookaside Buffers TLB Λόγω του µεγάλου µεγέθους του πίνακα πολλά συστήµατα αποφεύγουν να φορτώνουν ολόκληρο τον πίνακα στην Μ Μ. Εναλλακτικά, φορτώνουν ένα µικρό πίνακα (TLB) στον οποίο περιγράφουν µόνο ποιες εικονικές σελίδες είναι φορτωµένες στην κύρια µνήµη και σε πιο σηµείο. Κάθε φορά που υπάρχει αναφορά στην µνήµη, η Μ Μ πρώτα ψάχνει το TLB. Για καλύτερη απόδοση, η Μ Μ µπορεί να είναι εξοπλισµένη µε υλικό το οποίο ελέγχει όλες τις καταχωρήσεις του TLB παράλληλα. Εάν η ζητούµενη σελίδα δεν βρεθεί στο TLB τότε η Μ Μ ψάχνει τη σελίδα στον πίνακα που είναι φορτωµένος στην κύρια µνήµη. Χρησιµοποιώντας την αρχή της τοπικότητας, η Μ Μ ενηµερώνει το TLB προσθέτοντας την νέα σελίδα και αφαιρώντας κάποια άλλη. Το TLB συνήθως έχει το πολύ 64 καταχωρήσεις. Για απλοποίηση του υλικού της Μ Μ, σε πολλά συστήµατα το ρόλο της διαχείρισης της Μ Μ αναλαµβάνει το ΛΣ. 4

Αλγόριθµοι Αντικατάστασης Σελίδων Πως αποφασίζουµε ποιες σελίδες θα φορτωθούν στην κύρια µνήµη και ποιες θα µείνουν στον σκληρό δίσκο; Βέλτιστος αλγόριθµος αντικατάστασης (optimal replacement algorithm) Στο σύνολο των διεργασιών που είναι φορτωµένες στη µνήµη, υπολογίζουµε το χρόνο που θα ξαναχρησιµοποιηθεί η κάθε µια. Επιλέγουµε αυτή που πρόκειται να χρησιµοποιηθεί πιο µακριά στο µέλλον. Γενικά ο αλγόριθµος αυτός δεν είναι εφαρµόσιµος αφού το ΛΣ δεν µπορεί να προβλέψει τους χρόνους που θα χρησιµοποιηθεί η κάθε σελίδα. Ο αλγόριθµος αυτός γενικά χρησιµοποιείται σαν µέτρο σύγκρισης των εφαρµόσιµων αλγορίθµων. First-In First-Out Page Replacement Algorithm Επιλέγουµε τη σελίδα η οποία ήταν φορτωµένη στη µνήµη το περισσότερο χρόνο. Παράδειγµα: Υποθέστε πως βρισκόµαστε στον χρόνο 5 και πως θέλουµε να αντικαταστήσουµε µια σελίδα µε την Σ η οποία χρειάζεται τώρα. Σελίδα Σ Σ2 Σ3 Σ4 Χρόνος Φόρτωσης 5 8 3 Τελευταίος χρόνος αναφοράς 2 4 8 3 Με βάση την πολιτική FIFO πρέπει να αντικαταστήσουµε τη σελίδα Σ2. Παρατηρήστε όµως ότι παρόλο που η Σ2 φορτώθηκε πρώτη, χρησιµοποιήθηκε πολύ πρόσφατα (4) και πιθανόν να έχει ξαχαχρησιµοποιηθεί αρκετές φορές από τότε που φορτώθηκε πρώτη φορά! 5

Not Recently Used (NRU) page replacement algorithm NRU ψάχνει για µια σελίδα που δεν έχει χρησιµοποιηθεί «τελευταία». Πως εφαρµόζεται η πολιτική: Θυµηθείτε τα bits R (referenced) και Μ (modified). Όταν µια σελίδα αλλάξει (write) τότε το bit Μ=. Όταν µια σελίδα αναφερθεί τότε το bit R= Υπάρχει ένας διακόπτης ρολόι το οποίο περιοδικά στέλνει σήµα στο ΛΣ να µετατρέψει το R=. Οι διεργασίες κατηγοριοποιεί τις σελίδες ως ακολούθως Κατηγορία : R=, M= Κατηγορία : R=, M= Κατηγορία 2: R=, M= Κατηγορία 3: R=, M= O NRU επιλέγει τυχαία από τις σελίδες της κατηγορίας µε τον µικρότερο δυνατό αριθµό. Τι πρέπει να κάνει το ΛΣ σε περίπτωση που επιλεχθεί σελίδα κατηγορίας ; Second Chance Page Replacement Algorithm Επιλέγουµε τη σελίδα η οποία ήταν φορτωµένη στη µνήµη το περισσότερο χρόνο. Σε περίπτωση που το R=, τότε ξέρουµε πως η σελίδα έχει χρησιµοποιηθεί τελευταία, οπόταν Θέτουµε το R=. Ενηµερώνουµε τον χρόνο φόρτωσής (θέτοντας τον στην δεδοµένη στιγµή) Τοποθετούµε την συγκεκριµένη σελίδα στο τέλος της ουράς. Επιλέγουµε την επόµενη σελίδα και επαναλαµβάνουµε. Σελίδα που φορτώθηκε πρώτη Σελίδα που φορτώθηκε τελευταία Σ 3 6 Σ 6 7 Σ 8 Σ 2 Σ 3 2 6

Clock Page Replacement Algorithm Οίδιος µε τον second chance page replacement αλγόριθµο. Η µόνη διαφορά είναι στην υλοποίηση όπου ο clock page replacement αλγόριθµος υλοποιεί µια κυκλική λίστα. Σ5 Σ Σ3 Σ Σ4 Σ7 Σ8 Σ6 Σ3 Σ5 Οαλγόριθµος τρέχει κάθε φορά που το ΛΣ χρειάζεται να αντικαταστήσει µια σελίδα. Least Recently Used (LRU) Page Replacement Algorithm Παρατήρηση: σελίδες που έχουν χρησιµοποιηθεί τελευταία έχουν µεγάλη πιθανότητα να ξαναχρησιµοποιηθούν στο µέλλον (αρχή τοπικότητας) Ο LRU είναι µια προσπάθεια υλοποίησης του βέλτιστου αλγορίθµου. Ο LRU επιλέγει την σελίδα η οποία δεν έχει χρησιµοποιηθεί για τον περισσότερο χρόνο Υλοποίηση: Οι σελίδες διατηρούνται σε µια συνδεδεµένη λίστα όπου η σελίδα που χρησιµοποιήθηκε πιο πρόσφατα εµφανίζεται στην αρχή της λίστας και αυτή που χρησιµοποιήθηκε το λιγότερο πρόσφατα στο τέλος Κάθε φορά που υπάρχει αναφορά σε µια σελίδα, αυτή µεταφέρεται στην αρχή της λίστας Χρονοβόρα λύση αφού πρέπει να αλλάζουν οι δείκτες σε κάθε βήµα. 7

Least Recently Used (LRU) Page Replacement Algorithm Υλοποίηση σε υλικό: Το σύστηµα έχει ένα µετρητή (64-bit) ο οποίος αυξάνεται αυτόµατα σε κάθε βήµα. Η κάθε καταχώρηση στον πίνακα µε τις σελίδες (page table entry) έχει χώρο για να αποθηκευτεί η τιµή του µετρητή. Κάθε φορά που γίνεται αναφορά σε µια σελίδα, τότε στην καταχώρηση της αντιγράφεται η τιµή του µετρητή Ο αλγόριθµος επιλέγει τη σελίδα της οποίας ο µετρητής έχει την πιο µικρή τιµή. Υλοποίηση 2 σε υλικό: Το ΛΣ διατηρεί ένα πίνακα µε nxn bits Κάθε φορά που γίνεται αναφορά στη σελίδα k όλα τα bits της σειράς k γίνονται και τα bits κάθε στήλης. Ο αλγόριθµος επιλέγει την σελίδα στην οποία αντιστοιχεί η µικρότερη δυαδική τιµή Not Frequently Used (NFU) Page Replacement Algorithm Οι προηγούµενοι 2 αλγόριθµοι χρειάζονται τη βοήθεια του υλικού, αλλά οι πλείστοι επεξεργαστές εν παρέχουν αυτή τη βοήθεια. Αλγόριθµος σε λογισµικό Για κάθε σελίδα υπάρχει ένας καταχωρητής (shift register) Σε κάθε σήµα διακοπής από το ρολόι (clock interrupt) το ΛΣ σπρώχνει την τιµή του R-bit στην πιο αριστερή θέση του καταχωρητή Όταν το ΛΣ θέλει να επιλέξει σελίδα για να αντικαταστήσει επιλέγει αυτή της οποίας ο καταχωρητής έχει την µικρότερη τιµή Σε περίπτωση που δύο ή περισσότεροι καταχωρητές έχουν την ίδια τιµή, διαλέγει µια στην τύχη. Ποίες οι διαφορές του NFU από τον LRU; Στον NFU δεν ξεχωρίζουµε µεταξύ σελίδων που αναφέρθηκαν στον ίδιο κύκλο του clock interrupt. Ο NFU «ξεχνά» µετά από κάποιους κύκλους. 8

Working Set Page Replacement Algorithm Χρησιµοποιώντας την αρχή της τοπικότητας, σε κάθε χρονική στιγµή µπορούµε να ορίσουµε τις σελίδες που αποτελούν το σύνολο εργασίας (working set) µιας διεργασίας Η ιδέας του working set είναι σηµαντική αφού περιορίζει τα σφάλµατα σελίδας (page faults) και την καθυστέρηση αντικατάστασης σελίδων. Πρακτικά το σύνολο εργασίας µπορεί να ορισθεί σαν το σύνολο των σελίδων που έχουν αναφερθεί στους τελευταίους n κύκλους ή τ msec. Για κάθε σελίδα υπάρχει καταχώρηση στον πίνακα σελίδων µε τον χρόνο στον οποίο αναφέρθηκε τελευταία η σελίδα. Σε κάθε κύκλο εάν το R-bit = τότε ενηµερώνεται η καταχώρηση µε τον παρόν χρόνο. Εάν το R= και η ηλικία (age) της σελίδας είναι µεγαλύτερη από τ τότε η σελίδα επιλέγεται για αντικατάσταση Εάν η ηλικία όλων των σελίδων είναι µικρότερη το τ (όλες ανήκουν στο working set) τότε επιλέγεται αυτή µε την µεγαλύτερη ηλικία. Working Set Clock Page Replacement Algorithm Σ5 Σ Σ7 Σ8 Σ 2 Σ6 Σ3 22 Σ3 Σ4 32 Σ5 432 Όλες οι σελίδες οργανώνονται σε µια κυκλική λίστα στην οποία αναγράφεται επίσης ο χρόνος τελευταίας αναφοράς στη σελίδα. Όταν α αλγόριθµος ψάχνει σελίδα για αντικατάσταση, ελέγχει το R bit. Εάν είναι τότε ενηµερώνεται ο τελευταίος χρόνος αναφοράς Εάν είναι και η ηλικία της σελίδας είναι µεγαλύτερη από το τ τότε η σελίδα είναι υποψήφια για αντικατάσταση 9

Σχεδιασµός Συστηµάτων Σελίδωσης Πολιτικές για «τοπική» (local) ή «γενική» (global) κατανοµή σελίδων. Έλεγχος Φόρτου (Load control) Μέγεθος Σελίδας (Page size) Σελίδες για εντολές (πρόγραµµα) ή δεδοµένα και Κοινές σελίδες (Shared memory) Αντικατάσταση σελίδων (Cleaning policy) Πολιτικές για «τοπική» (local) ή «γενική» (global) κατανοµή σελίδων Μέχρι τώρα υποθέσαµε πως η αντικατάσταση σελίδων γίνεται µόνο µε σελίδες της ίδιας διεργασίας Όµως σε µια δεδοµένη στιγµή µπορεί να τρέχουν αρκετές διεργασίες. Σε αυτή την περίπτωση θα βρούµε τη σελίδα που χρησιµοποιείται λιγότερο από Τις σελίδες της ίδιας διεργασίας (τοπική κατανοµή). Όλες τις σελίδες όλων των διεργασιών (γενική κατανοµή). ιεργασία Σελίδα Ηλικία Υποθέστε ότι στη δεδοµένη Α Α Α Β Β Β 7 2 5 2 6 7 3 9 2 στιγµή η διεργασία Α χρειάζεται τη σελίδα Α6. Ποια σελίδα θα πρέπει να αντικαταστήσει; Τοπική πολιτική Α2 Γενική πολιτική Β2 2

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

Μέγεθος Σελίδας (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. Υπάρχει περίπτωση που σε προχωρηµένα συστήµατα οι χρήστες να µπορούν να ελέγχουν την εικονική µνήµη για σκοπούς προγραµµατισµού διεργασιών µε κοινή µνήµη. 22

Αντικατάσταση Σελίδων (Cleaning Policy) Ηδιαδικασία επιλογής της σελίδας που θα πρέπει να ανταλλαγεί καθώς και η µόνιµη αποθήκευση της στο δίσκο σε περίπτωση που έχει µεταβληθεί (για µελλοντική αναφορά) είναι χρονοβόρα. Μια διεργασία paging daemon τρέχει περιοδικά και επιλέγει ένα σύνολο από σελίδες οι οποίες όταν χρειαστεί θα µπορούσαν να αντικατασταθούν (ανάλογα µε τον αλγόριθµο που έχουµε επιλέξει) και σε περίπτωση που έχουν µεταβληθεί, τις αποθηκεύει επίσης στο δίσκο. Εάν µια από τις σελίδες που έχουν επιλεχθεί αναφερθεί στο άµεσο µέλλον, τότε αυτή απλά αφαιρείται από το σύνολο των υποψήφιων για ανταλλαγή. Μόλις συµβεί ένα σφάλµα µνήµης τότε επιλέγεται αµέσως µια σελίδα από το σύνολο υποψηφίων για ανταλλαγή Τµηµατοποίηση (Segmentation) Πολλές φορές είναι πιο αποδοτικό να σπάσουµε το χώρο διευθύνσεων (address space) ενός προγράµµατος σε διάφορα ανεξάρτητα κοµµάτια Πιο εύκολη η πρόσβαση σε κοµµάτια της µνήµης από πολλαπλές διεργασίες (memory sharing) Καλύτερη προστασία Για παράδειγµα υποθέστε ένα µεταγλωττιστή (compiler) ο οποίος χωρίζει τη εικονική µνήµη σε διάφορα µέρη Πρόγραµµα, πίνακας συµβόλων, πίνακας µε τις σταθερές, το stack κλπ. Πόσος χώρος θα πρέπει να κατανεµηθεί για το κάθε µέρος; Τι θα συµβεί εάν ο µεταγλωττιστής τελικά χρειάζεται περισσότερο χώρο από αυτόν που του έχει κατανεµηθεί; Η λύση είναι να τµηµατοποιηθεί η εικονική µνήµη σε ανεξάρτητους χώρους έτσι που να µπορούν να µεγαλώσουν όσο χρειάζονται 23

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