Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Λειτουργικά Συστήματα"— Μεταγράφημα παρουσίασης:

1 Λειτουργικά Συστήματα
Εικονική Μνήμη

2 Για τη δημιουργία των διαφανειών έχει χρησιμοποιηθεί υλικό από τις διαφάνειες παραδόσεων των Π.Λάμψας & Σ. Λάλης για το μάθημα Λειτουργικά Συστήματα Παν. Θεσ.

3 Εισαγωγή Θεωρητικό υπόβαθρο Σελιδοποίηση κατ’ απαίτηση (demand paging)
Δημιουργία διεργασίας Αντικατάσταση σελίδας (page replacement) Ανάθεση πλαισίων Λυγισμός (thrashing) Παραδείγματα λειτουργικών συστημάτων

4 Θεωρητικό Υπόβαθρο Χρησιμοποιείται λογική διευθυνσιοδότηση, οπότε ένα πρόγραμμα δεν χρειάζεται να αποθηκευτεί σε συνεχόμενες περιοχές μνήμης Υποστηρίζονται χώροι διευθύνσεων που ξεπερνούν την φυσική μνήμη που είναι διαθέσιμη, οπότε το μέγεθος ενός προγράμματος μπορεί να ξεπερνά -κατά πολύ- την διαθέσιμη φυσική μνήμη

5 Εικονική Μνήμη Μεγαλύτερη από τη Φυσική Μνήμη

6 Θεωρητικό Υπόβαθρο (συνέχεια)
Η εκτέλεση του προγράμματος είναι εφικτή χωρίς να έχει φορτωθεί ολόκληρο στην φυσική μνήμη του συστήματος Επιτρέπει τον διαμοιρασμό λογικών χώρων διευθύνσεων ανάμεσα σε διεργασίες και την αποτελεσματικότερη δημιουργία διεργασιών Η ιδεατή μνήμη μπορεί να υλοποιηθεί με: Σελιδοποίηση κατ’ απαίτηση (demand paging) Κατάτμηση κατ’ απαίτηση (demand segmentation)

7 Εικονικός Χώρος Διευθύνσεων
Αντίληψη χρήστη για τον τρόπο αποθήκευσης μιας διεργασίας στη μνήμη (εικονικός χώρος): Συνεχόμενες θέσεις μνήμης (0 – max) Ανεξάρτητος από τη φυσική μνήμη Χώρος για δυναμική ανάθεση μνήμης (heap) Στοίβα (stack) για φύλαξη τοπικών μεταβλητών και παραμέτρων

8 Διαμοιραζόμενη Βιβλιοθήκη με Χρήση Εικονικής Μνήμης

9 Σελιδοποίηση κατ’ Απαίτηση
Μια σελίδα μεταφέρεται από το μέσο αποθήκευσης (δίσκο) στη κύρια μνήμη του συστήματος (πλαίσιο) μόνο όταν γίνει αναφορά σε αυτή Χρειάζεται λιγότερο Ι/Ο, ταχύτερη απόκριση Καταλαμβάνεται λιγότερη μνήμη, περισσότερα προγράμματα μπορούν και τρέχουν ταυτόχρονα Κάθε φορά που γίνεται αναφορά σε σελίδα όπου η αντίστοιχη καταχώρηση δεν υπάρχει στον πίνακα, υπάρχουν δύο περιπτώσεις: Η αναφορά είναι άκυρη  διακοπή (abort) Η σελίδα δε βρίσκεται στη μνήμη  φόρτωμα στην μνήμη

10 Μεταφορά Σελίδων από/προς την Κύρια Μνήμη

11 Bit Εγκυρότητας Με κάθε καταχώρηση του πίνακα σελίδων συσχετίζεται ένα bit εγκυρότητας (1  στη μνήμη, 0  όχι στη μνήμη) Παράδειγμα στιγμιότυπου του πίνακα σελίδων: Κατά τη μετάφραση των διευθύνσεων, αν το bit εγκυρότητας στην καταχώρηση του πίνακα σελίδων είναι 0  σφάλμα σελίδας (page fault) # Πλαισίου bit εγκυρότητας 1 1 1 Πίνακας σελίδων

