Εικονική Μνήμη (Virtual Memory)
Για τη δημιουργία των διαφανειών έχει χρησιμοποιηθεί υλικό από τις διαφάνειες παραδόσεων που βασίζονται στο βιβλίο, Silberschatz, Galvin and Gagne, Operating Systems Concepts, 6 th & 7 th Edition. Οι διαφάνειες αυτές βρίσκονται στο δικτυακό τόπο: http://www.cs.purdue.edu/homes/yau/cs503/
Εισαγωγή Θεωρητικό υπόβαθρο Σελιδοποίηση κατ απαίτηση (demand paging) Δημιουργία διεργασίας Αντικατάσταση σελίδας (page replacement) Ανάθεση πλαισίων Λυγισμός (thrashing) Παραδείγματα λειτουργικών συστημάτων Σελίδα 3
Θεωρητικό Υπόβαθρο Χρησιμοποιείται λογική διευθυνσιοδότηση, οπότε ένα πρόγραμμα δεν χρειάζεται να αποθηκευτεί σε συνεχόμενες περιοχές μνήμης Υποστηρίζονται χώροι διευθύνσεων που ξεπερνούν την φυσική μνήμη που είναι διαθέσιμη, οπότε το μέγεθος ενός προγράμματος μπορεί να ξεπερνά -κατά πολύ- την διαθέσιμη φυσική μνήμη Σελίδα 4
Εικονική Μνήμη Μεγαλύτερη από τη Φυσική Μνήμη Σελίδα 5
Θεωρητικό Υπόβαθρο (συνέχεια) Η εκτέλεση του προγράμματος είναι εφικτή χωρίς να έχει φορτωθεί ολόκληρο στην φυσική μνήμη του συστήματος Επιτρέπει τον διαμοιρασμό λογικών χώρων διευθύνσεων ανάμεσα σε διεργασίες και την αποτελεσματικότερη δημιουργία διεργασιών Η ιδεατή μνήμη μπορεί να υλοποιηθεί με: Σελιδοποίηση κατ απαίτηση (demand paging) Κατάτμηση κατ απαίτηση (demand segmentation) Σελίδα 6
Εικονικός Χώρος Διευθύνσεων Αντίληψη χρήστη για τον τρόπο αποθήκευσης μιας διεργασίας στη μνήμη (εικονικός χώρος): Συνεχόμενες θέσεις μνήμης (0 max) Ανεξάρτητος από τη φυσική μνήμη Χώρος για δυναμική ανάθεση μνήμης (heap) Στοίβα (stack) για φύλαξη τοπικών μεταβλητών και παραμέτρων Σελίδα 7
Διαμοιραζόμενη Βιβλιοθήκη με Χρήση Εικονικής Μνήμης Σελίδα 8
Σελιδοποίηση κατ Απαίτηση Μια σελίδα μεταφέρεται από το μέσο αποθήκευσης (δίσκο) στη κύρια μνήμη του συστήματος (πλαίσιο) μόνο όταν γίνει αναφορά σε αυτή Χρειάζεται λιγότερο Ι/Ο, ταχύτερη απόκριση Καταλαμβάνεται λιγότερη μνήμη, περισσότερα προγράμματα μπορούν και τρέχουν ταυτόχρονα Κάθε φορά που γίνεται αναφορά σε σελίδα όπου η αντίστοιχη καταχώρηση δεν υπάρχει στον πίνακα, υπάρχουν δύο περιπτώσεις: Η αναφορά είναι άκυρη διακοπή (abort) Η σελίδα δε βρίσκεται στη μνήμη φόρτωμα στην μνήμη Σελίδα 9
Μεταφορά Σελίδων από/προς την Κύρια Μνήμη Σελίδα 10
Bit Εγκυρότητας Με κάθε καταχώρηση του πίνακα σελίδων συσχετίζεται ένα bit εγκυρότητας (1 στη μνήμη, 0 όχι στη μνήμη) Παράδειγμα στιγμιότυπου του πίνακα σελίδων: Πίνακας σελίδων # Πλαισίου bit εγκυρότητας 1 1 1 0 0 Κατά τη μετάφραση των διευθύνσεων, αν το bit εγκυρότητας στην καταχώρηση του πίνακα σελίδων είναι 0 σφάλμα σελίδας (page fault) Σελίδα 11
Πίνακας Σελίδων όταν κάποιες Σελίδες δε βρίσκονται στην Κύρια Μνήμη Σελίδα 12
Σφάλμα Σελίδας (Page Fault) Όταν υπάρξει αναφορά σε σελίδα, η πρώτη αναφορά θα πιαστεί (trap) από το ΛΣ δημιουργία σφάλματος σελίδας 1. To ΛΣ κοιτάζει έναν πίνακα (PCB) για να αποφασίσει: Αν η αναφορά είναι μη-έγκυρη, οπότε και διακόπτει Αν απλά και μόνο η σελίδα δεν είναι στη μνήμη 2. Επιλογή ενός άδειου πλαισίου 3. Μεταφορά της σελίδας στο πλαίσιο αυτό 4. Τροποποίηση των πινάκων έτσι ώστε να δείχνουν ότι η σελίδα είναι στη μνήμη (πίνακας σελίδων και εσωτερικός) 5. Επανεκκίνηση της εντολής που είχε προκαλέσει το σφάλμα σελίδας Σελίδα 13
Σχηματική Απεικόνιση Διαδικασίας Χειρισμού Σφάλματος Σελίδας Σελίδα 14
Εικονική Μνήμη και Δημιουργία Διεργασίας Η εικονική μνήμη δίνει τα ακόλουθα πλεονεκτήματα κατά τη δημιουργία διεργασιών: Αντιγραφή κατά την τροποποίηση (copy-on-write) Αντιστοίχηση αρχείων στη μνήμη (memory-mapped files) Σελίδα 15
Αντιγραφή κατά την Τροποποίηση Η αντιγραφή κατά την τροποποίηση (copy-on-write) επιτρέπει στην πατρική και τη θυγατρική διεργασία να μοιράζονται αρχικά τις ίδιες σελίδες Η σελίδα αντιγράφεται, μόνο όταν κάποια από τις διεργασίες την τροποποιήσει Επιτρέπει περισσότερο αποδοτική δημιουργία διεργασίας, καθώς δημιουργούνται αντίγραφα μόνο για τις σελίδες που τροποποιούνται Οι ελεύθερες σελίδες ανατίθενται από μια δεξαμενή κενών σελίδων Σελίδα 16
Αντιστοίχηση Αρχείων στη Μνήμη Τμήματα του αρχείου αντιστοιχίζονται σε σελίδες Το Ι/Ο αντιμετωπίζεται ως τυπική προσπέλαση μνήμης Το αρχείο διαβάζεται αρχικά με σελιδοποίηση κατ απαίτηση, και οι επακόλουθες αναφορές στο αρχείο αντιμετωπίζονται ως ανάγνωση και εγγραφή στη μνήμη Απλοποίηση της πρόσβασης για Ι/Ο στο αρχείο (μέσω μνήμης παρά μέσω κλήσεων συστήματος read(), write()) Επιτρέπει σε πολλές διεργασίες να διαμοιραστούν το ίδιο αρχείο μέσω του μηχανισμού διαμοιρασμού σελίδων/πλαισίων μνήμης Σελίδα 17
Σχηματική Απεικόνιση Αντιστοίχισης Αρχείων στην Μνήμη Σελίδα 18
Αντικατάσταση Σελίδας (Page Replacement) Όταν δεν υπάρχει άδειο πλαίσιο στο οποίο να φορτωθεί μια σελίδα που μεταφέρεται από τον δίσκο, επιλέγεται ένα δεσμευμένο πλαίσιο Επιθυμητός ένας αλγόριθμος ο οποίος να οδηγεί σε ελάχιστο αριθμό από σφάλματα μνήμης, και άρα σε ελάχιστο αριθμό μεταφορών σελίδων από/προς το αποθηκευτικό μέσο Σελίδα 19
Αντικατάσταση Σελίδας (συνέχεια) Χρήση του bit τροποποίησης (modify ή dirty bit) για μείωση του φόρτου μεταφοράς σελίδων (μόνο οι τροποποιημένες σελίδες ξαναγράφονται στο δίσκο σε περίπτωση αντικατάστασης σελίδας) Η αντικατάσταση σελίδας ολοκληρώνει το διαχωρισμό λογικής και φυσικής μνήμης μεγάλη λογική μνήμη μπορεί να παρέχεται με μια μικρότερη φυσική μνήμη Σελίδα 20
Διαδικασία Αντικατάστασης Σελίδας 1. Εντοπισμός της θέσης της επιθυμητής σελίδας στο δίσκο 2. Εύρεση ελεύθερου πλαισίου: Αν υπάρχει ελεύθερο πλαίσιο, χρησιμοποίησέ το Αν δεν υπάρχει ελεύθερο πλαίσιο, χρησιμοποίησε αλγόριθμο εντοπισμό του πλαισίου θύματος (victim frame) για την επιλογή του πλαισίου που θα αντικατασταθεί 3. Διάβασε τη σελίδα μέσα στο ελεύθερο πλαίσιο 4. Ενημέρωσε τον πίνακα σελίδων της διεργασίας (και πιθανά τον πίνακα πλαισίων που τηρεί το ΛΣ) 5. Επανεκκίνηση της διεργασίας Σελίδα 21
Σχηματική Αναπαράσταση Αντικατάστασης Σελίδας Σελίδα 22
Απόδοση Ένα σφάλμα σελίδας, «πιάνεται» από το ΛΣ Αποθήκευση των καταχωρητών χρήστη και της κατάστασης της διεργασίας Προσδιορισμός της διακοπής ως σφάλμα σελίδας Έλεγχος εγκυρότητας αναφοράς στη σελίδα και προσδιορισμός της θέσης της στο δίσκο Σελίδα 23
Απόδοση (συνέχεια) Ανάγνωση από το δίσκο σε ένα ελεύθερο πλαίσιο. Περιλαμβάνει: πιθανή αναμονή στην ουρά του δίσκου, αναμονή για αναζήτηση και καθυστέρηση (seek and latency) μεταφορά της σελίδας από το δίσκο Πιθανή ανάθεση της ΚΜΕ σε άλλη διεργασία Διακοπή λόγω ολοκλήρωσης Ι/Ο από το δίσκο Σελίδα 24
Απόδοση (συνέχεια) Αποθήκευση της κατάστασης της διεργασίας που εκτελείται Προσδιορισμός ότι η διακοπή είναι από το δίσκο Διόρθωση πίνακα σελίδων και άλλων πιθανά πινάκων Αναμονή για ανάθεση της ΚΜΕ ξανά στη διεργασία αυτή Αποκατάσταση κατάστασης διεργασίας και καταχωρητών χρηστών και επανεκκίνηση της εντολής που προκάλεσε το σφάλμα σελίδας Σελίδα 25
Απόδοση (συνέχεια) Πιθανότητα σφάλματος σελίδας, p: 0 p 1 Αν p = 0, δεν υπάρχουν λάθη σελίδας Αν p = 1, κάθε αναφορά στη μνήμη προκαλεί σφάλμα σελίδας Πραγματικός χρόνος πρόσβασης (effective access time EAT) EAT = (1 p) x χρόνος προσπέλασης στη μνήμη + p (φόρτος σφάλματος σελίδας + [μεταφορά σελίδας εκτός] + μεταφορά σελίδας εντός + φόρτος επανεκκίνησης) Σελίδα 26
Παράδειγμα Χρόνος πρόσβασης κύριας μνήμης = 1μs Με πιθανότητα 0.5 τα περιεχόμενα του πλαισίου που αντικαθίσταται έχουν αλλάξει, οπότε πρέπει να αντιγραφεί στο αποθηκευτικό μέσο Χρόνος μεταφοράς πλαισίου από/προς αποθηκευτικό μέσο = 10ms Μέσος χρόνος αντικατάστασης: swap time = 0.5 x 10ms + 10ms = 15 ms = 15000 μs Πραγματικός χρόνος πρόσβασης: ΕΑΤ = (1 - p) x 1μs + p x swap time = 1 - p + 15000p μs = ~ 1 + 15000p μs Σελίδα 27
Μελέτη Αλγορίθμων Αντικατάστασης Σελίδων Στόχος: Ο χαμηλότερος δυνατός ρυθμός λαθών σελίδας Προσδιορισμός συγκεκριμένης ακολουθίας αναφορών σελίδων (memory references) που ονομάζεται συμβολοσειρά αναφοράς (reference string) Αξιολόγηση του αλγορίθμου μετρώντας την επίδοση του (αριθμό λαθών σελίδας) για τη συγκεκριμένη συμβολοσειρά αναφοράς Σελίδα 28
Αναμενόμενη Συμπεριφορά Συστήματος Σελίδα 29
Ο Βέλτιστος Αλγόριθμος (Optimal Algorithm) Ποιά είναι η ιδιότητα του ιδανικού ή βέλτιστου αλγορίθμου, που ελαχιστοποιεί τον αριθμό σφαλμάτων; O αλγόριθμος να αντικαθιστά κάθε φορά εκείνη την σελίδα που δεν πρόκειται να χρησιμοποιηθεί από το πρόγραμμα για το μεγαλύτερο χρονικό διάστημα κατά την προσεχή εκτέλεση Πως, όμως, μπορούμε να υλοποιήσουμε αυτή την ιδιότητα; Xρησιμοποιείται ουσιαστικά και ως σημείο αναφοράς για το πόσο καλά λειτουργούν οι υπόλοιποι (πραγματικοί) αλγόριθμοι Σελίδα 30
Βέλτιστη Αντικατάσταση Σελίδων Σελίδα 31
Αλγόριθμος First-In-First-Out (FIFO) Η επιλογή του θύματος προς αντικατάσταση γίνεται με βάση την ηλικία της σελίδας Ως θύμα επιλέγεται κάθε φορά που η πιο παλιά σελίδα, δηλαδή αυτή που έχει παραμείνει στην μνήμη το μεγαλύτερο χρονικό διάστημα Δεν χρησιμοποιείται πληροφορία για την συχνότητα χρήσης των σελίδων, ούτε για το πόσο πρόσφατα έχουν χρησιμοποιηθεί Η αντικατάσταση FIFO παρουσιάζει το παράδοξο του Belady Σελίδα 32
Αλγόριθμος FIFO - Παράδειγμα Σελίδα 33
Το Παράδοξο του Belady Συμβολοσειρά αναφοράς: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 πλαίσια: 1 2 1 2 4 1 5 3 9 page faults 3 3 2 4 4 πλαίσια: 1 2 1 2 5 1 4 5 10 page faults 3 3 2 4 4 3 Σελίδα 34
Το Παράδοξο του Belady Σελίδα 35
Αλγόριθμος Least Recently Used (LRU) Επιλέγεται η σελίδα που χρησιμοποιήθηκε λιγότερο πρόσφατα (δεν είναι απαραίτητα αυτή που χρησιμοποιήθηκε συνολικά λιγότερο!) Χρησιμοποιείται ένα ρολόι Κάθε καταχώρηση στον πίνακα σελίδων έχει μια χρονοσφραγίδα (timestamp) Κάθε φορά που γίνεται μια αναφορά σελίδας τα περιεχόμενα του ρολογιού αντιγράφονται στο αντίστοιχο πεδίο του πίνακα σελίδων Επιλογή της σελίδας με τη μικρότερη χρονοσφραγίδα Σελίδα 36
Αντικατάσταση Σελίδων με τον LRU Σελίδα 37
Υλοποίηση LRU με Στοίβα Τήρηση στοίβας με αριθμούς σελίδων Η στοίβα υλοποιείται με διπλά συνδεδεμένη λίστα μεταξύ των στοιχείων του πίνακα σελίδων Όταν γίνεται αναφορά σε μια σελίδα, αυτή μετακινείται στην κορυφή της στοίβας (γίνεται αλλαγή δεικτών) Στη χειρότερη περίπτωση απαιτείται αλλαγή 6 δεικτών Πολύ πιο γρήγορο από τη σύγκριση τιμών των χρονοσφραγίδων των καταχωρήσεων του πίνακα Σελίδα 38
Απεικόνιση Κατάστασης Στοίβας Σελίδα 39
Αλγόριθμος LRU (συνέχεια) Τόσο ο βέλτιστος αλγόριθμος όσο και ο LRU (όπως και κάθε αλγόριθμος στοίβας*) δεν πάσχουν από το παράδοξο του Belady (*) Αλγόριθμος στοίβας θεωρείται ένας αλγόριθμος όταν μπορεί να αποδειχθεί ότι το σύνολο των σελίδων που βρίσκονται στη μνήμη για n πλαίσια, είναι υποσύνολο των σελίδων που θα βρίσκονταν στη μνήμη για n+1 πλαίσια Η όποια υλοποίηση του LRU, απαιτεί ειδικό υλικό, αφού η ενημέρωση του πίνακα σελίδων ή της στοίβας πρέπει να γίνεται σε κάθε αναφορά σελίδας (ο χειρισμός της κατάστασης αυτής από λογισμικό θα επιβάρυνε πολύ το χρόνο εκτέλεσης των διεργασιών) Σελίδα 40
Γενικές Πολικές εναντίον Τοπικών Πολιτικών Αντικατάστασης Γενική αντικατάσταση (global replacement): Μια διεργασία επιλέγει ένα πλαίσιο για αντικατάσταση από τη λίστα όλων των πλαισίων Μια διεργασία μπορεί να πάρει ένα πλαίσιο από μια άλλη διεργασία Τοπική αντικατάσταση (local replacement): Κάθε διεργασία επιλέγει από το σύνολο των σελίδων που έχουν ανατεθεί σε αυτή Η εκτέλεση μιας διεργασίας δεν επηρεάζει την κατάσταση των σελίδων/πλαισίων των υπολοίπων Σελίδα 41
Πτώση της Απόδοσης Thrashing Αν μια διεργασία δεν έχει «αρκετές» σελίδες, ο ρυθμός λαθών σελίδας είναι πολύ υψηλός. Αυτό οδηγεί σε: χαμηλή χρησιμοποίηση της ΚΜΕ το ΛΣ θεωρεί ότι πρέπει να αυξήσει το βαθμό του πολυπρογραμματισμού μια επιπλέον διεργασία εισάγεται στο σύστημα Thrashing: Μια διεργασία χάνει τον χρόνο της μετακινώντας σελίδες από/προς το μέσο αποθήκευσης Σελίδα 42
Συνηθισμένη Καμπύλη Thrashing Σελίδα 43
Καταπολέμηση Thrashing Στο σημείο που ξεκινάει η εμφάνιση του φαινομένου του thrashing, θα πρέπει να μειωθεί ο βαθμός πολυπρογραμματισμού Το φαινόμενο του thrashing μπορεί να περιοριστεί με χρήση τοπικών πολιτικών τοποθέτησης Για να αποτραπεί το thrashing πρέπει η κάθε διεργασία να κατέχει όσα πλαίσια χρειάζεται Πως, όμως, μπορούμε να γνωρίζουμε πόσα πλαίσια χρειάζεται μια διεργασία; Σελίδα 44
Καταγραφή Συχνότητας Σφαλμάτων Σελίδας Διεργασιών Το φαινόμενο του thrashing μπορεί να καταπολεμηθεί με την παρακολούθηση του ρυθμού σφαλμάτων σελίδας των διεργασιών Όταν είναι μεγάλος, γνωρίζουμε ότι η διεργασία χρειάζεται και κερδίζει πλαίσια, ενώ όταν είναι μικρός πιθανόν να έχει παραπάνω και να τα χάνει Μπορούμε να δημιουργήσουμε άνω και κάτω όρια στον επιθυμητό ρυθμό σφαλμάτων σελίδας Σελίδα 45
Καμπύλη Συχνότητας Σφαλμάτων Σελίδας Διεργασίας Σελίδα 46
Τοπικότητα Διεργασιών Γιατί δουλεύει το μοντέλο της σελιδοποίησης; Μοντέλο τοπικότητας (locality model) Κάθε διεργασία αναφέρεται για μεγάλα χρονικά διαστήματα σε ένα σχετικά περιορισμένο αριθμό σελίδων (τοπικότητα) Οι διεργασίες μετακινούνται μεταξύ τοπικοτήτων Οι τοπικότητες μπορεί να επικαλύπτονται Γιατί συμβαίνει thrashing; Σ μεγέθους τοπικότητας > συνολικό μέγεθος μνήμης Σελίδα 47
Δείγμα Αναφορών Μνήμης Σελίδα 48
Μοντέλο Συνόλου Εργασίας (Working- Set Model) (παράθυρο συνόλου εργασίας) = μια συγκεκριμένη ακολουθία αναφορών σελίδων, π.χ. ανά 10,000 εντολές WSS i (σύνολο εργασίας για τη διεργασία P i ) = ο συνολικός αριθμός σελίδων που αναφέρθηκαν στο πιο πρόσφατο Το σύνολο εργασίας μεταβάλλεται με το χρόνο Αν το είναι πολύ μικρό πιθανώς να μην συμπεριλαμβάνει μια ολόκληρη τοπικότητα Αν το είναι πολύ μεγάλο πιθανώς να συμπεριλαμβάνει πολλές διαφορετικές τοπικότητες Αν το = περικλείει ολόκληρο το πρόγραμμα Σελίδα 49
Μοντέλο Συνόλου Εργασίας (συνέχεια) D = Σ WSS i συνολική απαίτηση σε πλαίσια Αν D > m (συνολικός αριθμός διαθέσιμων πλαισίων) θα συμβεί thrashing γιατί ορισμένες διεργασίες δε θα έχουν αρκετά πλαίσια Αν D > m, τότε προσωρινό σταμάτημα κάποιας διεργασίας Σελίδα 50
Μοντέλο Συνόλου Εργασίας (συνέχεια) Η αρχή του μοντέλου είναι απλή: Το ΛΣ επιβλέπει το σύνολο εργασίας για κάθε διεργασία και αναθέτει σε αυτή τόσα πλαίσια όσα το μέγεθός του Εφόσον υπάρχουν αρκετά πλαίσια ξεκινάει άλλη διεργασία Η πολιτική του συνόλου εργασίας αποτρέπει το thrashing και κρατάει το βαθμό πολυπρογραμματισμού όσο το δυνατόν μεγαλύτερο (βελτιστοποιεί τη χρήση της ΚΜΕ) Σελίδα 51
Μοντέλο Συνόλου Εργασίας (συνέχεια) Σελίδα 52
Καταγραφή του Συνόλου Εργασίας Προσέγγιση με έναν μετρητή διαστημάτων + bit αναφοράς Παράδειγμα: = 10,000 Ο μετρητής διακόπτει μετά από 5000 μονάδες χρόνου Τήρηση στη μνήμη δύο bits για κάθε σελίδα Όταν διακόψει ο μετρητής, αντιγράφει τις τιμές των bits αναφοράς σελίδας και τα θέτει στην τιμή 0 Αν κάποιο από τα bits της μνήμης = 1 η σελίδα ανήκει στο σύνολο εργασίας Είναι απολύτως ακριβής αυτή η διαδικασία; Βελτίωση: 10 bits και διακοπή κάθε 1000 μονάδες χρόνου Σελίδα 53
Ανάθεση Μνήμης Πυρήνα Πρέπει να αντιμετωπίζεται διαφορετικά από τη μνήμη χρήστη Συνήθως ανατίθεται από μια «δεξαμενή» ελεύθερης μνήμης Ο πυρήνας ζητάει μνήμη για δομές με μεταβαλλόμενα μεγέθη Υπάρχει μνήμη πυρήνα που απαιτείται να είναι συνεχόμενη Σελίδα 54
Σύστημα των Φίλων Αναθέτει μνήμη από τμήμα συγκεκριμένου μεγέθους που αποτελείται από συνεχόμενα πλαίσια Η μνήμη ανατίθεται χρησιμοποιώντας τμήματα μεγέθους δύναμη του 2 (power-of-2 allocator) Ικανοποιεί αιτήσεις σε μονάδες με μέγεθος δύναμη του 2 Η αίτηση «στρογγυλεύεται» στην πλησιέστερη μεγαλύτερη (από την αίτηση) δύναμη του 2 Όταν απαιτείται μικρότερη ανάθεση από αυτή που είναι διαθέσιμη, το τρέχον τμήμα χωρίζεται σε δύο τμήματα με μέγεθος την αμέσως μικρότερη δύναμη του 2 Συνέχισε έως ότου είναι διαθέσιμο κομμάτι κατάλληλου μεγέθους Σελίδα 55
Ανάθεση Μνήμης με το Σύστημα των Φίλων Σελίδα 56
Άλλα Ζητήματα για Μελέτη Δυνατότητες TLB: Η ποσότητα της μνήμης που είναι προσπελάσιμη μέσω TLB. Στην ιδανική περίπτωση το σύνολο εργασίας για κάθε διεργασία αποθηκεύεται στο TLB, αλλιώς υπάρχει υψηλός ρυθμός σφαλμάτων Πρόβλεψη για πολλαπλά μεγέθη σελίδας: Αυτό επιτρέπει σε εφαρμογές που χρειάζονται μεγαλύτερο μέγεθος σελίδας να το χρησιμοποιήσουν χωρίς αύξηση του κατακερματισμού I/O Interlock: Οι σελίδες πρέπει ορισμένες φορές να κλειδώνονται στη μνήμη για να μην πέσουν θύματα αντικατάστασης, π.χ. στην περίπτωση αντιγραφής δεδομένων από/προς συσκευές Προληπτική φόρτωση (prefetching): Μεταφέρονται σελίδες στην κύρια μνήμη χωρίς να έχει δημιουργηθεί σφάλμα για αυτές (αλλά για κάποιο λόγο θεωρείται πιθανό να γίνει αναφορά σε αυτές) Σελίδα 57
I/O Interlocking Σελίδα 58
Άλλα Ζητήματα για Μελέτη (συνέχεια) Πίνακας με κάθε γραμμή να αποθηκεύεται σε μια σελίδα: int a[][] = new int[1024][1024]; Πρόγραμμα 1: for (j = 0; j < a.length; j++) { for (i = 0; i < a.length; i++) {a[i,j] = 0;} } 1024 x 1024 σειριακές αναφορές σε διαφορετικές σελίδες Πρόγραμμα 2: for (i = 0; i < a.length; i++) { for (j = 0; j < a.length; j++) {a[i,j] = 0;} } 1024 σειριακές αναφορές σε διαφορετικές σελίδες Σελίδα 59
Αλγόριθμοι Αποθήκευσης Σελίδων (Page Buffering Algorithms) Τήρηση «δεξαμενής» ελεύθερων πλαισίων Τήρηση λίστας με τις σελίδες που έχουν τροποποιηθεί Σε τακτά χρονικά διαστήματα (όταν δεν υπάρχει δραστηριότητα σελιδοποίησης), γίνεται επιλογή κάποιων σελίδων και εγγραφή τους στο δίσκο Τήρηση λίστας ελεύθερων πλαισίων, τα οποία «θυμούνται» τις σελίδες που βρίσκονταν εκεί πριν μείνουν ελεύθερα, ώστε να αποφευχθεί περιττή μεταφορά τους από τον δίσκο Σελίδα 60
Επιλογή Μεγέθους Σελίδας Από τις πιο σημαντικές παραμέτρους ενός ΛΣ Κατακερματισμός Μήκος πίνακα σελίδων Φόρτος I/O Τοπικότητα Σελίδα 61