ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α
Βαςικι Ορολογία Ιδεατή Μνήμη: χιμα ανάκεςθσ αποκθκευτικοφ χϊρου, ςτο οποίο θ δευτερεφουςα μνιμθ μπορεί να διευκυνςιοδοτθκεί ςαν να ιταν μζροσ τθσ κφριασ μνιμθσ Σο μζγεκοσ του ιδεατοφ αποκθκευτικοφ χϊρου περιορίηεται από το ςχιμα διευκυνςιοδότθςθσ του υπολογιςτικοφ ςυςτιματοσ και από το μζγεκοσ τθσ διακζςιμθσ δευτερεφουςασ μνιμθσ και όχι από το πραγματικό πλικοσ των κφριων κζςεων αποκικευςθσ Ιδεατή Διεφθυνςη: θ διεφκυνςθ που ανατίκεται ςε μια κζςθ ςτθν ιδεατι μνιμθ, ζτςι ϊςτε να επιτρζπεται ςτθ κζςθ αυτι να είναι προςβάςιμθ ςαν να ιταν μζροσ τθσ κφριασ μνιμθσ
Τλικό και Δομζσ Ελζγχου (1/8) Βαςικά χαρακτθριςτικά ςελιδοποίθςθσ και τμθματοποίθςθσ: Όλεσ οι αναφορζσ ςτθ μνιμθ μζςα ςε μία διεργαςία είναι λογικζσ διευκφνςεισ, οι οποίεσ μεταφράηονται δυναμικά ςε φυςικζσ διευκφνςεισ, κατά το χρόνο εκτζλεςθσ. Αυτό ςθμαίνει ότι μία διεργαςία μπορεί να εκτοπιςτεί και να επανζλκει ςτθν κφρια μνιμθ, ζτςι ϊςτε να καταλαμβάνει διαφορετικζσ περιοχζσ τθσ κφριασ μνιμθσ ςε διαφορετικζσ χρονικζσ ςτιγμζσ κατά τθ διάρκεια τθσ εκτζλεςθσ Μία διεργαςία μπορεί να διαςπαςτεί ςε ζνα πλικοσ κομματιϊν (ςελίδεσ ι τμιματα) και αυτά τα κομμάτια δε χρειάηεται να τοποκετοφνται ςε γειτονικζσ κζςεισ τθσ κφριασ μνιμθσ κατά τθ διάρκεια τθσ εκτζλεςθσ. Κάτι τζτοιο επιτρζπεται λόγω του ςυνδυαςμοφ τθσ δυναμικισ μετάφραςθσ διευκφνςεων κατά το χρόνο εκτζλεςθσ και τθσ χριςθσ ενόσ πίνακα ςελίδων ι τμθμάτων
Τλικό και Δομζσ Ελζγχου (2/8) Εάν ιςχφουν τα προθγοφμενα δφο χαρακτθριςτικά, τότε δεν είναι απαραίτθτο όλεσ οι ςελίδεσ ι όλα τα τμιματα μιασ διεργαςίασ να βρίςκονται ςτθν κφρια μνιμθ κατά τθ διάρκεια τθσ εκτζλεςθσ Εάν το κομμάτι (τμιμα ι ςελίδα) το οποίο περιζχει τθν επόμενθ εντολι που πρόκειται να ανακλθκεί και το κομμάτι το οποίο περιζχει τθν επόμενθ κζςθ των υπό προςπζλαςθ δεδομζνων βρίςκονται ςτθν κφρια μνιμθ, τότε θ εκτζλεςθ τθσ διεργαςίασ μπορεί να προχωριςει, τουλάχιςτον για ζνα χρονικό διάςτθμα
Τλικό και Δομζσ Ελζγχου (3/8) Ασ εξετάςουμε πωσ αυτό μπορεί να επιτευχκεί: Ασ υποκζςουμε ότι είναι ϊρα να φζρουμε μία νζα διεργαςία ςτθ μνιμθ Σο Λ ξεκινά μεταφζροντασ μόνο ζνα ι μερικά κομμάτια (ςελίδεσ ι τμιματα), που περιλαμβάνουν το αρχικό κομμάτι του προγράμματοσ και το αρχικό κομμάτι δεδομζνων, ςτα οποία αναφζρονται αυτζσ οι εντολζσ Σο τμιμα τθσ διεργαςίασ το οποίο βρίςκεται ςτθν πραγματικότθτα ςτθν κφρια μνιμθ οποιαδιποτε χρονικι ςτιγμι ορίηεται ωσ το παραμζνον ςφνολο τθσ διεργαςίασ Κακϊσ θ διεργαςία εκτελείται, όλα εξελίςςονται ομαλά εφόςον όλεσ οι αναφορζσ ςτθ μνιμθ βρίςκονται ςε κζςεισ, που ανικουν ςτο παραμζνον ςφνολο Ο επεξεργαςτισ μπορεί πάντοτε να διαπιςτϊςει αν ιςχφει αυτό, χρθςιμοποιϊντασ τον πίνακα τμθμάτων ι ςελίδων
Τλικό και Δομζσ Ελζγχου (4/8) Αν ο επεξεργαςτισ ςυναντιςει μια λογικι διεφκυνςθ, θ οποία δε βρίςκεται ςτθν κφρια μνιμθ, παράγει μια διακοπι που υποδθλϊνει ζνα ςφάλμα προςπζλαςθσ τθσ μνιμθσ Σο Λ τοποκετεί τθ διακοπτόμενθ διεργαςία ςε μπλοκαριςμζνθ κατάςταςθ Για να ςυνεχιςτεί θ εκτζλεςθ αυτισ τθσ διεργαςίασ αργότερα, το Λ κα χρειαςτεί να φζρει ςτθν κφρια μνιμθ το κομμάτι τθσ διεργαςίασ το οποίο περιζχει τθ λογικι διεφκυνςθ, θ οποία προκάλεςε το ςφάλμα προςπζλαςθσ
Τλικό και Δομζσ Ελζγχου (5/8) Για το ςκοπό αυτό, το Λ εκδίδει μια αίτθςθ ανάγνωςθσ Ε/Ε δίςκου Αφοφ ζχει εκδοκεί θ αίτθςθ Ε/Ε, το Λ μπορεί να διεκπεραιϊςει μια άλλθ διεργαςία, ϊςτε να εκτελεςτεί ενόςω θ Ε/Ε δίςκου πραγματοποιείται Αφοφ μεταφερκεί το επικυμθτό κομμάτι ςτθν κφρια μνιμθ, εκδίδεται μια διακοπι Ε/Ε δίνοντασ τον ζλεγχο πάλι ςτο Λ, το οποίο τοποκετεί τθν αντίςτοιχθ διεργαςία ςτθν Έτοιμθ κατάςταςθ
Τλικό και Δομζσ Ελζγχου (6/8) Επιπτϊςεισ τθσ νζασ ςτρατθγικισ: Περιςςότερεσ διεργαςίεσ μποροφν να διατηροφνται ςτην κφρια μνήμη Δεδομζνου ότι πρόκειται να φορτϊςουμε μόνο κάποια από τα κομμάτια οποιαςδιποτε ςυγκεκριμζνθσ διεργαςίασ, περιςςεφει χϊροσ για περιςςότερεσ διεργαςίεσ Αυτό οδθγεί ςε αποδοτικότερο βακμό χριςθσ του επεξεργαςτι, κακϊσ είναι πιο πικανό να βρίςκεται τουλάχιςτον μία από τισ πολυπλθκζςτερεσ διεργαςίεσ ςε Έτοιμθ κατάςταςθ, ςε οποιαδιποτε ςυγκεκριμζνθ χρονικι ςτιγμι
Τλικό και Δομζσ Ελζγχου (7/8) Μια διεργαςία μπορεί να είναι μεγαλφτερη από ολόκληρη την κφρια μνήμη Εξαλείφεται ζνασ από τουσ πιο κεμελιϊδεισ περιοριςμοφσ του προγραμματιςμοφ Χωρίσ το ςχιμα που εξετάηουμε, ο προγραμματιςτισ πρζπει να είναι απόλυτα ενιμεροσ για το πόςθ κφρια μνιμθ είναι διακζςιμθ Αν το πρόγραμμα που γράφεται είναι πολφ μεγάλο, ο προγραμματιςτισ πρζπει να επινοιςει τρόπουσ για να δομιςει το πρόγραμμα ςε κομμάτια, τα οποία κα μποροφν να φορτωκοφν ξεχωριςτά, με τθ χριςθ κάποιου είδουσ ςτρατθγικισ επικάλυψθσ Με τθν ιδεατι μνιμθ που βαςίηεται ςτθν τμθματοποίθςθ ι ςτθν ςελιδοποίθςθ, αυτι τθν εργαςία τθν αναλαμβάνει το Λ και το υλικό Σο Λ αυτόματα φορτϊνει κομμάτια μιασ διεργαςίασ ςτθν κφρια μνιμθ, ςφμφωνα με τισ απαιτιςεισ
Τλικό και Δομζσ Ελζγχου (8/8) Επειδι μια διεργαςία εκτελείται μόνο ςτθν κφρια μνιμθ, αυτι θ μνιμθ αναφζρεται ωσ πραγματική μνήμη Όμωσ, ςτο ςχιμα αυτό, ζνασ προγραμματιςτισ ι ζνασ χριςτθσ αντιλαμβάνεται μια ενδεχομζνωσ μεγαλφτερθ μνιμθ, θ οποία βρίςκεται ςτο δίςκο και αναφζρεται ωσ ιδεατή μνήμη Επομζνωσ, θ ιδεατι μνιμθ επιτρζπει πολφ αποτελεςματικό πολυπρογραμματιςμό και απελευκερϊνει το χριςτθ από τουσ άςκοπουσ περιοριςμοφσ τθσ κφριασ μνιμθσ
Απλι ελιδοποίθςθ vs ελιδοποίθςθ Ιδεατισ Μνιμθσ (1/2) Απλή Σελιδοποίησης Η κφρια μνιμθ χωρίηεται ςε μικρά κομμάτια ςτακεροφ μεγζκουσ που ονομάηονται πλαίςια Σο πρόγραμμα διαςπάται ςε ςελίδεσ από το μεταγλωττιςτι ι το διαχειριςτι μνιμθσ του ςυςτιματοσ Εςωτερικόσ κατακερματιςμόσ μζςα ςτα πλαίςια Δεν υπάρχει εξωτερικόσ κατακερματιςμόσ Σο Λ πρζπει να διατθρεί ζναν πίνακα ςελίδων για κάκε διεργαςία ο οποίοσ δείχνει ποιο πλαίςιο καταλαμβάνει θ κάκε ςελίδα Σελιδοποίηση Ιδεατής Μνήμης Η κφρια μνιμθ χωρίηεται ςε μικρά κομμάτια ςτακεροφ μεγζκουσ που ονομάηονται πλαίςια Σο πρόγραμμα διαςπάται ςε ςελίδεσ από το μεταγλωττιςτι ι το διαχειριςτι μνιμθσ του ςυςτιματοσ Εςωτερικόσ κατακερματιςμόσ μζςα ςτα πλαίςια Δεν υπάρχει εξωτερικόσ κατακερματιςμόσ Σο Λ πρζπει να διατθρεί ζναν πίνακα ςελίδων για κάκε διεργαςία ο οποίοσ δείχνει ποιο πλαίςιο καταλαμβάνει θ κάκε ςελίδα
Απλι ελιδοποίθςθ vs ελιδοποίθςθ Ιδεατισ Μνιμθσ (2/2) Απλή Σελιδοποίηση Σο Λ πρζπει να διατθρεί μια λίςτα ελεφκερων πλαιςίων Ο επεξεργαςτισ χρθςιμοποιεί τον αρικμό ςελίδασ και τθν απόκλιςθ για να υπολογίςει τθν απόλυτθ διεφκυνςθ Όλεσ οι ςελίδεσ μιασ διεργαςίασ πρζπει να βρίςκονται ςτθν κφρια μνιμθ για να μπορζςει αυτι να εκτελεςτεί, εκτόσ και αν χρθςιμοποιείται επικάλυψθ Σελιδοποίηση Ιδεατής Μνήμης Σο Λ πρζπει να διατθρεί μια λίςτα ελεφκερων πλαιςίων Ο επεξεργαςτισ χρθςιμοποιεί τον αρικμό ςελίδασ και τθν απόκλιςθ για να υπολογίςει τθν απόλυτθ διεφκυνςθ Όλεσ οι ςελίδεσ μιασ διεργαςίασ δε χρειάηεται να βρίςκονται ςε πλαίςια τθσ κφριασ μνιμθσ για να μπορζςει αυτι να εκτελεςτεί. Οι ςελίδεσ μποροφν να ειςζρχονται όποτε είναι αναγκαίο Η μεταφορά μιασ ςελίδασ ςτθν κφρια μνιμθ μπορεί να απαιτεί τθν εγγραφι μιασ άλλθσ ςτο δίςκο
Απλι Σμθματοποίθςθ vs Σμθματοποίθςθ Ιδεατισ Μνιμθσ (1/2) Απλή Τμηματοποίηση Η κφρια μνιμθ δε διαχωρίηεται Σα τμιματα του προγράμματοσ ορίηονται από τον προγραμματιςτι ςτο μεταγλωττιςτι (δθλ. θ απόφαςθ λαμβάνεται από τον προγραμματιςτι) Δεν υπάρχει εςωτερικόσ κατακερματιςμόσ Εξωτερικόσ κατακερματιςμόσ Σο Λ πρζπει να διατθρεί ζναν πίνακα τμθμάτων για κάκε διεργαςία, ο οποίοσ δείχνει τθ διεφκυνςθ φόρτωςθσ και το μικοσ κάκε τμιματοσ Σο Λ πρζπει να διατθρεί μια λίςτα των ελεφκερων κενϊν χϊρων ςτθν κφρια μνιμθ Τμηματοποίηση Ιδεατής Μνήμης Η κφρια μνιμθ δε διαχωρίηεται Σα τμιματα του προγράμματοσ ορίηονται από τον προγραμματιςτι ςτο μεταγλωττιςτι (δθλ. θ απόφαςθ λαμβάνεται από τον προγραμματιςτι) Δεν υπάρχει εςωτερικόσ κατακερματιςμόσ Εξωτερικόσ κατακερματιςμόσ Σο Λ πρζπει να διατθρεί ζναν πίνακα τμθμάτων για κάκε διεργαςία, ο οποίοσ δείχνει τθ διεφκυνςθ φόρτωςθσ και το μικοσ κάκε τμιματοσ Σο Λ πρζπει να διατθρεί μια λίςτα των ελεφκερων κενϊν χϊρων ςτθν κφρια μνιμθ
Απλι Σμθματοποίθςθ vs Σμθματοποίθςθ Ιδεατισ Μνιμθσ (2/2) Απλή Τμηματοποίηση Ο επεξεργαςτισ χρθςιμοποιεί τον αρικμό τμιματοσ και τθν απόκλιςθ για να υπολογίςει τθν απόλυτθ διεφκυνςθ Όλα τα τμιματα μιασ διεργαςίασ πρζπει να βρίςκονται ςτθν κφρια μνιμθ για να μπορζςει αυτι να εκτελεςτεί, εκτόσ και αν χρθςιμοποιείται επικάλυψθ Τμηματοποίηση Ιδεατής Μνήμης Ο επεξεργαςτισ χρθςιμοποιεί τον αρικμό τμιματοσ και τθν απόκλιςθ για να υπολογίςει τθν απόλυτθ διεφκυνςθ Όλα τα τμιματα μιασ διεργαςίασ δε χρειάηεται να βρίςκονται ςε πλαίςια κφριασ μνιμθσ για να μπορζςει αυτι να εκτελεςτεί. Σα τμιματα μποροφν να ειςζρχονται όποτε αυτό είναι αναγκαίο Η μεταφορά ενόσ τμιματοσ ςτθν κφρια μνιμθ μπορεί να απαιτεί τθν εγγραφι ενόσ ι περιςςότερων τμθμάτων ςτο δίςκο
Σοπικότθτα και Ιδεατι Μνιμθ (1/7) Σα πλεονεκτιματα τθσ ιδεατισ μνιμθσ είναι ελκυςτικά αλλά το ςχιμα αυτό είναι πρακτικό; Η εμπειρία από ζνα πλικοσ λειτουργικών ςυςτθμάτων ζχει αποδείξει, χωρίσ αμφιβολία, ότι θ ιδεατι μνιμθ είναι πραγματικά λειτουργικι Έχει γίνει βαςικό ςτοιχείο των πιο ςφγχρονων λειτουργικών ςυςτθμάτων
Σοπικότθτα και Ιδεατι Μνιμθ (2/7) Για να κατανοθκεί ποιο είναι το κφριο ηιτθμα, ασ εξετάςουμε τθν αποςτολι του Λ με βάςθ τθν ιδεατι μνιμθ: Ασ εξετάςουμε μια μεγάλθ διεργαςία, που αποτελείται από ζνα μεγάλο πρόγραμμα, κακϊσ και από πλικοσ πινάκων δεδομζνων Μζςα ςε οποιοδιποτε ςφντομο χρονικό διάςτθμα, θ εκτζλεςθ μπορεί να περιοριςτεί ςε ζνα μικρό τμιμα του προγράμματοσ (π.χ. μια υπορουτίνα) και θ πρόςβαςθ ίςωσ ςε ζνα ι δφο πίνακεσ δεδομζνων Θα ιταν δαπανθρό να φορτϊνονται δεκάδεσ κομμάτια για αυτι τθ διεργαςία, τθ ςτιγμι που κα χρθςιμοποιθκοφν μόνο μερικά κομμάτια πριν το πρόγραμμα αναςταλεί και εκτοπιςτεί
Σοπικότθτα και Ιδεατι Μνιμθ (3/7) Μποροφμε να κάνουμε καλφτερθ χριςθ τθσ μνιμθσ, φορτϊνοντασ μόνο μερικά κομμάτια ςτθν κφρια μνιμθ Αν το πρόγραμμα διαςκελίηεται ςε μία εντολι ι αναφζρεται ςε ζνα ςτοιχείο δεδομζνων που δε βρίςκεται ςτθν κφρια μνιμθ, τότε προκαλείται ζνα ςφάλμα Αυτό ενθμερϊνει το Λ να μεταφζρει το επικυμθτό κομμάτι ςτθν κφρια μνιμθ
Σοπικότθτα και Ιδεατι Μνιμθ (4/7) Με τον τρόπο αυτό: Μποροφν να διατθροφνται ςτθ μνιμθ περιςςότερεσ διεργαςίεσ Εξοικονομείται χρόνοσ, επειδι τα κομμάτια που δεν χρθςιμοποιοφνται εναλλάςςονται μζςα και ζξω από τθ μνιμθ όμωσ Το ΛΣ πρζπει να διαχειρίηεται αυτό το ςχιμα με ευφυι τρόπο
Σοπικότθτα και Ιδεατι Μνιμθ (5/7) Πρόβλθμα: ε ςτακερι κατάςταςθ, πρακτικά όλθ θ κφρια μνιμθ κα είναι κατειλθμμζνθ με κομμάτια διεργαςιϊν, ζτςι ϊςτε ο επεξεργαςτισ και το Λ να ζχουν άμεςθ πρόςβαςθ ςε όςεσ το δυνατόν περιςςότερεσ διεργαςίεσ Επομζνωσ, όταν το Λ φζρει ζνα κομμάτι ςτθν κφρια μνιμθ, πρζπει να απομακρφνει κάποιο άλλο Αν απομακρφνει ζνα κομμάτι ακριβϊσ πριν χρθςιμοποιθκεί, τότε κα πρζπει να το ξαναεπαναφζρει ςτθν κφρια μνιμθ ςχεδόν αμζςωσ Η υπερβολι αυτϊν των εναλλαγϊν οδθγεί ςε μια ςυνκικθ γνωςτι ωσ αλώνιςμα ιδεατήσ μνήμησ Σο ςφςτθμα δαπανά τον περιςςότερο χρόνο εναλλάςςοντασ κομμάτια, αντί να εκτελεί εντολζσ
Σοπικότθτα και Ιδεατι Μνιμθ (6/7) Λφςθ: τθν ουςία, το Λ προςπακεί να μαντζψει, με βάςθ το πρόςφατο ιςτορικό, ποια κομμάτια είναι λιγότερο πικανό να χρθςιμοποιθκοφν ςτο άμεςο μζλλον Η ςυλλογιςτικι αυτι βαςίηεται ςτθν αρχή τησ τοπικότητασ Η αρχι τθσ τοπικότθτασ δθλώνει ότι το πρόγραμμα και οι αναφορζσ δεδομζνων μζςα ςε μία διεργαςία τείνουν να ομαδοποιοφνται Ωσ εκ τοφτου, είναι ζγκυρθ θ υπόκεςθ ότι μόνο μερικά κομμάτια τθσ διεργαςίασ κα είναι χριςιμα κατά τθ διάρκεια μιασ ςφντομθσ χρονικισ περιόδου
Σοπικότθτα και Ιδεατι Μνιμθ (7/7) Για να είναι θ ιδεατι μνιμθ πρακτικι και αποτελεςματικι, χρειάηονται 2 ςυςτατικά: Πρζπει να υπάρχει υποςτιριξθ υλικοφ ϊςτε να μπορεί να χρθςιμοποιθκεί θ ςελιδοποίθςθ ι/και θ τμθματοποίθςθ Σο Λ πρζπει να περιλαμβάνει λογιςμικό για τθ διαχείριςθ τθσ μετακίνθςθσ των ςελίδων ι/και των τμθμάτων μεταξφ τθσ δευτερεφουςασ και τθσ κφριασ μνιμθσ
Βιβλιογραφία Stallings, W. (2017). Λειτουργικά Συςτιματα: Αρχζσ Σχεδίαςθσ. Εκδόςεισ Σηιόλα: Θεςςαλονίκθ.