12 Πίνακας Σελίδων όταν κάποιες Σελίδες δε βρίσκονται στην Κύρια Μνήμη

13 Σφάλμα Σελίδας (Page Fault)
Όταν υπάρξει αναφορά σε σελίδα, η πρώτη αναφορά θα πιαστεί (trap) από το ΛΣ  δημιουργία σφάλματος σελίδας 1. To ΛΣ κοιτάζει έναν πίνακα (PCB) για να αποφασίσει: Αν η αναφορά είναι μη-έγκυρη, οπότε και διακόπτει Αν απλά και μόνο η σελίδα δεν είναι στη μνήμη 2. Επιλογή ενός άδειου πλαισίου 3. Μεταφορά της σελίδας στο πλαίσιο αυτό 4. Τροποποίηση των πινάκων έτσι ώστε να δείχνουν ότι η σελίδα είναι στη μνήμη (πίνακας σελίδων και εσωτερικός) 5. Επανεκκίνηση της εντολής που είχε προκαλέσει το σφάλμα σελίδας

14 Σχηματική Απεικόνιση Διαδικασίας Χειρισμού Σφάλματος Σελίδας

15 Εικονική Μνήμη και Δημιουργία Διεργασίας
Η εικονική μνήμη δίνει τα ακόλουθα πλεονεκτήματα κατά τη δημιουργία διεργασιών: Αντιγραφή κατά την τροποποίηση (copy-on-write) Αντιστοίχηση αρχείων στη μνήμη (memory-mapped files)

16 Αντιγραφή κατά την Τροποποίηση
Η αντιγραφή κατά την τροποποίηση (copy-on-write) επιτρέπει στην πατρική και τη θυγατρική διεργασία να μοιράζονται αρχικά τις ίδιες σελίδες Η σελίδα αντιγράφεται, μόνο όταν κάποια από τις διεργασίες την τροποποιήσει Επιτρέπει περισσότερο αποδοτική δημιουργία διεργασίας, καθώς δημιουργούνται αντίγραφα μόνο για τις σελίδες που τροποποιούνται Οι ελεύθερες σελίδες ανατίθενται από μια δεξαμενή κενών σελίδων

17 Αντιστοίχηση Αρχείων στη Μνήμη
Τμήματα του αρχείου αντιστοιχίζονται σε σελίδες Το Ι/Ο αντιμετωπίζεται ως τυπική προσπέλαση μνήμης Το αρχείο διαβάζεται αρχικά με σελιδοποίηση κατ’ απαίτηση, και οι επακόλουθες αναφορές στο αρχείο αντιμετωπίζονται ως ανάγνωση και εγγραφή στη μνήμη Απλοποίηση της πρόσβασης για Ι/Ο στο αρχείο (μέσω μνήμης παρά μέσω κλήσεων συστήματος read(), write()) Επιτρέπει σε πολλές διεργασίες να διαμοιραστούν το ίδιο αρχείο μέσω του μηχανισμού διαμοιρασμού σελίδων/πλαισίων μνήμης

18 Σχηματική Απεικόνιση Αντιστοίχισης Αρχείων στην Μνήμη

19 Αντικατάσταση Σελίδας (Page Replacement)
Όταν δεν υπάρχει άδειο πλαίσιο στο οποίο να φορτωθεί μια σελίδα που μεταφέρεται από τον δίσκο, επιλέγεται ένα δεσμευμένο πλαίσιο Επιθυμητός ένας αλγόριθμος ο οποίος να οδηγεί σε ελάχιστο αριθμό από σφάλματα μνήμης, και άρα σε ελάχιστο αριθμό μεταφορών σελίδων από/προς το αποθηκευτικό μέσο

20 Αντικατάσταση Σελίδας (συνέχεια)
Χρήση του bit τροποποίησης (modify ή dirty bit) για μείωση του φόρτου μεταφοράς σελίδων (μόνο οι τροποποιημένες σελίδες ξαναγράφονται στο δίσκο σε περίπτωση αντικατάστασης σελίδας) Η αντικατάσταση σελίδας ολοκληρώνει το διαχωρισμό λογικής και φυσικής μνήμης – μεγάλη λογική μνήμη μπορεί να παρέχεται με μια μικρότερη φυσική μνήμη

