1 / 47

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

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

gusty
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

  13. Διαχείριση της Μνήμης Μνήμη Δ1 Δ2 Δ3 Δ4 Δ5 u1 u2 u3 u4 … 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 . 1 . 0 . 0 1 1 • Πως το ΛΣ ξέρει πια τμήματα είναι δεσμευμένα και πια ελεύθερα; • Bitmap • Η μνήμη χωρίζεται σε μικρές μονάδες u (π.χ., 4 bytes) • Ορίζεται ένας πίνακας στον οποίο κάθε μονάδα uαντιπροσωπεύεται από ένα bit. • Εάν το u είναι δεσμευμένο, τότε το αντίστοιχο bit έχει την τιμή 1. • Διαφορετικά παίρνει την τιμή 0 • Πόση επιπρόσθετη μνήμη χρειάζεται αυτή η μέθοδος; • Για κάθε ubits χρειάζεται 1 bit (δηλαδή η μέθοδος αυτή χρησιμοποιεί το 1/(u+1) της ολικής μνήμης.

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

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

  16. Διαχείριση Συνδεδεμένης Λίστα Δ6 Δ7 Δ1 Δ1 Δ2 Δ2 Δ3 Δ3 Δ4 Δ4 Δ5 Δ5 P P P H H P P P P P H P P H H H P P 12 12 10 13 13 6 13 6 8 6 12 10 0 0 0 0 10 0 7 1 2 4 6 4 2 4 2 6 6 12 7 7 8 1 2 1 • Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ6; • Πως θα μεταβληθεί η λίστα όταν εισέλθει η Δ7;

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

  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 έως 232 = 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 Physical Addresses 36K-40K 32K-36K 28K-32K 28K-32K 24K-28K 24K-28K 20K-24K 20K-24K 16K-20K 16K-20K 12K-16K 12K-16K 8K-12K 8K-12K 4K-8K 4K-8K 0K-4K 0K-4K 7 3 6 4 0 2 5 1

  23. Μονάδα Διαχείρισης Μνήμης Virtual Addresses 15 1111 IVA: IVA: 0110 0000 0101 1101 0001 0110 0101 0010 14 0000 13 0000 12 0000 11 1011 1110 10 Physical Addresses 9 0000 8 0000 7 28K-32K 0000 1100 6 24K-28K 5 1 000 20K-24K 4 0000 16K-20K 3 12K-16K 0000 1010 2 8K-12K 1 4K-8K 1101 0 1001 0K-4K Present / absent bit OPA: 100 0000 0101 1101 OPA: 101 0110 0101 0010 IVA: Input Virtual Address OPA: Output Physical Address

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

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

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

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

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

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

  30. First-In First-Out Page Replacement Algorithm • Επιλέγουμε τη σελίδα η οποία ήταν φορτωμένη στη μνήμη το περισσότερο χρόνο. • Παράδειγμα: Υποθέστε πως βρισκόμαστε στον χρόνο 15 και πως θέλουμε να αντικαταστήσουμε μια σελίδα με την Σ11 η οποία χρειάζεται τώρα. • Με βάση την πολιτική 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. Second Chance Page Replacement Algorithm Σ Σ Σ Σ Σ Σ 3 12 11 10 10 6 13 12 8 7 6 10 • Επιλέγουμε τη σελίδα η οποία ήταν φορτωμένη στη μνήμη το περισσότερο χρόνο. • Σε περίπτωση που το R=1, τότε ξέρουμε πως η σελίδα έχει χρησιμοποιηθεί τελευταία, οπόταν • Θέτουμε το R=0. • Ενημερώνουμε τον χρόνο φόρτωσής (θέτοντας τον στην δεδομένη στιγμή) • Τοποθετούμε την συγκεκριμένη σελίδα στο τέλος της ουράς. • Επιλέγουμε την επόμενη σελίδα και επαναλαμβάνουμε. Σελίδα που φορτώθηκε πρώτη Σελίδα που φορτώθηκε τελευταία

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

  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 Σ1 1121 Σ15 Σ3 1220 Σ11 Σ4 1321 Σ7 Σ5 1432 Σ8 Σ13 Σ6 • Όλες οι σελίδες οργανώνονται σε μια κυκλική λίστα στην οποία αναγράφεται επίσης ο χρόνος τελευταίας αναφοράς στη σελίδα. • Όταν α αλγόριθμος ψάχνει σελίδα για αντικατάσταση, ελέγχει το Rbit. Εάν είναι 1 τότε ενημερώνεται ο τελευταίος χρόνος αναφοράς • Εάν είναι 0 και η ηλικία της σελίδας είναι μεγαλύτερη από το τ τότε η σελίδα είναι υποψήφια για αντικατάσταση

  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)

More Related