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

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

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

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

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

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

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Κεφάλαιο 3. Διδακτικοί Στόχοι

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Εισαγωγικά & Βασικές Έννοιες

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

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

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

ΛΟΓΙΣΜΙΚΟ (software)

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

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1

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

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

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

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

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Εισαγωγικά & Βασικές Έννοιες

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

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

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

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

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Λογισμικό Υπολογιστών (Software) ΜΥΥ-106 Εισαγωγή Η/Υ και Πληροφορική

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

Περιγραφή και Έλεγχος ιεργασιών

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

Λειτουργικά συστήµατα. Λογισμικό Συστήματος 1

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

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

ΠΛΕ- 027 Μικροεπεξεργαστές 11ο μάθημα: Είσοδος- Εξοδος (Ε/Ε)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

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

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

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

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

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

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

Transcript:

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

Επικοινωνία με περιφερειακά Αρτηρία εισόδου-εξόδου, διευθύνσεις, εγγραφές αναγνώσεις Διαδικασία εξόδου έλεγχος κατάστασης περιφερειακού περίμενε μέχρι έτοιμο γράψε δεδομένα δώσε εντολή (π.χ. αποστολή) Ονομάζεται polling (σταθμοσκόπηση) Αντίστοιχα για είσοδο, αλλά... χάσιμο χρόνου: οι χρόνοι απόκρισης περιφερειακών είναι τεράστιοι αν δεν ξέρουμε πότε θα έρθουν δεδομένα εισόδου, π.χ. πληκτρολόγιο; 2

Διακοπές (interrupts) Μηχανισμός ειδοποίησης του επεξεργαστή από περιφερειακά περισσότερα σε λίγο Αποφεύγεται η αναμονή μέχρι το περιφερειακό να είναι έτοιμο καλύπτεται και η περίπτωση «αναπάντεχης» εισόδου (π.χ. πάτημα πλήκτρου) Για μεγάλες μεταφορές δεδομένων (π.χ. αρχεία) πάρα πολλές και συχνές διακοπές 3

Άμεση προσπέλαση μνήμης Αγγλικός όρος: Direct Memory Access DMA Μεταφορά δεδομένων από κύρια μνήμη σε περιφερειακό (ή το αντίστροφο) χωρίς τη μεσολάβηση του επεξεργαστή μέσω «πράκτορα» του επεξεργαστή Ειδικός ελεγκτής DMA δέχεται οδηγίες από τον επεξεργαστή (διεύθυνση μνήμης, ανάγνωση ή εγγραφή, πόσα bytes, ) κάνει τη μεταφορά, συν. χρησιμοποιώντας σύστημα διακοπών ενημερώνει τον επεξεργαστή (με διακοπή) όταν ολοκληρωθεί η μεταφορά ή αν γίνει κάποιο σφάλμα 4

Απρόβλεπτες καταστάσεις Γενικά ένα πρόγραμμα πρέπει να προβλέπει και να χειρίζεται όλες τις δυνατές καταστάσεις π.χ. τι θα κάνει το ρομπότ του παραδείγματος αν ξεμείναμε από αλεύρι; Κάποιες μπορούν να προβλευτούν, αλλά είναι τόσο σπάνιες ώστε το κόστος συνεχόμενου ελέγχου είναι μεγαλύτερο από αυτό χειρισμού της κατάστασης Χρειάζονται πολύπλοκους χειρισμούς πολλές λεπτομέρειες να εξεταστούν Η διαχείριση γίνεται με λογισμικό, αλλά χρειάζεται υποστήριξη από το υλικό 5