21 Διαδικασία Αντικατάστασης Σελίδας
1. Εντοπισμός της θέσης της επιθυμητής σελίδας στο δίσκο 2. Εύρεση ελεύθερου πλαισίου: Αν υπάρχει ελεύθερο πλαίσιο, χρησιμοποίησέ το Αν δεν υπάρχει ελεύθερο πλαίσιο, χρησιμοποίησε αλγόριθμο εντοπισμό του πλαισίου θύματος (victim frame) για την επιλογή του πλαισίου που θα αντικατασταθεί 3. Διάβασε τη σελίδα μέσα στο ελεύθερο πλαίσιο 4. Ενημέρωσε τον πίνακα σελίδων της διεργασίας (και πιθανά τον πίνακα πλαισίων που τηρεί το ΛΣ) 5. Επανεκκίνηση της διεργασίας

22 Σχηματική Αναπαράσταση Αντικατάστασης Σελίδας

23 Απόδοση Ένα σφάλμα σελίδας, «πιάνεται» από το ΛΣ
Αποθήκευση των καταχωρητών χρήστη και της κατάστασης της διεργασίας Προσδιορισμός της διακοπής ως σφάλμα σελίδας Έλεγχος εγκυρότητας αναφοράς στη σελίδα και προσδιορισμός της θέσης της στο δίσκο

24 Απόδοση (συνέχεια) Ανάγνωση από το δίσκο σε ένα ελεύθερο πλαίσιο. Περιλαμβάνει: πιθανή αναμονή στην ουρά του δίσκου, αναμονή για αναζήτηση και καθυστέρηση (seek and latency) μεταφορά της σελίδας από το δίσκο Πιθανή ανάθεση της ΚΜΕ σε άλλη διεργασία Διακοπή λόγω ολοκλήρωσης Ι/Ο από το δίσκο

25 Απόδοση (συνέχεια) Αποθήκευση της κατάστασης της διεργασίας που εκτελείται Προσδιορισμός ότι η διακοπή είναι από το δίσκο Διόρθωση πίνακα σελίδων και άλλων πιθανά πινάκων Αναμονή για ανάθεση της ΚΜΕ ξανά στη διεργασία αυτή Αποκατάσταση κατάστασης διεργασίας και καταχωρητών χρηστών και επανεκκίνηση της εντολής που προκάλεσε το σφάλμα σελίδας

26 Απόδοση (συνέχεια) Πιθανότητα σφάλματος σελίδας, p: 0  p  1
Πραγματικός χρόνος πρόσβασης (effective access time – EAT) EAT = (1 – p) x χρόνος προσπέλασης στη μνήμη + p (φόρτος σφάλματος σελίδας + [μεταφορά σελίδας εκτός] + μεταφορά σελίδας εντός + φόρτος επανεκκίνησης)

27 Παράδειγμα Χρόνος πρόσβασης κύριας μνήμης = 1μs
Με πιθανότητα 0.5 τα περιεχόμενα του πλαισίου που αντικαθίσταται έχουν αλλάξει, οπότε πρέπει να αντιγραφεί στο αποθηκευτικό μέσο Χρόνος μεταφοράς πλαισίου από/προς αποθηκευτικό μέσο = 10ms Μέσος χρόνος αντικατάστασης: swap time = 0.5 x 10ms + 10ms = 15 ms = μs Πραγματικός χρόνος πρόσβασης: ΕΑΤ = (1 - p) x 1μs + p x swap time = 1 - p p μs = ~ p μs

28 Μελέτη Αλγορίθμων Αντικατάστασης Σελίδων
Στόχος: Ο χαμηλότερος δυνατός ρυθμός λαθών σελίδας Προσδιορισμός συγκεκριμένης ακολουθίας αναφορών σελίδων (memory references) που ονομάζεται συμβολοσειρά αναφοράς (reference string) Αξιολόγηση του αλγορίθμου μετρώντας την επίδοση του (αριθμό λαθών σελίδας) για τη συγκεκριμένη συμβολοσειρά αναφοράς

29 Αναμενόμενη Συμπεριφορά Συστήματος

