Εικονική Μνήμη (Virtual Μemory)

Σχετικά έγγραφα
Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual memory)

Εικονική Μνήμη (virtual memory)

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

ΠΛΕ- 027 Μικροεπεξεργαστές

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Αρχιτεκτονική Υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Εικονική Μνήμη (virtual memory)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

Virtual Memory. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Διαχείριση Κύριας Μνήμης

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

Λειτουργικά Συστήματα (ΗΥ321)

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Ασκήσεις Caches

Εικονική Μνήμη (virtual memory)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα

Εισαγωγή στην Πληροφορική

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

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

Εικονική Μνήμη (virtual memory)

Ασκήσεις Caches

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 5. Μεγάλη και γρήγορη: Αξιοποίηση της ιεραρχίας της µνήµης

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

Μάθημα 8: Διαχείριση Μνήμης

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Διδάσκοντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη Λειτουργικά Συστήματα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Εισαγωγή στα Λειτουργικά

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

Τεχνολογίες Κύριας Μνήμης

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,

Αρχιτεκτονική υπολογιστών

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Η ιεραρχία της μνήμης

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

Εικονικοποίηση. Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο,

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Λειτουργικά Συστήματα (ΗΥ222)

Κεντρική Μονάδα Επεξεργασίας

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

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Λιβανός Γιώργος Εξάμηνο 2017Β

Είδη των Cache Misses: 3C s

Αρχιτεκτονική Υπολογιστών

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

Σειρά Ασκήσεων 10: Εικονική Μνήμη (Virtual Memory)

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Εικονική Μνήμη (1/2)

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Αρχιτεκτονική υπολογιστών

Οργάνωση Υπολογιστών (ΙI)

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης I

Ασκήσεις Αρχιτεκτονικής Υπολογιστών

Διάλεξη 12 Καθυστερήσεις (Stalls)

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Αρχιτεκτονική Υπολογιστών

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Αρχιτεκτονική Υπολογιστών

Εικονική Μνήμη (Virtual Memory)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Λειτουργικά Συστήματα (ΗΥ321)

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

Cach O p i timisati tions

Σειρά Ασκήσεων 10: Εικονική Μνήμη (Virtual Memory)

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Transcript:

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Απλό πείραμα int *data = malloc((1<<20) * sizeof(int)); printf( Data[.] starts @ 0x%lx\n, data); % a.out Data[.] starts @ 0x7fc7fb798010 Ο υπολογιστής μου έχει 8 GB μνήμη. Πως είναι δυνατόν το array data[.] να αποθηκεύεται πέρα από την μνήμη που έχουμε? (στα >140 TB) Όταν προγραμματίζετε, χρησιμοποιείτε εικονική μνήμη (virtual memory) Οργάνωση και Σχεδιάση Η/Y (HY232) 2

Προβλήματα φυσικής μνήμης (1) Τι θα συμβεί εάν η μνήμη που χρειάζεται το πρόγραμμά μας είναι περισσότερη από το μέγεθος της κύριας μνήμης; Θα μπορούσαμε να αποθηκεύσουμε όλο το πρόγραμμα στον σκληρό δίσκο, και να χρησιμοποιήσουμε την κύρια μνήμη σαν cache του σκληρού δίσκου Αυτό είναι η εικονική μνήμη (virtual memory): μια τεχνική που επιτρέπει την χρησιμοποίηση της κύριας μνήμης ως cache του σκληρού δίσκου. Πριν την εφεύρεση της εικονικής μνήμης, οι προγραμματιστές έπρεπε να προνοήσουν να μεταφέρουν προγράμματα και δεδομένα μεταξύ δίσκου και κύριας μνήμης κάθε φορά που αυτά δεν χωρούσαν στην κύρια μνήμη. Πολύπλοκο, κουραστικό και γεμάτο κινδύνους για λάθη. Οι προγραμματιστές παλαιότερα έπρεπε να κάνουν πολύ περισσότερα από το απλώς να γράφουν ένα πρόγραμμα για μια εφαρμογή. Οργάνωση και Σχεδιάση Η/Y (HY232) 3

Προβλήματα φυσικής μνήμης (2) Τι θα συμβεί εάν θέλουμε να εκτελούμε σε έναν επεξεργαστή ταυτόχρονα πολλά προγράμματα ή διεργασίες (processes); 1. Ακόμα και εάν ένα πρόγραμμα χωράει στην κύρια μνήμη, 10 προγράμματα μπορεί να μην χωράνε. 2. Πολλαπλά προγράμματα θέλουν αν γράψουν στην ίδια διεύθυνση μνήμης; Πρόβλημα! Τι θα συμβεί εάν δύο διαφορετικά προγράμματα Α και Β θέλουν πχ να χρησιμοποιήσουν την θέση μνήμης 0x10000000 ως βάση του stack τους; 3. Πως μπορούμε να προστατεύσουμε τα δεδομένα ενός προγράμματος από το να διαβαστούν ή και να γραφούν από κάποιο άλλο πρόγραμμα; Οργάνωση και Σχεδιάση Η/Y (HY232) 4

