Weatherly (2009) MinixVM: An Implementation of Virtual Memory in Minix 3.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Λειτουργικό Σύστημα (Operating System) 1o μέρος
Advertisements

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
ΔΙΑΓΡΑΜΜΑΤΑ ΥΛΟΠΟΙΗΣΗΣ Διαγράμματα Συστατικών Λογισμικού (Component Diagrams) Διαγράμματα Ανάπτυξης (Deployment Diagrams)
5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
Client Access Internet Explorer. Εισαγωγή aXes Terminal Server είναι ένα πρωτοποριακό προϊόν το οποίο μετατρέπει μεταφέρει άμεσα τις οθόνες του iSeries.
Λειτουργικό Σύστημα ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ENOTHTA B.1.3 (1)
ΕΙΣΑΓΩΓΗ ΣΤΑ ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΑΣ
Λειτουργικά Συστήματα
ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ.
Κεφάλαιο 1ο Εισαγωγή σε Λειτουργικά Συστήματα Ορισμός ΛΣ
Το υλικο του Υπολογιστη
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Λειτουργικό Σύστημα 2ο μέρος.
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Φροντιστήριο Εργ. Λειτουργικών Συστημάτων Αλγόριθμοι ανάθεσης μνήμης.
Message Passing Interface (MPI)
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
Λειτουργικά Συστήματα Ι « Παραδοσιακά Λειτουργικά Συστήματα »
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
Λειτουργικά Συστήματα Ι
Προηγμένοι Μικροεπεξεργαστές 2006 – 2007 Παρουσίαση Projects.
Προηγμένοι Μικροεπεξεργαστές 2007 – 2008 Παρουσίαση Projects.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Σύγχρονοι Εξυπηρετητές του Ιστού Παραδείγματα και Συγκρίσεις Πληροφοριακά Συστήματα για Μάρκετινγκ & Δημοσκοπήσεις.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Κεφάλαιο 2 Το Εσωτερικό του υπολογιστή
Message Passing Interface (MPI) Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων Αθήνα, Δεκέμβριος 2002.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Τεχνολογία TCP/IP TCP/IP internet είναι ένα οποιοδήποτε δίκτυο το οποίο χρησιμοποιεί τα πρωτόκολλα TCP/IP. Διαδίκτυο (Internet) είναι το μεγαλύτερο δίκτυο.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Διεργασίες.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
1 Διαχείριση Μνήμης Γενικά Εναλλαγή (Swapping) Συμπαγής Εκχώρηση (Contiguous Allocation) Σελιδοποίηση (Paging) Κατάτμηση (Segmentation) Κατάτμηση με Σελιδοποίηση.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
Η Κεντρική Μονάδα Συστήματος Εισαγωγή στην Πληροφορκή 1 Η κεντρική μονάδα του συστήματος (base unit ή system unit) αποτελεί τον πυρήνα ενός υπολογιστή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Καταχωρητές (Registers) (1/3) Εισαγωγή στην Πληροφορκή1 Οι Καταχωρητές (Registers) είναι ειδικές θέσεις μνήμης υψηλής ταχύτητας που χρησιμοποιούνται για.
1 Λειτουργικά Συστήματα Ενότητα 9 : Ιδεατή Μνήμη 1/2 Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Διαχείριση Πόρων (1/10) Εισαγωγή στην Πληροφορκή 1 Στα πρώτα χρόνια των υπολογιστών, όπου μόνο ένα πρόγραμμα είχε τη δυνατότητα να βρίσκεται στην κύρια.
Θέμα Πτυχιακής Εργασίας
στην Επιστήμη των Υπολογιστών Κωδικός Διαφανειών: MKT110
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Θεωρήστε το λογικό χώρο διευθύνσεων που αποτελείται από 8 σελίδες των 1024 λέξεων (word) η καθεμία, που απεικονίζεται σε φυσική μνήμη 32 πλαισίων. Πόσα.
Arp και DHCP 3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)
ΜΙΚΡΟΕΛΕΓΚΤΕΣ-ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ
Κατανεμημένα Συστήματα
Java DataBase Connectivity
στην Επιστήμη των Υπολογιστών Κωδικός Διαφανειών: MKT110
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,
Τεχνολογίες εικονικών μηχανών και χρήσεις αυτών
Εισαγωγή στα Λειτουργικά Συστήματα (ΛΣ) Operating Systems (OS)
Κεφάλαιο 7: Διαδικτύωση-Internet
Συγγραφέας: Ζαγκότας Στεφανος Επιβλέπων Καθηγητής: Ούτσιος Ευάγγελος
ΔΙΑΓΡΑΜΜΑΤΑ ΥΛΟΠΟΙΗΣΗΣ Διαγράμματα Συστατικών Λογισμικού (Component Diagrams) Διαγράμματα Ανάπτυξης (Deployment Diagrams)
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ
Μεταγράφημα παρουσίασης:

