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

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

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

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

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

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

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

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

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

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

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

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

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

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

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

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

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

Προγραμματισμός Ι (ΗΥ120)

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Παράλληλη Επεξεργασία

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

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

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

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

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

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

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

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

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

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

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

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

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

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

Κατανεμημένα Συστήματα

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι

Σκελετός Παρουσίασης

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Επιτεύγµατα των Λ.Σ.

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Χρονοδρομολογητής Κυκλικής Επαναφοράς

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

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

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

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

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

Προγραμματισμός Ι (HY120)

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

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 5 Ανάπτυξη Προγράμματος σε Γλώσσα Λίστας Εντολών

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Κεφάλαιο 3: Λειτουργικά Συστήματα

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

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

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

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

Transcript:

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

Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα μόνιμης αποθήκευσης δεδομένων Ένα αρχείο δεν εκτελείται «από μόνο του» Υπάρχει εντελώς ξεχωριστός μηχανισμός για την εκτέλεση του κώδικα (που βρίσκεται στο αρχείο) Αυτός ο μηχανισμός ονομάζεται διεργασία (process) Το λειτουργικό αναλαμβάνει την διαχείριση και την χρονοδρομολόγηση των διεργασιών (process management & process scheduling) Προγραμματισμός II 2 lalis@inf.uth.gr

Φόρτωση, αρχικοποίηση, εκτέλεση Έλεγχος ότι το αρχείο περιέχει εκτελέσιμο κώδικα πως γίνεται αυτό; Φόρτωμα του κώδικα στην κυρίως μνήμη όχι απαραίτητα ολόκληρου του κώδικα Αρχικοποίηση περιβάλλοντος / πλαισίου εκτέλεσης δέσμευση καθολικής μνήμης και της στοίβας αρχικοποίηση των καθολικών μεταβλητών και της στοίβας αρχικοποίηση των παραμέτρων της main αρχικοποίηση των περιγραφέων αρχείων για Ε/Ε Εκτέλεση άλμα στην πρώτη εντολή της main τα περιεχόμενα της μνήμης/στοίβας αλλάζουν μέσα από τις εντολές του προγράμματους (και τις κλήσεις συστήματος) Προγραμματισμός II 3 lalis@inf.uth.gr

Διεργασία Οι διεργασίες είναι οι οντότητες εκτέλεσης των προγραμμάτων (εκτελέσιμου κώδικα) Κάθε διεργασία έχει ξεχωριστή/ιδιωτική μνήμη αν μια διεργασία αλλάξει τιμή σε μια θέση της μνήμης της, αυτή η αλλαγή δεν είναι ορατή στις υπόλοιπες διεργασίες Κάθε διεργασία εκτελείται ταυτόχρονα και ανεξάρτητα από τις υπόλοιπες διεργασίες κάθε μια από τις διεργασίες έχει την ψευδαίσθηση ότι έχει την αποκλειστική χρήση του επεξεργαστή Το ίδιο πρόγραμμα/κώδικας μπορεί να εκτελείται ταυτόχρονα από διαφορετικές διεργασίες Προγραμματισμός II 4 lalis@inf.uth.gr

Πλαίσιο εκτέλεσης Κάθε διεργασία αντιστοιχεί σε ένα ξεχωριστό πλαίσιο εκτέλεσης (execution context) Το πλαίσιο εκτέλεσης περιλαμβάνει την πλήρη κατάσταση εκτέλεσης ενός προγράμματος στατική μνήμη, δυναμική μνήμη, στοίβα, file descriptors κατάσταση του επεξεργαστή Καθώς και πολλές άλλες πληροφορίες ο χρήστης στο όνομα του οποίου γίνεται η εκτέλεση προτεραιότητα εκτέλεσης χρόνος που έχει αφιερωθεί για αυτή την εκτέλεση Προγραμματισμός II 5 lalis@inf.uth.gr

code program memory task descriptor stack beg stack pointer stack end PC code load cpu registers memory beg memory end system memory Προγραμματισμός II 6 lalis@inf.uth.gr

memory memory stack stack read/write PC PC read/write code A code B Προγραμματισμός II 7 lalis@inf.uth.gr

memory memory stack stack PC PC read/write code read/write Προγραμματισμός II 8 lalis@inf.uth.gr

