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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΛΥΜΕΝΑ ΠΡΟΒΛΗΜΑΤΑ. Γράψτε τις επόμενες διαδικασίες σε όποια γλώσσα προγραμματισμού προτιμάτε:

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

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

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

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

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

Αρχιτεκτονικη υπολογιστων

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

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ CD-PLUS/4+N

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 3 Task Switching in PM

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

Λειτουργικά συστήματα πραγματικού χρόνου

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Transcript:

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

Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα χρησιμεύει μόνο για την αποθήκευση δεδομένων/κώδικα Ένα αρχείο δεν εκτελείται «από μόνο του» Χρειάζεται «κάτι άλλο» που θα αναλάβει να εκτελέσει τον κώδικα που βρίσκεται στο αρχείο Προγραμματισμός II 2 lalis@inf.uth.gr

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

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

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

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

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

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

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

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

Εκτέλεση: παραλληλισμός ή πολυπλεξία παραλληλισμός πολυπλεξία P3 P3 P3 CPU CPU CPU CPU CPU CPU Προγραμματισμός II 11 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 12 lalis@inf.uth.gr

χρόνος (α) 1 2 3 4 5 1 2 3 4 5 6 7 (β) & 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 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 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 Προγραμματισμός 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

Κόστος εναλλαγής O χρόνος που ξοδεύεται για την εναλλαγή διεργασιών αποτελεί γραφειοκρατικό κόστος (overhead) κατά την διάρκεια της εναλλαγής δεν εκτελείται κάποιος κώδικας προγράμματος σε επίπεδο χρήστη Ο χρόνος της εναλλαγής εξαρτάται κυρίως από την πολυπλοκότητα υλοποίησης του συστήματος την υποστήριξη που παρέχει το υλικό (ειδικές εντολές) Όσο περισσότερες εναλλαγές γίνονται ανά μονάδα χρόνου τόσο λιγότερος χρόνος αφιερώνεται στην εκτέλεση των διεργασιών του συστήματος χειρότερη περίπτωση: γίνονται μόνο εναλλαγές Προγραμματισμός II 19 lalis@inf.uth.gr

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

Αναμονή Κάποιες (συνήθως, οι περισσότερες) διεργασίες περνάνε το μεγαλύτερο μέρος «της ζωής» τους απλά περιμένοντας Να περάσει ένα συγκεκριμένο χρονικό διάστημα Να παραλάβουν δεδομένα από άλλες διεργασίες Να συγχρονιστούν με άλλες διεργασίες Προγραμματισμός II 21 lalis@inf.uth.gr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

χρόνος (1) 1 2 1 2 (2) 1 2 1 2 1 2 (3) 1 1 2 2 1 2 (4) 1 1 2 2 (5) 1 1 2 2 (6) 1 1 2 2 σενάρια μικτής εκτέλεσης Προγραμματισμός II 44 lalis@inf.uth.gr

Πρόβλημα στην αποσφαλμάτωση! Συμβατική μέθοδος επιβεβαίωσης ορθότητας και εντοπισμού λαθών: το πρόγραμμα δίνει το ίδιο αποτέλεσμα / παράγει την ίδια έξοδο κάθε φορά που εκτελείται με τις ίδιες παραμέτρους / την ίδια είσοδο Δεν ισχύει για μια ταυτόχρονη εκτέλεση! Διαφορετικές (μικτές) εκτελέσεις διεργασιών μπορεί να δώσουν και ένα διαφορετικό αποτέλεσμα Το ότι σε μια δοκιμή το πρόγραμμα λειτούργησε σωστά δεν σημαίνει ότι θα το κάνει σε επόμενη Το ότι σε μια δοκιμή το πρόγραμμα παρουσίασε πρόβλημα δεν σημαίνει ότι θα το κάνει σε επόμενη Προγραμματισμός II 45 lalis@inf.uth.gr