30 Ο Βέλτιστος Αλγόριθμος (Optimal Algorithm)
Ποιά είναι η ιδιότητα του ιδανικού ή βέλτιστου αλγορίθμου, που ελαχιστοποιεί τον αριθμό σφαλμάτων; O αλγόριθμος να αντικαθιστά κάθε φορά εκείνη την σελίδα που δεν πρόκειται να χρησιμοποιηθεί από το πρόγραμμα για το μεγαλύτερο χρονικό διάστημα κατά την προσεχή εκτέλεση Πως, όμως, μπορούμε να υλοποιήσουμε αυτή την ιδιότητα; Xρησιμοποιείται ουσιαστικά και ως σημείο αναφοράς για το πόσο καλά λειτουργούν οι υπόλοιποι (πραγματικοί) αλγόριθμοι

31 Βέλτιστη Αντικατάσταση Σελίδων

32 Αλγόριθμος First-In-First-Out (FIFO)
Η επιλογή του θύματος προς αντικατάσταση γίνεται με βάση την ηλικία της σελίδας Ως θύμα επιλέγεται κάθε φορά που η πιο παλιά σελίδα, δηλαδή αυτή που έχει παραμείνει στην μνήμη το μεγαλύτερο χρονικό διάστημα Δεν χρησιμοποιείται πληροφορία για την συχνότητα χρήσης των σελίδων, ούτε για το πόσο πρόσφατα έχουν χρησιμοποιηθεί Η αντικατάσταση FIFO παρουσιάζει το παράδοξο του Belady

33 Αλγόριθμος FIFO - Παράδειγμα

34 Το Παράδοξο του Belady Συμβολοσειρά αναφοράς: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 πλαίσια: 4 πλαίσια: 1 2 3 4 5 9 page faults 10 page faults

35 Το Παράδοξο του Belady

36 Αλγόριθμος Least Recently Used (LRU)
Επιλέγεται η σελίδα που χρησιμοποιήθηκε λιγότερο πρόσφατα (δεν είναι απαραίτητα αυτή που χρησιμοποιήθηκε συνολικά λιγότερο!) Χρησιμοποιείται ένα ρολόι Κάθε καταχώρηση στον πίνακα σελίδων έχει μια χρονοσφραγίδα (timestamp) Κάθε φορά που γίνεται μια αναφορά σελίδας τα περιεχόμενα του ρολογιού αντιγράφονται στο αντίστοιχο πεδίο του πίνακα σελίδων Επιλογή της σελίδας με τη μικρότερη χρονοσφραγίδα

37 Αντικατάσταση Σελίδων με τον LRU

38 Υλοποίηση LRU με Στοίβα
Τήρηση στοίβας με αριθμούς σελίδων Η στοίβα υλοποιείται με διπλά συνδεδεμένη λίστα μεταξύ των στοιχείων του πίνακα σελίδων Όταν γίνεται αναφορά σε μια σελίδα, αυτή μετακινείται στην κορυφή της στοίβας (γίνεται αλλαγή δεικτών) Στη χειρότερη περίπτωση απαιτείται αλλαγή 6 δεικτών Πολύ πιο γρήγορο από τη σύγκριση τιμών των χρονοσφραγίδων των καταχωρήσεων του πίνακα

39 Απεικόνιση Κατάστασης Στοίβας

40 Αλγόριθμος LRU (συνέχεια)
Τόσο ο βέλτιστος αλγόριθμος όσο και ο LRU (όπως και κάθε αλγόριθμος στοίβας*) δεν πάσχουν από το παράδοξο του Belady (*) Αλγόριθμος στοίβας θεωρείται ένας αλγόριθμος όταν μπορεί να αποδειχθεί ότι το σύνολο των σελίδων που βρίσκονται στη μνήμη για n πλαίσια, είναι υποσύνολο των σελίδων που θα βρίσκονταν στη μνήμη για n+1 πλαίσια

41 Αλγόριθμος LRU (συνέχεια)