Weatherly (2009) MinixVM: An Implementation of Virtual Memory in Minix 3

Σκοπός Η ενσωμάτωση υποστήριξης για virtual memory στο Minix 3 Βάση τροποποιήσεων η έκδοση 3.1.3α

Προβλήματα Ανάθεση ολόκληρου του process – Οδηγεί σε εσωτερικό κατακερματισμό της μνήμης οι διεργασίες δε χρησιμοποιούν πάντοτε όλη τη μνήμη που ανατίθεται – Και εξωτερικό κατακερματισμό Σχηματισμός πολλών οπών που είναι δύσκολο να χρησιμοποιηθούν – Στο Minix τουλάχιστον το read-only κομμάτι διαμοιράζεται στα processes Αλλά τα προβλήματα παραμένουν

Προβλήματα Η ανάθεση μνήμης γίνεται στατικά – Όλοι οι πόροι πρέπει να δηλωθούν στον πηγαίο κώδικα – Ο κακός υπολογισμός των απαιτούμενων πόρων οδηγεί σε προβλήματα κατά το run-time Τερματισμός λόγω ανεπαρκούς μνήμης Σημαντικός εσωτερικός κατακερματισμός – Δύσκολο το porting προγραμμάτων καθώς τα περισσότερα θεωρούν τη μνήμη ως «άπειρη» Virtual memory!

Swapping Υπάρχει περιορισμένη υποστήριξη για swapping – Η ανάθεση μνήμης γίνεται σε κομμάτια που αφορούν όλη τη διεργασία – Μπορεί να γίνει swap, αλλά λόγω του τρόπου ανάθεσης μνήμης, πρέπει να γίνει swap όλο το process – Μπορεί να καταλήξει πολύ πιο γρήγορα σε καταστάσεις thrashing

MinixVM Βασική διαφορά, ο ορισμός εξ΄αρχής του memory object Στο minix 3, memory object -> η ανάθεση κομματιού μνήμης που χρειάζεται η διεργασία Στο minixVM, η ανάθεση γίνεται σε διακριτές σελίδες (pages) Η διαχείριση των σελίδων θα γίνει μέσω ενός νέου server (page server)

Έννοιες Για τη χρήση VM συνήθως χρειάζονται – Hardware – Page fault handler – Page allocator – Process manager – File system interface Μπορούν να τροποποιηθούν υπάρχοντα στοιχεία του minix 3 – Page fault handler στο kernel – PM για δρομολόγηση page-fault μηνυμάτων – VFS για την ανάγνωση εκτελέσιμων προγραμμάτων όταν γίνει page fault Για τον καλύτερο συντονισμό – page server

Page server Διαχείριση του address space για όλες τις διεργασίες Καθορισμός αν κάποιο page fault αντιπροσωπεύει έγκυρη απαίτηση πρόσβασης στη μνήμη για κάποια διεργασία Ο page server γίνεται memory manager, καθώς πρέπει να έχει τη διαχείριση και του physical address space

Page server Δομές δεδομένων – Process metadata Process ID, endpoint number Ακόμα ένας server που πρέπει να γνωρίζει για τη δημιουργία/τερματισμό διεργασιών – Hardware page tables Δομές που διαβάζει απ’ευθείας το MMU To kernel δε μπορεί να κάνει απ’ευθείας δυναμική εκχώρηση μνήμης αλλά μπορεί να διαβάσει όλες τις διευθύνσεις φυσικής μνήμης Υλοποίηση των hardware page tables σε userspace program

Page server Δομές δεδομένων – Supplemental page tables Χειρισμός περιπτώσεων όπου η μνήμη έχει εκχωρηθεί αλλά δε βρίσκεται στο κύριο υλικό (η σελίδα έχει γίνει swapped out στο δίσκο) Ο server πρέπει να γνωρίζει ποιές από τις σελίδες στο δίσκο ανήκουν σε ποιά διεργασία ώστε να μπορεί να ελέγχει την εγκυρότητα της αίτησης πρόσβασης σε αυτές