Συστήματα με μόνο φυσική μνήμη Παραδείγματα στον πραγματικό κόσμο: Πολλοί παλαιότεροι υπερυπολογιστές Cray Πολλά ενσωματωμένα συστήματα (embedded systems) CPU Physical Addresses Memory 0: 1: Πλήρης έλεγχος της μνήμης από τον προγραμματιστή N-1: Οργάνωση και Σχεδιάση Η/Y (HY232) 5

Εικονική Μνήμη (Virtual Memory) Βασική ιδέα: Δώσε στον προγραμματιστή την ψευδαίσθηση ότι έχει ένα πολύ μεγάλο χώρο διευθύνσεων Ενώ, στην πραγματικότητα έχει πολύ λιγότερη φυσική μνήμη Ο προγραμματιστής δεν πρέπει να ασχολείται με την διαχείριση (management) της μνήμης Μηχανισμοί hardware + system software σε συνεργασία διαχειρίζονται την φυσική μνήμη για να δημιουργήσουν την ψευδαίσθηση στον προγραμματιστή. Οργάνωση και Σχεδιάση 6 Η/Y (HY232)

H ιδέα της έμμεσης προσπέλασης Η έμμεση προσπέλαση είναι ή δυνατότητα να μπορούμε να προσπελάσουμε ένα αντικείμενο (πχ μια μεταβλητή) χρησιμοποιώντας ένα συμβολικό όνομα αντί την τιμή του ίδιου του αντικειμένου. Αγγλικός όρος indirection. Άμεση προσπέλαση Name Thing Έμμεση προσπέλαση Name Thing Thing Παράδειγμα είναι οι pointers στην C Οργάνωση και Σχεδιάση Η/Y (HY232) 7

Virtual Address Εικονική Μνήμη (Virtual Memory) Οι εικονικές διευθύνσεις (virtual addresses) που χρησιμοποιείτε σαν προγραμματιστές μεταφράζονται σε φυσικές (δηλ. πραγματικές) διευθύνσεις (physical addresses) στην κύρια μνήμη ή στον σκληρό δίσκο. Η μετάφραση αυτή από εικονικές σε φυσικές διευθύνσεις υλοποιεί την ιδέα της έμμεσης προσπέλασης. Physical Memory Δηλ., οι διευθύνσεις μεταβλητών που χρησιμοποιείτε στα προγράμματα σας είναι εικονικές, δεν αντιστοιχούν δηλ. σε πραγματικές διευθύνσεις στην μνήμη ή στον σκληρό δίσκο. Disk Πχ. int *ptr = (int *) 0x1000FFFF; Η διεύθυνση 0x1000FFFF είναι εικονική. Οργάνωση και Σχεδιάση Η/Y (HY232) 8

Εικονική Μνήμη (Virtual Memory) Κάθε κομμάτι του προγράμματος απεικονίζεται σε διαφορετικές σελίδες στην φυσική μνήμη Οργάνωση και Σχεδιάση Η/Y (HY232) 9

Virtual Address Διαφορετικές διεργασίες έχουν διαφορετική απεικόνιση (mapping) από την εικονική στην φυσική μνήμη (virtual physical). Αυτό έχει σαν αποτέλεσμα ότι ακόμα και να χρησιμοποιούν δύο διεργασίες την ίδια εικονική διεύθυνση, αυτή θα απεικονισθεί σε διαφορετικές φυσικές θέσεις μνήμης. Με το να αντιστοιχήσουμε διαφορετικές περιοχές φυσικής μνήμης στην διεργασία Α και B, εμποδίζουμε το να διαβάζουν και να γράφουν η μία διεργασία από την άλλη. Process A Physical Process B Memory 0x1000FFFF Εικονική Μνήμη (Virtual Memory) Disk Virtual Address 0x1000FFFF Οργάνωση και Σχεδιάση Η/Y (HY232) 10