42 Μέθοδοι Προσέγγισης LRU
Bit αναφοράς: Με κάθε σελίδα συσχετίζεται ένα bit, αρχικά έχει την τιμή 0 Όταν γίνεται αναφορά στη σελίδα, η τιμή του αλλάζει σε 1 Επιλέγεται η σελίδα που έχει bit αναφοράς 0 (αν υπάρχει τέτοια) Όταν όλες οι σελίδες έχουν το bit αναφοράς = 1, πρέπει να επιλέξουμε μια τυχαία σελίδα Δεύτερη ευκαιρία (μαζί με bit αναφοράς): Χρήση ρολογιού

43 Αλγόριθμοι Προσέγγισης LRU (συνέχεια)
Δεύτερη ευκαιρία (Second chance): Ελέγχεται το bit αναφοράς (0=αντικατάσταση) Κυκλική Αντικατάσταση (υλοποίηση σε κυκλική ουρά, FIFO) Αν η σελίδα που είναι να αντικατασταθεί έχει bit αναφοράς 1, τότε: Θέσε το bit αναφοράς 0 και το χρόνο άφιξης στον τρέχοντα χρόνο Άφησε τη σελίδα στη μνήμη (δεύτερη ευκαιρία) Αντικατέστησε την επόμενη (FIFO) σελίδα

44 Αλγόριθμος Αντικατάστασης Σελίδας Δεύτερης Ευκαιρίας (Ρολογιού)

45 Αλγόριθμοι Μέτρησης Συχνότητας Χρήσης
Για κάθε σελίδα τηρείται μετρητής για το πλήθος των αναφορών που έχουν γίνει στην σελίδα αυτή Αλγόριθμος LFU (least frequently used): αντικαθιστά τη σελίδα της οποίας ο μετρητής έχει τη μικρότερη τιμή Λογική: Αφού η σελίδα έχει χρησιμοποιηθεί τόσο συχνά, έχει μεγάλη πιθανότητα να χρησιμοποιηθεί και στο μέλλον Αλγόριθμος MFU (most frequently used): αντικαθιστά τη σελίδα της οποίας ο μετρητής έχει τη μεγαλύτερη τιμή Λογική: Μια σελίδα που έχει μόλις έρθει στην μνήμη (και άρα έχει εξ’ ορισμού μικρό αριθμών αναφορών) είναι πιθανό να χρησιμοποιηθεί στο μέλλον

46 Ανάθεση Πλαισίων σε Διεργασίες (Allocation of Frames)
Κάθε διεργασία χρειάζεται έναν ελάχιστο αριθμό από σελίδες να βρίσκονται στην κύρια μνήμη του συστήματος Παράδειγμα: IBM 370 – 6 σελίδες για το χειρισμό της εντολής SS MOVE: Η εντολή είναι 6 bytes, μπορεί να διατρέχει δύο σελίδες 2 σελίδες για το χειρισμό του από 2 σελίδες για το χειρισμό του προς Δύο κυρίως σχήματα ανάθεσης πλαισίων Σταθερή ανάθεση Ανάθεση κατά προτεραιότητα

47 Σταθερή Ανάθεση Εξισορροπημένη ανάθεση: π.χ., για 100 διαθέσιμα πλαίσια και 5 διεργασίες δώσε στην καθεμιά 5 πλαίσια Αναλογική Ανάθεση: Ανάθεση ανάλογα με το μέγεθος της διεργασίας Υπολογισμός Παράδειγμα

48 Ανάθεση κατά Προτεραιότητα
Χρήση ενός αναλογικού σχήματος με βάση την προτεραιότητα (και όχι το μέγεθος) μιας διεργασίας Αν η διεργασία Pi δημιουργήσει ένα σφάλμα σελίδας: Επιλογή για αντικατάσταση ενός από τα πλαίσιά της Επιλογή για αντικατάσταση ενός πλαισίου από διεργασία χαμηλότερης προτεραιότητας

49 Γενικές Πολικές εναντίον Τοπικών Πολιτικών Αντικατάστασης
Γενική αντικατάσταση (global replacement): Μια διεργασία επιλέγει ένα πλαίσιο για αντικατάσταση από τη λίστα όλων των πλαισίων Μια διεργασία μπορεί να πάρει ένα πλαίσιο από μια άλλη διεργασία Τοπική αντικατάσταση (local replacement): Κάθε διεργασία επιλέγει από το σύνολο των σελίδων που έχουν ανατεθεί σε αυτή Η εκτέλεση μιας διεργασίας δεν επηρεάζει την κατάσταση των σελίδων/πλαισίων των υπολοίπων