Υλοποίηση Στο minix, το kernel και οι κρίσιμοι servers γίνονται compile σε ένα ενιαίο binary το οποίο φορτώνεται από boot monitor κατά τη διαδικασία εκκίνησης Έτσι δεν έχει νόημα να φορτώσουμε τον page server πριν από άλλες υπηρεσίες καθώς τέτοια διαδικασία δεν υποστηρίζεται. Κατάληξη: οι servers τρέχουν σε non-paged mode

Περιορισμοί υλοποίησης Κάποιες διεργασίες δε μπορούν να γίνουν paged – Servers Περιορισμένο heap space – Καθώς ο page server δεν είναι paged, έχει τον ίδιο περιορισμό του heap με τις παραδοσιακές διεργασίες, καθώς απαιτεί στατική εκχώρηση μνήμης.

Βασικές αρχές Εκκίνηση 1.Το boot monitor φορτώνει και περνάει τον έλεγχο στο kernel 2.Το kernel κάνει αρχικοποιήση και μεταφέρει τον έλεγχο στον PM 3.O PM ζητά το χάρτη της μνήμης από το boot monitor, καθώς αυτό ξέρει ποιά κομμάτια μνήμης χρησιμοποιούνται ήδη 4.Το boot monitor στέλνει το χάρτη 5.O PM επιστρέφει τον έλεγχο στο kernel 6.Αργότερα το kernel μεταφέρει τον έλεγχο στον κώδικα αρχικοποίησης του page server 7.Ο page server ζητά το χάρτη της μνήμης από τον PM 8.Ο PM στέλνει το χάρτη 9.O Page server επιστρέφει τον έλεγχο στο kernel. Αν δεν χρειάζονται αρχικοποίηση άλλοι servers, το kernel εκτελεί την init.

Exec notification 1.O χρήστης ζητά ένα exec() στέλνοντας μήνυμα στον PM (blocking call οπότε η διεργασία σταματά μέχρι την εκτέλεση του exec) 2.O PM στέλνει μήνυμα στον page server ότι ξεκινά μια νέα διεργασία (blocking call γιατί ο PM χρειάζεται το page directory base address από τον page server για να συνεχίσει) 3.O page server απαντά στον PM με το page directory base register για το καινούριο process 4.O PM ειδοποιεί το kernel (sys_exec()) για την ολοκλήρωση του exec (blocking call καθώς ο PM πρέπει να απαντήσει συγχρονισμένα στην καλούσα διεργασία) 5.Το kernel απαντά με το exec status 6.Ο PM περνά το exec status στην καλούσα διεργασία

Page fault handling 1.To hardware εντοπίζει ένα page fault exception και στέλνει τον έλεγχο στον σημείο που ορίζει το kernel (page fault handler) 2.To kernel στέλνει non- blocking ειδοποίηση στον PM 3.Ο PM επεξεργάζεται την ειδοποίηση από το kernel και επιστρέφει μήνυμα για να πάρει τις λεπτομέρειες του page fault. Μπλοκάρει μέχρι να λάβει απάντηση 4.To kernel επιστρέφει τις λεπτομέρειες

Page fault handling 5.Ο PM στέλει μήνυμα στον page server για να ελέγξει την εγκυρότητα του page fault request 6.O page server απαντά. Αν δεν είναι έγκυρο, το PM αναφέρει στο kernel 7.Αλλιώς στέλνει μήνυμα στο VFS για να διαβάσει τη σχετική σελίδα. 8.O VFS παντά με το σχετικό status 9.O PM στέλνει μήνυμα στον page server για να ειδοποιήσει για το αποτέλεσμα της επεξεργασίας του page fault 10.O PM στέλει μήνυμα στο kernel, για να ειδοποιήσει για το αποτέλεσμα της επεξεργασίας του page fault

Χρήση registers CR0 – το paging είναι διαθέσιμο όταν το 31 ο bit αυτού του register είναι ενεργοποιημένο CR2 – με τη λήψη ενός page fault exception, το υλικό βάζει στο register αυτό τη γραμμική διεύθυνση που προκάλεσε το fault CR3 – περιέχει τη διεύθυνση της βάσης για τα hardware page tables και αλλάζει σε κάθε context switch διεργασίας