Γιατί πολλές διεργασίες; Πολλά προγράμματα που θέλουμε να «τρέχουν» την ίδια στιγμή Πολλοί χρήστες μοιράζονται ένα μηχάνημα ο καθένας πρέπει να μπορεί να εκτελεί τα δικά του προγράμματα, ανεξάρτητα από τους άλλους Παραλληλισμός εκτέλεση διαφορετικών τμημάτων μιας επεξεργασίας ή ενός υπολογισμού από ξεχωριστές διεργασίες αποφυγή μπλοκαρίσματος εν αναμονή κάποιου γεγονότος Καλύτερη δόμηση προγράμματος μια πολύπλοκη διαδικασία ίσως μπορεί να μοντελοποιηθεί πιο απλά αν δομηθεί ως ένα «σύστημα» από διεργασίες Προγραμματισμός II 9 lalis@inf.uth.gr

Εκτέλεση: παραλληλισμός ή πολυπλεξία παραλληλισμός πολυπλεξία P3 P3 P3 core core core core core core Προγραμματισμός II 10 lalis@inf.uth.gr

χρόνος συνεχόμενη εκτέλεση 1 2 3 4 5 6 7 8 9 χρόνος που μπορεί να χρησιμοποιηθεί για την εκτέλεση άλλων διεργασιών καθυστέρηση λόγω διακοπών διακοπτόμενη εκτέλεση 1 2 3 4 5 6 7 8 9 pause continue pause continue pause continue Προγραμματισμός II 11 lalis@inf.uth.gr

(α) 1 1 2 3 4 2 3 4 5 6 7 5 (β) 1 2 3 1 2 3 4 4 5 5 6 7 (γ) 1 2 3 4 5 1 2 3 4 5 6 7 χρόνος Προγραμματισμός II 12 lalis@inf.uth.gr

Εναλλαγή διεργασιών (context switch) Το λειτουργικό σώνει την κατάσταση εκτέλεσης της τρέχουσας διεργασίας αντιγραφή όλης της απαραίτητης πληροφορίας του επεξεργαστή μέσα στην δομή του task descriptor που κρατά το λειτουργικό για την διεργασία Επιλέγεται η διεργασία που θα συνεχίσει την εκτέλεση της Το λειτουργικό επαναφέρει την κατάσταση εκτέλεσης της διεργασίας αντιγραφή όλης της απαραίτητης πληροφορίας από τον task descriptor πίσω στον επεξεργαστή Προγραμματισμός II 13 lalis@inf.uth.gr

εκτελείται current task memory memory PC stack stack PC regs regs code CPU code PC regs Προγραμματισμός II 14 lalis@inf.uth.gr

σώσιμο κατάστασης current task memory memory PC stack stack PC regs regs code CPU code save state PC regs Προγραμματισμός II 15 lalis@inf.uth.gr

current task memory memory PC stack stack PC regs regs code CPU code PC regs Προγραμματισμός II 16 lalis@inf.uth.gr

επαναφορά κατάστασης current task memory memory PC stack stack PC regs regs code CPU code PC regs restore state Προγραμματισμός II 17 lalis@inf.uth.gr

εκτελείται current task memory memory PC stack stack PC regs regs code CPU code PC regs Προγραμματισμός II 18 lalis@inf.uth.gr

Αναμονή Οι περισσότερες) διεργασίες περνάνε το μεγαλύτερο μέρος «της ζωής» τους απλά περιμένοντας Να περάσει ένα συγκεκριμένο χρονικό διάστημα time-outs Να παραλάβουν δεδομένα από την μνήμη, περιφερειακές συσκευές ή άλλες διεργασίες input/output Να συγχρονιστούν με άλλες διεργασίες process synchronization Προγραμματισμός II 19 lalis@inf.uth.gr

πότε θα έρθει ο επόμενος χαρακτήρας από το πληκτρολόγιο; πότε θα έρθουν τα δεδομένα από την ; πότε θα χτυπήσει το ξυπνητήρι μου; P3 Προγραμματισμός II 20 lalis@inf.uth.gr

Κατάσταση αναμονής Το λειτουργικό σύστημα πρέπει να γνωρίζει κατά πόσο μια διεργασία βρίσκεται σε αναμονή ώστε να μην της δίνει χρόνο από τον επεξεργαστή Διαχωρισμός κατάστασης μιας διεργασίας Ready: η διεργασία είναι έτοιμη να λάβει τον επεξεργαστή, όταν αυτός ελευθερωθεί Blocked: η διεργασία περιμένει για κάτι, συνεπώς δεν είναι έτοιμη να λάβει τον επεξεργαστή Running: η διεργασία έχει τον επεξεργαστή Οι μεταβάσεις ανάμεσα σε αυτές τις καταστάσεις γίνονται υπό τον έλεγχο του λειτουργικού, μέσα από διάφορες λειτουργίες του συστήματος Προγραμματισμός II 21 lalis@inf.uth.gr