50 Πτώση της Απόδοσης – Thrashing
Αν μια διεργασία δεν έχει «αρκετές» σελίδες, ο ρυθμός λαθών σελίδας είναι πολύ υψηλός. Αυτό οδηγεί σε: χαμηλή χρησιμοποίηση της ΚΜΕ το ΛΣ θεωρεί ότι πρέπει να αυξήσει το βαθμό του πολυπρογραμματισμού μια επιπλέον διεργασία εισάγεται στο σύστημα Thrashing: Μια διεργασία χάνει τον χρόνο της μετακινώντας σελίδες από/προς το μέσο αποθήκευσης

51 Συνηθισμένη Καμπύλη Thrashing

52 Καταπολέμηση Thrashing
Πως, όμως, μπορούμε να γνωρίζουμε πόσα πλαίσια χρειάζεται μια διεργασία;

53 Καταγραφή Συχνότητας Σφαλμάτων Σελίδας Διεργασιών
Το φαινόμενο του thrashing μπορεί να καταπολεμηθεί με την παρακολούθηση του ρυθμού σφαλμάτων σελίδας των διεργασιών Όταν είναι μεγάλος, γνωρίζουμε ότι η διεργασία χρειάζεται και κερδίζει πλαίσια, ενώ όταν είναι μικρός πιθανόν να έχει παραπάνω και να τα χάνει Μπορούμε να δημιουργήσουμε άνω και κάτω όρια στον επιθυμητό ρυθμό σφαλμάτων σελίδας

54 Καμπύλη Συχνότητας Σφαλμάτων Σελίδας Διεργασίας

55 Τοπικότητα Διεργασιών
Γιατί δουλεύει το μοντέλο της σελιδοποίησης; Μοντέλο τοπικότητας (locality model) Κάθε διεργασία αναφέρεται για μεγάλα χρονικά διαστήματα σε ένα σχετικά περιορισμένο αριθμό σελίδων (τοπικότητα) Οι διεργασίες μετακινούνται μεταξύ τοπικοτήτων Οι τοπικότητες μπορεί να επικαλύπτονται Γιατί συμβαίνει thrashing;  μεγέθους τοπικότητας > συνολικό μέγεθος μνήμης

56 Δείγμα Αναφορών Μνήμης

57 Μοντέλο Συνόλου Εργασίας (Working-Set Model)
 (παράθυρο συνόλου εργασίας) = μια συγκεκριμένη ακολουθία αναφορών σελίδων, π.χ. ανά 10,000 εντολές WSSi (σύνολο εργασίας για τη διεργασία Pi) = ο συνολικός αριθμός σελίδων που αναφέρθηκαν στο πιο πρόσφατο  Το σύνολο εργασίας μεταβάλλεται με το χρόνο Αν το  είναι πολύ μικρό πιθανώς να μην συμπεριλαμβάνει μια ολόκληρη τοπικότητα Αν το  είναι πολύ μεγάλο πιθανώς να συμπεριλαμβάνει πολλές διαφορετικές τοπικότητες Αν το  =   περικλείει ολόκληρο το πρόγραμμα

58 Μοντέλο Συνόλου Εργασίας (συνέχεια)
D =  WSSi  συνολική απαίτηση σε πλαίσια Αν D > m (συνολικός αριθμός διαθέσιμων πλαισίων)  θα συμβεί thrashing γιατί ορισμένες διεργασίες δε θα έχουν αρκετά πλαίσια Αν D > m, τότε προσωρινό σταμάτημα κάποιας διεργασίας

59 Μοντέλο Συνόλου Εργασίας (συνέχεια)
Η αρχή του μοντέλου είναι απλή: Το ΛΣ επιβλέπει το σύνολο εργασίας για κάθε διεργασία και αναθέτει σε αυτή τόσα πλαίσια όσα το μέγεθός του Εφόσον υπάρχουν αρκετά πλαίσια ξεκινάει άλλη διεργασία Η πολιτική του συνόλου εργασίας αποτρέπει το thrashing και κρατάει το βαθμό πολυπρογραμματισμού όσο το δυνατόν μεγαλύτερο (βελτιστοποιεί τη χρήση της ΚΜΕ)