Απρόβλεπτες καταστάσεις - 2 Γενικός όρος: exception Αν είναι λόγω εξωτερικής (από το πρόγραμμα που τρέχει στον επεξεργαστή) αιτίας, ονομάζονται διακοπές (interrupts) Παραδείγματα Εσωτερικές αιτίες: υπερχείλιση αποτελέσματος υπολογισμού (μπορεί και να αγνοηθεί), διαίρεση με το 0, προσπάθεια προσπέλασης θέσης μνήμης που δεν ανήκει στο πρόγραμμα, απόπειρα εκτέλεσης άγνωστης ή απαγορευμένης εντολής Εξωτερικές αιτίες: πάτημα πλήκτου, ανίχνευση λάθους υλικού (μνήμη, δίσκος,...) 6

Απρόβλεπτες καταστάσεις - 3 Ο χειρισμός γίνεται από το Λ.Σ. με βοήθεια από το υλικό έτσι οι «μηχανές» πάνω από τη μηχανή Λ.Σ. δεν χρειάζεται να προβλέπουν τέτοια προβλήματα Το υλικό ανιχνεύει τις καταστάσεις ή διακόπτεται από εξωτερικά μηχανήματα (μνήμη, περιφερειακά) διακόπτει τη διεργασία (κρατώντας αρκετές πληροφορίες ώστε να μπορεί να συνεχίσει αργότερα) και καλεί το Λ.Σ. που χειρίζεται την κατάσταση Πώς ξέρει το Λ.Σ. τι συνέβει; Είτε η αιτία κωδικοποιείται σε ένα ειδικό καταχωρητή που εξετάζει το Λ.Σ. το υλικό ξεκινάει διαφορετική υπορουτίνα του Λ.Σ. ανάλογα με τί συνέβη (interrupt/exception vector) 7

Κλήσεις συστήματος Με αυτό το μηχανισμό γίνονται και οι κλήσεις συστήματος (system calls) υπορουτίνες για διάφορες «δουλειές» π.χ. άνοιγμα αρχείου Αντί για κάποιο απρόβλεπτο πρόβλημα, το πρόγραμμα εκτελεί μια ειδική εντολή που προκαλεί διακοπή Γιατί όχι απευθείας κλήση μιας υπορουτίνας του Λ.Σ.; Aσφάλεια. Ο χρήστης μπορεί να έχει κακούς σκοπούς (ή το πρόγραμμα έχει λάθος) και να καλέσει τμήμα του Λ.Σ. που π.χ. παρακάμπτει τον ελέγχο «ιδιοκτησίας» αρχείων. Με το σύστημα διακοπών ο χρήστης μπορεί να διαλέξει μια υπορουτίνα από ένα (ασφαλές) σύνολο. Όχι όποια θέλει 8

Καταστάσεις λειτουργίας Ο επεξεργαστής έχει 2 καταστάσεις λειτουργίας (modes) ανάλογα αν εκτελεί ένα πρόγραμμα του ΛΣ ή του χρήστη σε κατάσταση συστήματος (system/privileged mode), όλες οι εντολές επιτρέπεται να εκτελεστούν και όλες οι διευθύνσεις μνήμης να προσπελαστούν σε κατάσταση απλού χρήστη (user mode), παράνομες εντολές, προσπελάσεις προκαλούν διακοπή του προγράμματος (interrupt) Κάθε διακοπή, αλλάζει τη κατάσταση του επεξεργαστή σε κατάσταση συστήματος και εκτελεί ένα συγκεκριμένο πρόγραμμα του Λ.Σ. ανάλογα με το είδος της διακοπής Κλήσεις συστήματος χειρίζονται παρόμοια με τις διακοπές 9

Κατάσταση συστήματος Όλες οι εντολές του ISA μπορούν να εκτελεστούν υπάρχουν κάποιες που επιτρέπονται μόνο σε κατάσταση συστήματος. Γιατί; Επιτρέπεται η πρόσβαση σε όλη τη μνήμη θα δούμε σε λίγο το μηχανισμό διαχείρισης μνήμης Οι (περισσότερες) διακοπές και exceptions μπορούν να αγνοηθούν το σβήσιμο του διακόπτη δεν μπορεί να αγνοηθεί ποτέ! μόνο για λίγο μερικές κρίσιμες εντολές αλλιώς μπορεί να υπάρξει πρόβλημα (δεν αποκρίνεται ο υπολογιστής) 10

