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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16 Διαχείριση Συνδεδεμένης Λίστα  Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ6; Δ1Δ2Δ3Δ4Δ5 P06H64P102H121P137 Δ6 H64P102H121P137P06P012  Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ7; Δ1Δ2Δ3Δ4Δ5 P06H64P102H121P137 Δ7 P08P82

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

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

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

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

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

22 Παράδειγμα  Υποθέτουμε ένα 16-bit σύστημα με 32Κ πραγματικής μνήμης όπου η ΜΔΜ έχει τον εξής πίνακα 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 Physical Addresses 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K Virtual Address Physical Address Virtual Address Page fault

23 Μονάδα Διαχείρισης Μνήμης IVA: Input Virtual Address Virtual Addresses Physical Addresses 28K-32K 24K-28K 20K-24K 16K-20K 12K-16K 8K-12K 4K-8K 0K-4K OPA: Output Physical Address OPA: IVA: OPA: IVA: 101 Present / absent bit

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

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

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

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

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

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

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

31 Not Recently Used (NRU) page replacement algorithm  NRU ψάχνει για μια σελίδα που δεν έχει χρησιμοποιηθεί «τελευταία».  Πως εφαρμόζεται η πολιτική:  Θυμηθείτε τα 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;

32 Σ106 Second Chance Page Replacement Algorithm  Επιλέγουμε τη σελίδα η οποία ήταν φορτωμένη στη μνήμη το περισσότερο χρόνο.  Σε περίπτωση που το R=1, τότε ξέρουμε πως η σελίδα έχει χρησιμοποιηθεί τελευταία, οπόταν  Θέτουμε το R=0.  Ενημερώνουμε τον χρόνο φόρτωσής (θέτοντας τον στην δεδομένη στιγμή)  Τοποθετούμε την συγκεκριμένη σελίδα στο τέλος της ουράς.  Επιλέγουμε την επόμενη σελίδα και επαναλαμβάνουμε. Σ67Σ18Σ1210Σ312Σ1013 Σελίδα που φορτώθηκε πρώτη Σελίδα που φορτώθηκε τελευταία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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