60 Μοντέλο Συνόλου Εργασίας (συνέχεια)

61 Καταγραφή του Συνόλου Εργασίας
Προσέγγιση με έναν μετρητή διαστημάτων + bit αναφοράς Παράδειγμα:  = 10,000 Ο μετρητής διακόπτει μετά από 5000 αναφορές Τήρηση στη μνήμη δύο bits για κάθε σελίδα Όταν διακόψει ο μετρητής, αντιγράφει τις τιμές των bits αναφοράς σελίδας και τα θέτει στην τιμή 0 Αν κάποιο από τα bits της μνήμης = 1  η σελίδα ανήκει στο σύνολο εργασίας Είναι απολύτως ακριβής αυτή η διαδικασία; Βελτίωση: 10 bits και διακοπή κάθε 1000 μονάδες χρόνου

62 Ανάθεση Μνήμης Πυρήνα Πρέπει να αντιμετωπίζεται διαφορετικά από τη μνήμη χρήστη Συνήθως ανατίθεται από μια «δεξαμενή» ελεύθερης μνήμης Ο πυρήνας ζητάει μνήμη για δομές με μεταβαλλόμενα μεγέθη Υπάρχει μνήμη πυρήνα που απαιτείται να είναι συνεχόμενη

63 Σύστημα των Φίλων Αναθέτει μνήμη από τμήμα συγκεκριμένου μεγέθους που αποτελείται από συνεχόμενα πλαίσια Η μνήμη ανατίθεται χρησιμοποιώντας τμήματα μεγέθους δύναμη του 2 (power-of-2 allocator) Ικανοποιεί αιτήσεις σε μονάδες με μέγεθος δύναμη του 2 Η αίτηση «στρογγυλεύεται» στην πλησιέστερη μεγαλύτερη (από την αίτηση) δύναμη του 2 Όταν απαιτείται μικρότερη ανάθεση από αυτή που είναι διαθέσιμη, το τρέχον τμήμα χωρίζεται σε δύο τμήματα με μέγεθος την αμέσως μικρότερη δύναμη του 2 Συνέχισε έως ότου είναι διαθέσιμο κομμάτι κατάλληλου μεγέθους

64 Ανάθεση Μνήμης με το Σύστημα των Φίλων

65 Slabs Εναλλακτική στρατηγική
Μια cache αποτελείται από ένα ή περισσότερα slabs Μια διαφορετική cache για κάθε ξεχωριστή δομή δεδομένων του πυρήνα Κάθε cache γεμίζει με αντικείμενα (objects) – στιγμιότυπα της δομής δεδομένων (π.χ. περιγραφείς διεργασιών)

66 Slabs (συνέχεια) Όταν δημιουργείται η cache, γεμίζει με αντικείμενα που χαρακτηρίζονται ελεύθερα Όταν αποθηκεύονται δομές, τα αντικείμενα χαρακτηρίζονται χρησιμοποιημένα Αν ένα slab είναι γεμάτο χρησιμοποιημένα αντικείμενα, το επόμενο αντικείμενο ανατίθεται από ένα άδειο slab Αν δεν υπάρχουν άδεια slabs, δημιουργείται ένα νέο slab από συνεχόμενα πλαίσια και ανατίθεται στην cache

67 Ανάθεση Slabs

68 Slabs (συνέχεια) Πλεονεκτήματα: δεν υπάρχει κατακερματισμός, γρήγορη ικανοποίηση αιτήσεων για μνήμη Τα αντικείμενα δημιουργούνται εκ των προτέρων, συνεπώς η ανάθεσή τους από την cache μπορεί να είναι γρήγορη Αρχικά εμφανίστηκαν στον πυρήνα του Solaris 2.4. Το Linux αν και ξεκίνησε με το σύστημα των φίλων από την έκδοση 2.2 και μετά χρησιμοποιεί τα slabs