Επιστροφή σε κατάσταση χρήστη Η κατάσταση συστήματος είναι προσωρινή Είτε το Λ.Σ. καλέστηκε από μια διεργασία για να εκτελέσει μία κλήση συστήματος ή έγινε μια διακοπή/exception Σε κάθε περίπτωση πρέπει να επιστρέψουμε στη εκτέλεση προγράμματος/διεργασίας που διακόπηκε Υπάρχει μια ειδική εντολή που επιστρέφει στην επόμενη εντολή της διεργασίας που διακόπηκε και αλλάζει την κατάσταση του επεξεργαστή σε κατάσταση χρήστη ταυτόχρονα 11

Διεργασία Το στιγμιότυπο ενός προγράμματος που εκτελείται Τα σύγχρονα Λ.Σ. επιτρέπουν πολλές ενεργές διεργασίες από έναν ή περισσότερους χρήστες πολλά ενσωματωμένα συστήματα τρέχουν μόνο μία (ή δεν έχουν Λ.Σ.) Σε έναν μονοπύρηνο επεξεργαστή μόνο μία διεργασία τρέχει κάθε στιγμή σε πολυπύρηνους, όσοι είναι οι πυρήνες Αλλά οι χρήστες έχουν την αίσθηση της ταυτόχρονης εκτέλεσης πολλών διεργασιών ταυτόχρονα ο χρόνος του επεξεργαστή μοιράζεται 12

Πολυδιεργασία Μονοδιεργαστικό σύστημα (single-task system): waiting for I/O processor idle process running system call for I/O process running I/O completion (interrupt) Πολυδιεργαστικό σύστημα (multi - tasking system): OS interrupt handler running OS interrupt handler running process 1 running system call for I/O process 2 running Process 1 running I/O completion 13

Χρονομερισμός Αν μια διεργασία δεν κάνει κλήση συστήματος «κρατάει» τον επεξεργαστή μέχρι να τελειώσει; Υπάρχει ένα χρονόμετρο (timer) που διακόπτει τον επεξεργαστή κάθε λίγα ms ένα απλό «περιφερειακό» Η διακοπή προκαλεί αλλαγή κατάστασης και το Λ.Σ. τρέχει το χρονομεριστή (scheduler) αποφασίζει ποια είναι η επόμενη διεργασία που θα τρέξει, βάση κάποιου αλγόριθμου Όλες οι πληροφορίες της διεργασίας που διακόπτεται καταγράφονται όπως σε κοινές διακοπές (τιμές καταχωρητών,...), αλλά και επιπλέον πληροφορίες επιπέδου μηχανής Λ.Σ. (ανοιχτά αρχεία,...) 14

Κατάσταση διεργασίας I/O COMPLETION READY BLOCKED DISPATCH TIMEOUT I/O REQUEST RUNNING 15

Διαχείριση, προστασία μνήμης Σε ένα πολυδιεργαστικό σύστημα χρειάζεται προσεκτική διαχείριση μνήμης Κάθε διεύθυνση μνήμης που «παράγει» μια διεργασία δεν αφορά τη φυσική μνήμη (physical memory) του υπολογιστή, αλλά μια εικονική μνήμη (virtual memory) που είναι ξεχωριστή για κάθε διεργασία Αλλά η φυσική μνήμη του υπολογιστή είναι μία και μοιράζεται από τις διεργασίες που είναι ενεργές Χρειάζεται ένα βήμα μετατροπής διεύθυνσης: κάθε εικονική διεύθυνση μεταφράζεται σε φυσική πρίν γίνει η προσπέλαση στη μνήμη 16