Σύνοψη αλλαγών Kernel – Register access Για αρχιτεκτονική Intel, φορτώνεται το register CR2 που περιέχει τη γραμμική διεύθυνση που προκάλεσε το page fault Προστέθηκε μια assembly routine ώστε η τιμή να μπορεί να περάσει τον page fault handler – Page fault exception handler Η default δράση ήταν να στέλνεται ένα SIGSEGV σήμα στην διεργασία που προκάλεσε το πρόβλημα. Τώρα διαβάζεται η διεύθυνση από το CR2 και ειδοποιείται ο PM. – VM mapping Προστέθηκαν συναρτήσεις για τη μετάφραση εικονικών σε πραγματικές διευθύνσεις (mapping) – Exec system call Τροποποιήθηκε το SYS_EXEC ώστε να καταγράφει το page directory base address στο process data structure του kernel, με σκοπό να είναι διαθέσιμο στο register CR3 κατά τη διάρκεια ενός context switch – Process switch Το kernel πρέπει να φορτώσει το CR3 με το base address των hardware page tables. Τροποποιήθηκε ο σχετικός κώδικας.

Σύνοψη αλλαγών PM – Memory management Μεταφορά της διαχείρισης μνήμης στον page server, ώστε να έχει πλήρη έλεγχο του physical address space Αλλαγή των συναρτήσεων allocate, free, copy free memory holes σε μηνύματα προς τον page server – Page server initialization Αφού ο page server τρέχει μετά τον PM, με ανταλλαγή μηνυμάτων παίρνει το χάρτη της μνήμης από τον PM – Page fault processing Page fault exceptions: από το kernel στον PM με χρήση του HARD_INT προς τον PM (ανορθόδοξο αλλά ο μόνος τρόπος). Page fault validation: προστέθηκε μηχανισμός επικοινωνίας με τον page server ώστε να γνωρίζει ο PM για την εγκυρότητα της αίτησης Page reading: προστέθηκε μηχανισμός επικοινωνίας με τον VFS για τα αποτελέματα της ανάγνωσης από το δίσκο.

Σύνοψη αλλαγών PM – Exec processing Ελαφρά τροποποίηση ώστε να μη φορτώνεται το executable από το δίσκο, αφήνοντάς το να γίνει paged κατ’απαίτηση αργότερα. Υποστήριξη ειδοποίησης προς τον page server VFS – Executable data addition Πρόσθεση πληροφοριών στο vfs image κάποιου process ώστε να διατηρούνται: – Το inode του εκτελέσιμου – Το endpoint του file system driver για το file system στο οποίο βρίσκεται το εκτελέσιμο – Το μήκος του header του εκτελέσιμου για τον υπολογισμό offsets καθώς διαβάζονται τμήματά του προς τη μνήμη – Το μήκος του text section του εκτελέσιμου – Το μήκος της αρχικοποιημένης data section του εκτελέσιμου – Το μήκος της μη-αρχικοποιημένης data section του εκτελέσιμου

Σύνοψη αλλαγών VFS – Page reading Κώδικας για την ανάγνωση σελίδων από το file system Ανάγνωση ενός chunk μήκους μιας σελίδας ή του binary, αν είναι μικρότερο Αν αποτελείται από initialized data, τότε διαβάζεται όλο το page Αν αποτελείται από uninitialized data, τότε το page διαβάζεται κενό Aν αποτελείται από μείγμα, διαβάζεται το αρχικοποιημένο κομμάτι και το υπόλοιπο αφήνεται κενό

Νέα μηνύματα Kernel: 1 PM: 7 VFS: 1 Page Server: 7 Σύνολο 16 νέα μηνύματα

Ανάλυση Σετ κοινών λειτουργιών compression, decompression, archiving, compiling Χρήση ενός tarball (180mb, 4242 αρχεία) kbuild – χρόνος compilation για τους system servers & kernel (cc) Παρατηρείται αρκετό overhead με την paged έκδοση (1.08 φορές πιο αργά κατά ΜΟ).

Ανάλυση Sequential scan Δήλωση array τιμών από 2-64 σε δυνάμεις του 2 Αρχικοποίηση του array Απομείωση σε scalar Εκτύπωση του αποτελέσματος Περίπτωση Α: πρόγραμμα σε c και εκτέλεση Περίπτωση Β: PERL script (εκτελέσιμο το perl)

Ανάλυση Έντονες διαφορές που έχουν σχέση με τον τρόπο που εκτελούνται τα προγράμματα (compiled vs. interpreted)

Συμπέρασμα Το paging προκαλεί σε όλες τις περιπτώσεις overhead και μειώνει την απόδοση Οφείλεται περισσότερο στα συχνά mode switches (από user σε kernel mode και το αντίστροφο), παρά σε απαιτήσεις επεξεργαστικής ισχύος. Καθώς είναι αναπόφευκτα αυτά τα mode switches, σε ένα microkernel σύστημα η υλοποίηση paging και virtual memory πάντα θα είναι αργότερη από κάποιο αντίστοιχο μονολιθικό σύστημα