69 Άλλα Ζητήματα για Μελέτη
Δυνατότητες TLB: Η ποσότητα της μνήμης που είναι προσπελάσιμη μέσω TLB. Στην ιδανική περίπτωση το σύνολο εργασίας για κάθε διεργασία αποθηκεύεται στο TLB, αλλιώς υπάρχει υψηλός ρυθμός σφαλμάτων Πρόβλεψη για πολλαπλά μεγέθη σελίδας: Αυτό επιτρέπει σε εφαρμογές που χρειάζονται μεγαλύτερο μέγεθος σελίδας να το χρησιμοποιήσουν χωρίς αύξηση του κατακερματισμού I/O Interlock: Οι σελίδες πρέπει ορισμένες φορές να κλειδώνονται στη μνήμη για να μην πέσουν θύματα αντικατάστασης, π.χ. στην περίπτωση αντιγραφής δεδομένων από/προς συσκευές Προληπτική φόρτωση (prefetching): Μεταφέρονται σελίδες στην κύρια μνήμη χωρίς να έχει δημιουργηθεί σφάλμα για αυτές (αλλά για κάποιο λόγο θεωρείται πιθανό να γίνει αναφορά σε αυτές)

70 I/O Interlocking

71 Άλλα Ζητήματα για Μελέτη (συνέχεια)
Πίνακας με κάθε γραμμή να αποθηκεύεται σε μια σελίδα: 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 σειριακές αναφορές σε διαφορετικές σελίδες

72 Αλγόριθμοι Αποθήκευσης Σελίδων (Page Buffering Algorithms)
Τήρηση «δεξαμενής» ελεύθερων πλαισίων Τήρηση λίστας με τις σελίδες που έχουν τροποποιηθεί Σε τακτά χρονικά διαστήματα (όταν δεν υπάρχει δραστηριότητα σελιδοποίησης), γίνεται επιλογή κάποιων σελίδων και εγγραφή τους στο δίσκο Τήρηση λίστας ελεύθερων πλαισίων, τα οποία «θυμούνται» τις σελίδες που βρίσκονταν εκεί πριν μείνουν ελεύθερα, ώστε να αποφευχθεί περιττή μεταφορά τους από τον δίσκο

73 Επιλογή Μεγέθους Σελίδας
Από τις πιο σημαντικές παραμέτρους ενός ΛΣ Κατακερματισμός Μήκος πίνακα σελίδων Φόρτος I/O Τοπικότητα

74 Windows XP Χρησιμοποιεί σελιδοποίηση κατ’ απαίτηση με ομαδοποίηση (clustering), για την προφόρτωση των σελίδων που βρίσκονται εκατέρωθεν της σελίδας που δημιούργησε σφάλμα Οι διεργασίες έχουν ελάχιστο και μέγιστο σύνολο εργασίας

75 Windows XP Κάθε διεργασία αρχίζει με το ελάχιστο σύνολο εργασίας και μπορεί σταδιακά να αυξήσει τα πλαίσια της μέχρι να φτάσει το μέγιστο Όταν η ποσότητα της ελεύθερης μνήμης του συστήματος πέσει κάτω από ένα κατώφλι, τότε εκτελείται αυτόματα περιστολή συνόλου εργασίας (working set trimming) για την ανάκτηση της ποσότητας της ελεύθερης μνήμης, εκτός των ελάχιστων συνόλων εργασίας

76 Solaris 2 Τηρεί μια λίστα με ελεύθερα πλαίσια για τις διεργασίες
Lotsfree – παράμετρος κατώφλι για την έναρξη σελιδοποίησης (μεταφορά πλαισίων στον δίσκο) Η σελιδοποίηση εκτελείται από τη διεργασία pageout, η οποία ψάχνει για σελίδες χρησιμοποιώντας τον τροποποιημένο αλγόριθμο του ρολογιού Ο Scanrate είναι ο ρυθμός με τον οποίο ψάχνονται οι σελίδες. Ποικίλει από το slowscan στο fastscan. Η pageout καλείται ανάλογα με την ποσότητα ελεύθερης μνήμης που είναι διαθέσιμη

77 Solar Page Scanner


Κατέβασμα ppt "Λειτουργικά Συστήματα"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google