Εικονική μνήμη Όλες οι διευθύνσεις που παράγει μια διεργασία είναι εικονικές εκτός από το κατάλληλο τμήμα του Λ.Σ. που διαχειρίζεται την μνήμη Ακόμα και ο program counter (PC ή IP) έχει εικονικές διευθύνσεις Κάθε διεύθυνση μεταφράζεται αυτόματα σε φυσική διεύθυνση Η αντιστοίχιση εικονικών διευθύνσεων σε φυσικές καθορίζεται από το Λ.Σ. Είναι σημαντικό να γίνει γρήγορα γιατί οι προσπελάσεις στη μνήμη είναι συχνές Υπάρχει υποστήριξη από το υλικό: memory management unit (MMU) 17

Εικονική μνήμη - 2 Κάθε διεργασία νομίζει πως όλη η μνήμη είναι διαθέσιμη γι αυτήν Αν ο επεξεργαστής έχει 64bit για διευθύνσεις, τότε νομίζει πως έχει στη διάθεσή της όλη τη μνήμη από 0 2 64-1 Στην πραγματικότητα οι σημερινοί Η/Υ χρησιμοποιούν περίπου 44 bit και τα υπόλοιπα αγνοούνται (δεν συνδέονται) Η εικονική μνήμη λύνει πολλά προβλήματα: Τι γίνεται αν κάποιος προσθέσει παραπάνω (φυσική) μνήμη; Πώς προστατεύνται τα δεδομένα/κώδικας μιας διεργασίας από μια άλλη; Σε ποιά θέση μνήμης φορτώνεται ένα πρόγραμμα; 18

Πώς λύνονται τα προβλήματα Επέκταση φυσικής μνήμης; η μετάφραση από εικονική σε φυσική μνήμη αλλάζει ώστε να μπορεί να χρησιμοποιήσει την επιπλέον μνήμη Προστασία; Η μετάφραση διευθύνσεων εξασφαλίζει ότι δύο διεργασίες έχουν εντελώς χωριστά τμήματα φυσικής μνήμης Σε ποιά θέση μνήμης φορτώνεται ένα πρόγραμμα; Δεν έχει σημασία. Το πρόγραμμα χρησιμοποιεί παντού εικονικές διευθύνσεις εσωτερικά 19

Εικονική μνήμη και δίσκος Το σύνολο της (εικονικής) μνήμης που χρησιμοποιούν οι διεργασίες μπορεί να υπερβαίνει τη χωρητικότητα της φυσικής μνήμης Κάποια τμήματα μνήμης μεταφέρονται στο σκληρό δίσκο! αυτά που χρησιμοποιούνται λιγότερο συχνά όταν χρειαστούν αντιγράφονται από το δίσκο στη φυσική μνήμη και το αντίστοιχο τμήμα γράφεται στο δίσκο 20

Εικονική και φυσική μνήμη 2 12 Virtual Address Space 0 A B Hardware/OS Physical Memory 0 A C C 2 24-1 B OS VM manager 2 32-1 D D Disk 21

Νήματα και διεργασίες Σύγχρονα ΛΣ υποστηρίζουν νήματα (threads) Το νήμα είναι ένα πρόγραμμα σε εκτέλεση αλλά έχει περιορισμένες ιδιότητες/δυνατότητες Ανήκει σε μια διεργασία δλδ μια διεργασία μπορεί να έχει πολλά νήματα Όλα τα νήματα μιας διεργασίας μοιράζονται την ίδια εικονική μνήμη επικοινωνούν με κοινές μεταβλητές 22

Φόρτωση και εκτέλεση Πώς ξεκινάει ένα πρόγραμμα να τρέχει; Πριν δούμε αυτή τη διαδικασία, ας δούμε λίγο παραπάνω τη διαδικασία μετάφρασης Γενικά ένα πρόγραμμα αποτελείται από πολλά αρχεία πηγαίου κώδικα που μεταγλωττίζονται ανεξάρτητα κάθε αρχείο.c μεταγλωττίζεται σε ένα.ο (object file/code) Γιατί πολλά αρχεία πηγαίου κώδικα; Αργότερα όλα τα object files συνδέονται μεταξύ τους (link) και δημιουργείται το τελικό εκτελέσιμο πρόγραμμα Σε μικρά, απλά προγράμματα το στάδιο της σύνδεσης είναι κρυμμένο 23