Εικονική μνήμη ως μηχανισμός cache Ο μηχανισμός μετάφρασης από εικονική σε φυσική μνήμη μπορεί να θεωρηθεί και ως μηχανισμός cache. Έχουμε τα ίδια προβλήματα να επιλύσουμε όπως και με την ιεραρχία μνήμης. Θέλουμε να έχουμε το μέγεθος του σκληρού δίσκου και την ταχύτητα προσπέλασης της φυσικής μνήμης. Ο μηχανισμός της εικονικής μνήμης κρύβει τον μεγάλο χρόνο προσπέλασης του σκληρού δίσκου. Και εδώ το πράγματα είναι πολύ χειρότερα: Ενώ ο χρόνος προσπέλασης της κύριας μνήμης είναι 200-400 κύκλοι μηχανής, ο μέσος χρόνος προσπέλασης του σκληρού δίσκου είναι περίπου δέκα εκατομμύρια κύκλοι! Συνεπώς δεν επιτρέπονται πολλές αστοχίες κατά την μετάφραση Οργάνωση και Σχεδιάση Η/Y (HY232) 11

Μετάφραση εικονικής διεύθυνσης Η CPU και το λειτουργικό σύστημα μεταφράζουν τις εικονικές διευθύνσεις σε φυσικές. Κάθε εικονική διεύθυνση χωρίζεται σε αριθμό σελίδας (virtual page number) και μετατόπιση σελίδας (page offset). Οι σελίδες είναι το αντίστοιχο του block στις caches, πλην όμως πολύ μεγαλύτερες (αρκετά KB) Μόνο ο αριθμός σελίδας μεταφράζεται. Η μετατόπιση είναι η ίδια τόσο στην εικονική όσο και στην φυσική διεύθυνση Οργάνωση και Σχεδιάση Η/Y (HY232) 12

Πως βρίσκουμε την κατάλληλη σελίδα Η μετάφραση γίνεται με την χρήση του πίνακα σελίδων (page table). Κάθε διεργασία (process) έχει το δικό της πίνακα σελίδων Ο καταχωρητής πίνακα σελίδων (page table base register, PTBR) δείχνει την αρχή του πίνακα σελίδων για την διεργασία που είναι ενεργή αυτήν την στιγμή O πίνακας σελίδων αποθηκεύει την φυσική διεύθυνση της αρχής της σελίδας Επίσης και control bits το πιο σημαντικό εκ των οποίων είναι το valid bit. Οργάνωση και Σχεδιάση Η/Y (HY232) 13

Πίνακας σελίδων και μετάφραση Κάθε γραμμή του πίνακα σελίδων περιέχει τον αριθμό της φυσικής σελίδας (PPN), και το valid bit. Εάν valid bit = 1, η φυσική σελίδα είναι στην κύρια μνήμη. Εάν valid bit = 0, η φυσική σελίδα είναι στον σκληρό δίσκο και προκαλεί σφάλμα σελίδας (page fault). Παίρνει εκατομμύρια κύκλους μηχανής να φέρουμε την σελίδα από τον σκληρό δίσκο. Σύστημα με 2 20 σελίδες και μέγεθος σελίδας 4KB. O πίνακας σελίδων έχει 1M εισόδους (Page Table Entries, PTE). Οργάνωση και Σχεδιάση Η/Y (HY232) 14

Υπάρχει όμως ένα πρόβλημα Για να κάνουμε την μετάφραση πρέπει να προσπελάσουμε τον πίνακα σελίδων στην κύρια μνήμη. Μετά γίνεται και η κανονική προσπέλαση. Δηλ. κάθε προσπέλαση μνήμης, είτε εντολές είτε δεδομένα, πρέπει να προσπελάσει πρώτα την κύρια μνήμη, αχρηστεύοντας την όλη ιδέα της cache. Και δεν έχουμε μιλήσει ακόμα για την χειρότερη περίπτωση, δηλ. η φυσική σελίδα να είναι στον σκληρό δίσκο και όχι στην μνήμη Η λύση είναι να εισάγουμε έναν επιπλέον μηχανισμό cache για να αποθηκεύουμε τον πίνακα σελίδων Οργάνωση και Σχεδιάση Η/Y (HY232) 15

Κρυφή μνήμη αναζήτησης μετάφρασης (Translation-lookaside buffer, TLB) Το TLB είναι μια μνήμη cache που αποθηκεύει μέρος του πίνακα σελίδων Συνήθως fully-associative, με μικρό μέγεθος 16-512 καταχωρήσεις, μέγεθος block 4-8 bytes και Miss rate πολύ μικρό 0,01-1% Είναι χρονικά η πρώτη μνήμη που προσπελαύνει ο επεξεργαστής για εντολές και δεδομένα Ξεχωριστά Instruction TLB (ITLB) και Data TLB (DTLB) Οργάνωση και Σχεδιάση Η/Y (HY232) 16