αναμονή running εναλλαγή (απώλεια επεξεργαστή) εναλλαγή (λήψη επεξεργαστή) blocked αφύπνιση ready δημιουργία Προγραμματισμός ΙΙ 22 lalis@inf.uth.gr

Χρονοπρογραμματισμός διεργασιών Μέσω της εναλλαγής, μπορεί να διακοπεί η εκτέλεση μιας διεργασίας για να συνεχιστεί μια άλλη διεργασία Υπάρχουν όμως κάποιες διαστάσεις «πολιτικής» για το πώς θα χρησιμοποιηθεί αυτός ο μηχανισμός Πότε διακόπτεται η τρέχουσα διεργασία; αυτόματα (περιοδικά), με βάση ένα χρονόμετρο (timer) όταν καλέσει μια ανασταλτική λειτουργία του συστήματος αν αποφασίσει να απελευθερώσει τον επεξεργαστή (yield) Ποιά διεργασία θα συνεχίσει την εκτέλεση της; αποφασίζεται με βάση τις προτεραιότητες των διεργασιών ο πιο απλός αλγόριθμος: round-robin Προγραμματισμός II 23 lalis@inf.uth.gr

cur tasks P0 ready running ready εκτελείται Προγραμματισμός ΙΙ 24 lalis@inf.uth.gr

cur tasks P0 ready ready running εναλλαγή Προγραμματισμός ΙΙ 25 lalis@inf.uth.gr

cur tasks P0 ready ready running εκτελείται Προγραμματισμός ΙΙ 26 lalis@inf.uth.gr

cur tasks P0 running ready ready εναλλαγή Προγραμματισμός ΙΙ 27 lalis@inf.uth.gr

cur tasks P0 running ready ready P0 εκτελείται Προγραμματισμός ΙΙ 28 lalis@inf.uth.gr

cur tasks P0 ready running ready εναλλαγή Προγραμματισμός ΙΙ 29 lalis@inf.uth.gr

cur tasks P0 ready running ready εκτελείται Προγραμματισμός ΙΙ 30 lalis@inf.uth.gr

cur tasks P0 ready blocked running μπαίνει σε αναμονή Προγραμματισμός ΙΙ 31 lalis@inf.uth.gr

cur tasks P0 ready blocked running εκτελείται Προγραμματισμός ΙΙ 32 lalis@inf.uth.gr

cur tasks P0 running blocked blocked μπαίνει σε αναμονή Προγραμματισμός ΙΙ 33 lalis@inf.uth.gr

cur tasks P0 running blocked blocked P0 εκτελείται Προγραμματισμός ΙΙ 34 lalis@inf.uth.gr

cur tasks P0 running blocked blocked P0 εκτελείται Προγραμματισμός ΙΙ 35 lalis@inf.uth.gr

cur tasks P0 running blocked blocked P0 εκτελείται Προγραμματισμός ΙΙ 36 lalis@inf.uth.gr

cur tasks P0 running blocked ready αφυπνίζεται Προγραμματισμός ΙΙ 37 lalis@inf.uth.gr

cur tasks P0 ready blocked running εναλλαγή Προγραμματισμός ΙΙ 38 lalis@inf.uth.gr

cur tasks P0 ready blocked running εκτελείται Προγραμματισμός ΙΙ 39 lalis@inf.uth.gr

Βελτιστοποίηση Αν υπάρχουν πολλές διεργασίες σε αναμονή δεν συμφέρει να τις κρατάμε στην ίδια λίστα με τις διεργασίες που είναι έτοιμες προς εκτέλεση κάθε φορά που επιχειρείται εναλλαγή, πραγματοποιούνται Ο(Ν) έλεγχοι για να βρεθεί η επόμενη έτοιμη διεργασία Μπορούμε να εισάγουμε μια ξεχωριστή λίστα, αποκλειστικά για τις διεργασίες εν αναμονή η εναλλαγή γίνεται σε Ο(1) Οι λειτουργίες αλλαγής κατάστασης γίνονται λίγο πιο πολύπλοκες καθώς πρέπει να «μετακινούν» μια διεργασία από την μια λίστα στην άλλη αλλά και αυτό γίνεται σε Ο(1) Προγραμματισμός II 40 lalis@inf.uth.gr