Σύνδεση Ο linker βάζει τον κώδικα μηχανής όλων των τμημάτων μαζί ώστε να είναι συνεχόμενα στην (εικονική) μνήμη ακολουθώντας κάποιες συμβάσεις του Λ.Σ. Μπορεί να χρειαστεί να άλλαξει λίγο (relocation) κάποιες εντολές διακλάδωσης γιατί ο κωδικας έχει πλέον μετακινηθεί ο μεταγλωτιστής παρέχει σχετικές πληροφορίες στα object files και συνδέει τα τμήματα: οι κλήσεις υπορουτινών που βρίσκονται σε άλλο τμήμα αλλάζουν ώστε να χρησιμοποιούν τη διεύθυνση όπου ξεκινάει η υπορουτίνα 24

Δυναμική σύνδεση Η σύνδεση που είδαμε πριν λέγεται στατική σύνδεση Τα περισσότερα προγράμματα που χρησιμοποιούν βιβλιοθήκες χρησιμοποιούν δυναμική σύνδεση η σύνδεση γίνεται αφού ξεκινήσει η εκτέλεση Αυτό κάνουν οι βιβλιοθήκες σε αρχεία με καταλλήξεις.dll σε windows και.so σε Unix Πλεονεκτήματα: ο κώδικας βιβλιοθήκης μοιράζεται από όλες τις διεργασίες η βιβλιοθήκη μπορεί να αλλάξει, χωρίς να αλλάξουμε την εφαρμογή που τη χρειάζεται 25

Δυναμική σύνδεση - υλοποίηση Η εντολή που κάνει τη κλήση υπορουτίνας πάει σε μια διεύθυνση που περιέχει μια λάθος εντολή ή μια άλλη εντολή κλήσης υπορουτίνας με λάθος διεύθυνση (π.χ. 0) Στη μνήμη, μετά την λάθος εντολή, είναι γραμμένο το όνομα της υπορουτίνας που θέλουμε (με γράμματα/χαρακτήρες) Την πρώτη φορά που γίνεται η κλήση, ανιχνεύεται το λάθος και γίνεται exception. Το Λ.Σ. καταλαβαίνει ότι πρόκειται για δυναμική σύνδεση, διαβάζει το όνομα της υπορουτίνας που πρέπει να κλιθεί και την βρίσκει (ή τη φορτώνει) στη (φυσική) μνήμη 26

Δυναμική σύνδεση υλοποίηση 2 Συνήθως χρειάζεται να αλλάξει και τη μετάφραση διευθύνσεων κατάλληλα Μετά αλλάζει την λάθος εντολή με μια εντολή κλήσης υπορουτίνας που έχει τη σωστή διεύθυνση για την υπορουτίνα βιβλιοθήκης Την επόμενη φορά που θα καλεσθει η υπορουτίνα, δεν γίνεται exception γιατί η εντολή (η δεύτερη κλήση) είναι σωστή 27

Φόρτωση - εκτέλεση Μετά τα παραπάνω η φόρτωση είναι σχετικά απλή Το τμήμα του Λ.Σ. που είναι υπεύθυνο για αυτή τη δουλειά (loader) διαβάζει από το εκτελέσιμο αρχείο κάποιες βασικές πληροφορίες μέγεθος κώδικα μηχανής, μέγεθος δεδομένων,... αποφασίζει τη θέση φυσικής μνήμης που θα τοποθετήσει το πρόγραμμα δημιουργεί ότι δομές χρειάζονται για τη μετάφραση εικονικών διευθύνσεων αντιγράφει το πρόγραμμα από το δίσκο στη θέση μνήμης καλεί την αρχική διεύθυνση (entry point) του προγράμματος 28