Σχέση TLB και Caches Σε περίπτωση TLB Hit η διεύθυνση της φυσικής σελίδας στο TLB μαζί με την μετατόπιση σελίδας (page offset) αποτελεί την φυσική διεύθυνση. H φυσική διεύθυνση χρησιμοποιείται για την προσπέλαση της cache. Οι μνήμες cache (όλων των επιπέδων) είναι virtually -indexed, physically-addressed. Οργάνωση και Σχεδιάση Η/Y (HY232) 17

Σε περίπτωση TLB Miss, η καταχώρηση πρέπει να έρθει από τον πίνακα σελίδων (page table) στο TLB. Δηλ. πρέπει να κάνουμε προσπέλαση στην κύρια μνήμη. Το λειτουργικό σύστημα το κάνει αυτό. Σχέση TLB και Caches H χειρότερη περίπτωση είναι η φυσική σελίδα που ζητάμε να μην είναι στην κύρια μνήμη, αλλά να πρέπει να την διαβάσουμε από τον σκληρό δίσκο. Αυτό είναι το σφάλμα σελίδας (page fault). Το λειτουργικό σύστημα διακόπτει την εκτέλεση του προγράμματος μας και αναλαμβάνει να διαβάσει την σελίδα από τον σκληρό δίσκο. Οργάνωση και Σχεδιάση Η/Y (HY232) 18

Σφάλμα Σελίδας (Page Fault) 1) Ο επεξεργαστής στέλνει την VA (Virtual Address) στο TLB. Συγκεκριμένα στέλνει μόνο το Virtual Page Number (VPN) 2) TLB miss. Πήγαινε στο Page Table στην κύρια μνήμη να διαβάσεις την μετάφραση από Virtual σε Physical page number 3) Το Valid bit είναι 0. Άρα Page Table Miss Page Fault 4) Tο Λειτουργικό Σύστημα διακόπτει την διεργασία του χρήστη, και αναλαμβάνει να φέρει την σελίδα (και ίσως και άλλες πολλές μαζί, prefetching) στην κύρια μνήμη. 5) Όσο συμβαίνει αυτή η μεταφορά, το Λειτουργικό Σύστημα δίνει την CPU σε άλλη διεργασία. 6) Όταν έρθει η σελίδα (faulty page), ανανεώνουμε το page table για την αρχική διεργασία. 7) Όταν έρθει η σειρά της, η αρχική διεργασία ξεκινάει πάλι από την εντολή που δημιούργησε το Page fault. Οργάνωση και Σχεδιάση Η/Y (HY232) 1 2 3 19 4

Αλγόριθμοι αντικατάστασης φυσικής σελίδας Τι θα συμβεί εάν η φυσική μνήμη είναι γεμάτη και δεν υπάρχει περιοχή για να φέρουμε μιά καινούργια φυσική σελίδα μετά από ένα σφάλμα σελίδας; Ποιά φυσική σελίδα θα πρέπει να αντικατασταθεί απο αυτές που είναι ήδη στην φυσική μνήμη; Πρόβλημα ανάλογο με την αντικατάσταση ενός cache block Μπορούμε να χρησιμοποιήσουμε LRU (Least Recently Used); Με 8GB μνήμη και 4KB μέγεθος σελίδας, έχουμε 2 Μ σελίδες. Δύσκολο να κρατήσουμε counters για τόσες σελίδες. Συνήθως χρησιμοποιούνται προσεγγιστικοί αλγόριθμοι του LRU Πχ. CLOCK αλγόριθμος 20

Αλγόριθμος CLOCK για αντικατάσταση φυσικής σελίδας Κρατάμε μιά κυκλική λίστα από τις φυσικές σελίδες της μνήμης Επίσης έναν pointer (hand) στην τρέχουσα σελίδα της λίστας Όταν μία φυσική σελίδα προσπελαύνεται (read/write), θέτουμε το Reference Bit (R) στο αντίστοιχο page table entry (PTE) Αντικαθιστούμε την πρώτη φυσική σελίδα στην μνήμη που συναντάμε όταν διασχίζουμε την λίστα ξεκινώντας από την τελευταία θέση του pointer και που έχει R=0 Κατά την διάρκεια του αλγορίθμου, θέτουμε R=1 σε όλες τις σελίδες που συναντούμε 21

Άλλο πρόβλημα: Μέγεθος του Page Table 64-bit Virtual Address VPN Page Offset 52-bit 12-bit page table 28-bit concat 40-bit PA Έστω 64-bit VA και 40-bit PA, με 4ΚΒ μέγεθος σελίδας. Πόσο μεγάλο είναι το page table? 2 52 εισόδους * ~4 bytes 2 54 bytes! και αυτό μόνο για μία διεργασία όσο μικρή και να είναι 22