Αυτόματη εναλλαγή Ο προγραμματιστής δεν ελέγχει την εναλλαγή το λειτουργικό δεν παρέχει τέτοια λειτουργία γιατί; Μπορεί να γίνει εναλλαγή, ανά πάσα στιγμή δεν γνωρίζουμε αν, πότε και σε ποια σημεία του κώδικα που γράφουμε θα γίνει εναλλαγή τα σημεία στα οποία γίνεται η εναλλαγή μπορεί να είναι διαφορετικά σε κάθε νέα εκτέλεση Η εναλλαγή είναι διαφανής για τον προγραμματιστή γράφει τον κώδικα του προγράμματος του χωρίς να τον απασχολεί το γεγονός ότι κατά την εκτέλεση μπορεί να γίνουν εναλλαγές εκτός αν... Προγραμματισμός II 41 lalis@inf.uth.gr

Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις μνήμης άλλων διεργασιών Η επικοινωνία / μεταφορά δεδομένων μεταξύ των διεργασιών γίνεται μέσα από συγκεκριμένους μηχανισμούς επικοινωνίας Μέσω του λειτουργικού (κλήσεις συστήματος) Προγραμματισμός II 42 lalis@inf.uth.gr

process process user code user code πόροι/μηχανισμοί συστήματος system Προγραμματισμός II 43 lalis@inf.uth.gr

Εικονική μνήμη virtual memory Οι διευθύνσεις μνήμης που χρησιμοποιεί ο κώδικας που εκτελούν οι διεργασίες είναι εικονικές! Κάθε διεργασία έχει την ψευδαίσθηση ότι έχει στην διάθεση της ολόκληρη την μνήμη του Η/Υ ή ακόμα περισσότερη Το λειτουργικό πραγματοποιεί την αντιστοίχιση μεταξύ εικονικών και πραγματικών διευθύνσεων, εξασφαλίζοντας ξεχωριστή μνήμη για κάθε διεργασία Αυτό γίνεται με διαφανή τρόπο, χωρίς να εμπλέκεται ο προγραμματιστής ούτε ο μεταγλωττιστής Προγραμματισμός II 44 lalis@inf.uth.gr

0Κ-4Κ 4Κ-8Κ 8Κ-12Κ πίνακας αντιστοίχισης 0Κ-4Κ 4Κ-8Κ 8Κ-12Κ πραγματική μνήμη 0Κ-4Κ 4Κ-8Κ 8Κ-12Κ 12Κ-16Κ 16Κ-20Κ 20Κ-24Κ 48Κ-52Κ 52Κ-56Κ 56Κ-60Κ 60Κ-64Κ Προγραμματισμός II 45 lalis@inf.uth.gr

Δημιουργία κοινόχρηστης μνήμης Ρύθμιση της εικονικής μνήμης έτσι ώστε κάποιες εικονικές διευθύνσεις διαφορετικών διεργασιών να αντιστοιχηθούν στις ίδιες φυσικές διευθύνσεις Προκύπτουν «κοινόχρηστα» τμήματα μνήμης Σε αυτή την περίπτωση, οι διεργασίες μπορεί να επικοινωνούν μεταξύ τους γράφοντας/διαβάζοντας απ ευθείας σε/από αυτές τις κοινές θέσεις μνήμης Χωρίς να πραγματοποιούν κλήσεις συστήματος Προγραμματισμός II 46 lalis@inf.uth.gr

0Κ-4Κ 4Κ-8Κ 8Κ-12Κ πίνακας αντιστοίχισης 0Κ-4Κ 4Κ-8Κ 8Κ-12Κ πραγματική μνήμη 0Κ-4Κ 4Κ-8Κ 8Κ-12Κ 12Κ-16Κ 16Κ-20Κ 20Κ-24Κ 48Κ-52Κ 52Κ-56Κ 56Κ-60Κ 60Κ-64Κ Προγραμματισμός II 47 lalis@inf.uth.gr

ιδιωτική μνήμη κοινή μνήμη ιδιωτική μνήμη Λειτουργικό Σύστημα Προγραμματισμός ΙΙ 48 lalis@inf.uth.gr