Λύση: Πίνακας σελίδας πολλαπλών επιπέδων Αρχιτεκτονική Intel x86* *Η Intel χρησιμοποιεί τους όρους linear address (αντί virtual address) και real address (αντί physical address) Σε κάθε context switch, το λειτουργικό σύστημα κάνει switch και φέρνει το νέο CR3 στον καταχωρητή. 23

Προστασία μνήμης (Memory Protection) Μέσω της έμμεσης προσπέλασης, η εικονική μνήμη εμποδίζει μια διεργασία να διαβάσει και να γράψει το κομμάτι της φυσικής μνήμη μιας άλλης διεργασίας. Για να το εξασφαλίσουμε αυτό θα πρέπει να εμποδίσουμε μία διεργασία (user process) να μπορεί να αλλάξει τα περιεχόμενα του πίνακα σελίδων. Αυτό επιτυγχάνεται ως εξής: Ο επεξεργαστής λειτουργεί σε δύο καταστάσεις (modes): user & kernel mode. To λειτουργικό σύστημα τρέχει πάντα όταν η CPU είναι σε kernel mode. H κατάσταση του πίνακα σελίδων μπορεί να αλλάξει μόνο από μία διεργασία που τρέχει σε kernel mode. Τι μπορεί να αλλάξει σε kernel mode? Πίνακα σελίδων (Page Table) Καταχωρητής πίνακα σελίδων (Page Table Base Pointer) To TLB Οργάνωση και Σχεδιάση Η/Y (HY232) 24

Προστασία μνήμης (Memory Protection) Η πληροφορία για το εάν μια σελίδα μπορεί να προσπελασθεί από μία διεργασία περιέχεται μέσα στο page table της διεργασίας Αποθηκεύουμε επιπλέον control bits σε κάθε είσοδο στο page table που δείχνουν το επίπεδο προστασίας κάθε σελίδας Read/Write/Execute Η επιβολή του ελέγχου προστασίας (memory protection) από το σύστημα γίνεται κατά την διάρκεια της μετάφρασης της εικονικής μνήμης Τα συστήματα εικονικής μνήμης έχουν δύο βασικούς ρόλους: 1. Μετάφραση από εικονική σε φυσική μνήμη 2. Έλεγχος προσπέλασης μνήμης (memory protection) 25

Προστασία μνήμης (Memory Protection) Extra permission bits που ελέγχονται σε κάθε προσπέλαση στην μνήμη Δημιουργείται exception και διακοπή προγράμματος εάν υπάρξει παράβαση από κάποια προσπέλαση στην μνήμη (Access Protection exception). Process i: Process j: VP 0: VP 1: VP 2: VP 0: VP 1: VP 2: Read? Write? Yes Yes No Page Tables No Yes No Read? Write? Yes Yes No Yes No No Physical Addr PP 6 PP 4 XXXXXXX Physical Addr PP 6 PP 9 XXXXXXX Memory 26 PP 0 PP 2 PP 4 PP 6 PP 8 PP 10 PP 12

Επίπεδα Προστασίας στον x86 Πηγή: https://en.wikipedia.org/wiki/protection_ring 27

Virtual Address Memory Sharing Δύο διεργασίες μπορούν να μοιράζονται την ίδια φυσική μνήμη με το να επιτρέπουν τους πίνακες σελίδων τους να δείχνουν στις ίδιες φυσικές διευθύνσεις Για παράδειγμα, εάν τρέχετε δύο αντίγραφα του ίδιου προγράμματος, το λειτουργικό σύστημα θα επιτρέψει την ταυτόχρονη προσπέλαση της ίδιας φυσικής μνήμης. Program A Physical Memory Disk Program B Virtual Address Οργάνωση και Σχεδιάση Η/Y (HY232) 28

Prefetching Πολλά συστήματα υψηλής απόδοσης κάνουν aggressive data and instruction prefetching. To prefetching διακόπτεται αμέσως όταν προκαλέσει ένα TLB miss. Δεν θέλουμε το prefetch να είναι υπεύθυνο για τόσο μεγάλη διακοπή της ροής του προγράμματος. Οι HW prefetchers φέρνουν δεδομένα μέσα σε μία σελίδα (page). Συνήθως δουλεύουν με φυσικές μνήμες και δεν χρησιμοποιούν το TLB. Οργάνωση και Σχεδιάση Η/Y (HY232) 29

Μνήμες σε πραγματικό σύστημα Core-i7 ιεραρχία μνήμης Οργάνωση και Σχεδίαση Η/Υ (HY232) 30