Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα

Σχετικά έγγραφα
Βαγγϋλησ Οικονόμου Διϊλεξη 4. Δομ. Προγραμ. - Διϊλεξη 4

Βαγγϋλησ Οικονόμου Διϊλεξη 5 ΠΙΝΑΚΕΣ. Δομ. Προγραμ. - Διϊλεξη 5 1

Παθήςεισ του θυροειδή ςε άτομα με ςύνδρομο Down: Πληροφορίεσ για γονείσ και δαςκάλουσ. Τι είναι ο θυροειδήσ αδένασ;

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ. Μνήμη

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Βαςικέσ Έννοιεσ Λειτουργικών Συςτημάτων

ΑΡΧΗ 1Η ΕΛΙΔΑ ΘΕΜΑ A Α. Μονάδεσ 10 Μονάδεσ 5 Μονάδεσ 4 4 Ε. 1 Μονάδεσ 2 Ε. 2 Μονάδεσ 5 ΣΕΛΟ 1Η ΕΛΙΔA

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Εντολζς του Λειτουργικοφ Συστήματος UNIX

22/11/2009. Προηγοφμενη βδομάδα... Δεδομζνα απο Δευτερεφουςεσ πηγζσ. Αυτή την βδομάδα...

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφϊλαιο2: Βαςικϊ ςτοιχεύα τησ γλώςςασ

EETT Δημόςια Διαβούλευςη ςχετικά με την εκχώρηςη δικαιώματων χρήςησ ραδιοςυχνοτήτων ςτη Ζώνη 27,5 29,5 GHz

Στο λογιςμικό (software) περιλαμβϊνονται όλα τα προγράμματα του υπολογιςτό. Το Λογιςμικό χωρύζετε ςε δύο μεγϊλεσ κατηγορύεσ:

NetMasterII ςύςτημα μόνιμησ εγκατϊςταςησ επιτόρηςη και καταγραφό ςημϊτων από αιςθητόρια και μετατροπεύσ κϊθε εύδουσ ςύςτημα ειδοπούηςησ βλϊβη

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

ΚΕΥΑΛΑΙΟ 2 Σο εςωτερικό του υπολογιςτό

Αδιέξοδα (Deadlocks)

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

Βαγγϋλησ Οικονόμου Διϊλεξη 6. Δομ. Προγραμ. - Συναρτόςεισ - Διϊλεξη 6

ΑΔΙΕΞΟΔΑ (Deadlocks) Παράδειγμα 1 Θανάσιμο αγκάλιασμα (deadly embrace)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ. Δωδϋκατη Διϊλεξη Έλεγχοσ Συςτόματοσ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α Α1 Μονάδες 10 Μονάδες 4 ΤΕΛΟΣ 1ΗΣ ΣΕΛΙΔΑΣ

Πίνακασ τεχνικών και λειτουργικών προδιαγραφών. Πλόρεσ ελληνικό περιβϊλλον (interface) για Διαχειριςτϋσ, Εκπαιδευτϋσ, Εκπαιδευόμενουσ

Τεχνικόσ Μαγειρικόσ Τϋχνησ Αρχιμϊγειρασ (Chef) Β Εξϊμηνο

ενθαρρύνοντασ τη ςυνέχιςη των προβλημάτων

Εγχειρίδιο Χρήσης των Εργαλείων Αναγνώρισης Χαρισματικών Μαθητών στα Μαθηματικά

Το τςάϊ ςυντροφιά ςτην δουλειά

Τρύτη Διϊλεξη Μοντϋλα Διαδικαςύασ Λογιςμικού Μϋροσ Α

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» ΚΕΦΑΛΑΙΟ 3: ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΜΕΘΟΔΟΙ

Δίκτυα Η/Υ ςτην Επιχείρηςη

Διεργασίες (Processes)

Οδηγόσ πουδών

ΜΑΘΗΜΑΤΙΚΑ Α ΤΑΞΗ ΓΥΜΝΑΣΙΟΥ. Β ΓΥΜΝΑΣΙΟΥ - ΜΑΘΗΜΑΤΙΚΑ Σελίδα 1

AΠΙΝΙΔΩΣΗ. Μημήκοσ τυλιανόσ*, Χαρούπα Στεργιανό** *Νοζηλεσηής ΚΧΜΕΘ ΠΓΝΘ ΑΧΕΠΑ **Προϊζηαμένη ΚΧΜΕΘ ΠΓΝΘ ΑΧΕΠΑ

ΗΛΕΚΣΡΟΝΙΚΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΟΤ ΦΟΛΕΙΟΤ ΠΡΟ ΣΟΤ ΓΟΝΕΙ. - Θέςη υπεύθυνου προςώπου για την ςυμπλήρωςη του ερωτηματολογίου: Ερωτηματολόγιο

19/10/2009. Γεωγραφικά Συςτήματα Πληροφοριϊν Spatial Operations. Σήμερα... Τφποι ερωτήςεων (Queries)

Τϋταρτη Διϊλεξη Μοντϋλα Διαδικαςύασ Λογιςμικού Μϋροσ Β

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

Υποχρεώςεισ των μαθητών κατϊ τη διϊρκεια τησ εξϋταςησ

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

Επιςκόπηςη Τεχνολογιών Διαδικτύου

Θεςμική Αναμόρφωςη τησ Προ-πτωχευτικήσ Διαδικαςίασ Εξυγίανςησ Επιχειρήςεων

ΤΕΙ ΑΜΘ-Σχολό Διούκηςησ και Οικονομύασ-Τμόμα Λογιςτικόσ και Χρηματοοικονομικόσ

Το παζάρι των λοιμώξεων ςτον 'κατεχόμενο' κόςμο των χρηςτών

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

Αναφϋρεται ςτουσ μηχανιςμούσ ελϋγχου δϋςμευςησ των πόρων.

ΠΟΛΤΩΝΤΜΑ. ΠΑΡΑΜΕΣΡΟ λϋγεται το ςύμβολο, ςυνόθωσ γρϊμμα, του οπούου το πεδύο οριςμού ορύζεται ϋτςι ώςτε να ιςχύει κϊποια προώπόθεςη.

α = 2q + r με 0 r < 2 Πιθανϊ υπόλοιπα: r = ο: α = 2q r = 1: α = 2q + 1 Ευκλεύδεια διαύρεςη Ειςαγωγό ςτισ βαςικϋσ ϋννοιεσ των Μαθηματικών Διαιρετότητα

Ειςαγωγή ςτη Διαχείριςη Δικτύων

Δίκτυα Η/Υ ςτην Επιχείρηςη

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

19/10/2009. Προηγοφμενη βδομάδα... Σήμερα Γεωγραφικά Συςτήματα Πληροφοριϊν Χωρικά Μοντζλα Δεδομζνων. Δομή του μαθήματοσ

ΠΡΟΓΡΑΜΜΑ ΑΝΑΚΤΚΛΩΗ ΤΛΙΚΩΝ Α Υάςη: Διοικητικό Μέγαρο- Κτήριο ΟΣΕ-COSMOTE Παιανίασ

Μεθοδολογύα & Λυμϋνεσ Αςκόςεισ

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Λειτουργικά Συςτήματα Προγραμματιςμόσ Συςτήματοσ.

ΣΧΕΔΙΟ ΝΟΜΟΥ ΑΙΤΙΟΛΟΓΙΚΗ ΕΚΘΕΣΗ

Επιταχυντϋσ Σωματιδύων

Μεθοδολογύα & Λυμϋνεσ Αςκόςεισ

Ειςαγωγό ςτο Ιnternet. χολό Θετικών Επιςτημών, Σμόμα Βιολογύασ, Πανεπιςτόμιο Πατρών

ΕΠΠΑΙΚ Θεςςαλονύκησ, /02/2011

Μαύροσ Γιϊννησ Μαθηματικόσ

Ειςαγωγή ςτην Πληροφορική των Επιχειρήςεων

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

«Δυνατότητεσ και προοπτικϋσ του επαγγϋλματοσ που θϋλω να ακολουθόςω μϋςα από το Διαδύκτυο».

Άδειες Χρήσης. Διδακτική Μαθηματικών I. Πρόσθεση-αφαίρεση. Διδάσκων: Επίκουρος Καθ. Κ. Τάτσης

ημειώςεισ των αςκόςεων του μαθόματοσ Κεφαλαιαγορϋσ- Επενδύςεισ Ενότητα: Χρηματοοικονομικόσ Κύνδυνοσ Διδϊςκων : Αγγελϊκησ Γιώργοσ Εργαςτηριακόσ

Αρχϋσ του NCTM. Αρχϋσ του NCTM. Αρχϋσ του NCTM. Διδακτικό Μαθηματικών ΙΙ. Μϊθημα 9 ο Αξιολόγηςη

Διεργαςίεσ και Νήματα

Άδειες Χρήσης. Ειδικά Θέματα Μαθηματικών. Μαθηματικά στην εκπαίδευση: Επίλυση προβλήματος - Ρεαλιστικά Μαθηματικά

Περίληψη. Μαρία Ιωϊννα Αργυροπούλου Έλενα Παππϊ

ΠΡΟΛΗΨΗ ΑΣΤΧΗΜΑΣΩΝ ΣΟ ΠΙΣΙ

Μαθηματικϊ Γ' Ενιαύου Λυκεύου (μϊθημα κατεύθυνςησ)

Πωσ αλλάζει τη Μεςόγειο το ενεργειακό παζλ

Η Διαύρεςη 134:5. Η Διαύρεςη 134:5. Διδακτική Μαθηματικών ΙΙ

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

ΔΙΑΣΡΟΦΗ ΚΑΣΑ ΣΗ ΔΙΑΡΚΕΙΑ ΣΟΤ ΘΗΛΑΜΟΤ ΣΖΕΛΑΛΗ ΑΝΑΣΑΙΑ ΜΑΙΑ ΙΠΠΟΚΡΑΣΕΙΟ Γ.Π.Ν.Θ.

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

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

ΣΕΦΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΤΣΙΚΟ ΙΔΡΤΜΑ ΚΑΒΑΛΑ

Ένασ άνθρωποσ που δεν ςτοχάζεται για τον εαυτό του δεν ςτοχάζεται καθόλου». Oscar Wilde

ΕΛΕΓΦΟ ΕΜΠΟΡΕΤΜΑΣΨΝ ΣΕΦΝΙΚΟ ΜΑΓΕΙΡΙΚΗ ΣΕΦΝΗ ΑΡΦΙΜΑΓΕΙΡΑ (CHEF)

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

Όγδοη Διϊλεξη Case Study

Περιεκτικότητα ςε θρεπτικϊ ςτοιχεύα Ικανότητα ανταλλαγόσ κατιόντων Οξύτητα εδϊφουσ (ph)

ΤΕΙ ΑΜΘ-Σχολό Διούκηςησ και Οικονομύασ-Τμόμα Λογιςτικόσ και Χρηματοοικονομικόσ Διδϊςκων : Αγγελϊκησ Γιώργοσ Εργαςτηριακόσ ςυνεργϊτησ : Σιώπη

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

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

2.3 Επικοινωνία Διεργασιών

Πανελλήνιεσ Εξετάςεισ 2011 Φυςική Θετικήσ & Τεχνολογικήσ Κατεύθυνςησ. 20 Μαΐου 2011 Πρόχειρεσ Απαντήςεισ

Ενημερωτικό Σημεύωμα για το Ειδικό Καθεςτώσ τησ Επιχειρηματικότητασ των Νϋων του Επενδυτικού Νόμου 3908/2011, για το ϋτοσ 2011

Μαθηματικϊ. Β' Ενιαύου Λυκεύου. (μϊθημα κοινού κορμού) Υιλοςοφύα - κοπού

Αναλύοντασ την ολοκληρωμϋνη φροντύδα του ρευματοπαθούσ. Κατερύνα Κουτςογιϊννη ύλλογοσ Ρευματοπαθών Κρότησ

ΑΛΚΟΟΛ & ΟΔΗΓΗΣΗ. Μ.Κ.Ο. Νηυάλιοι στην υγειά μας

OPOI YMMETOXH ΔIAΓΩNIMOY «ΠΡΩΣΗ ΓΡΑΜΜΗ»

2.4 Κλασσικά Προβλήματα IPC

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

Case Studies. χρειάζεται να προςλάβουμε εμείσ άνθρωπο να ςυντηρεί τουσ servers». Επιτεύχθηκε μια επεκτϊςιμη λύςη με γρόγορη προςαρμογό των χρηςτών.

Παρουςίαςη προςχεδίου π.δ. για την εναρμόνιςη τησ εθνικήσ νομοθεςίασ με την Ευρωπαΰκή Οδηγία 2013/59/ΕΤΡΑΣΟΜ του υμβουλίου

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

Δημιουργύα ενόσ Business Plan

Transcript:

Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα

Συνθόκεσ Ανταγωνιςμού Κατϊλογοσ εκτυπώςεων ςε αναμονό Διεργαςύα Α 1 2 3 abc 4 prog.c 5 prog.results out Διεργαςύα Β in Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 2

Δομό Διεργαςιών Ι while (1) Κανονικόσ Κώδικασ (δεν τύθεται θϋμα ςυγχρονιςμού) Κρύςιμο Τμόμα (critical section) Κανονικόσ Κώδικασ (δεν τύθεται θϋμα ςυγχρονιςμού) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 3

Δομό Διεργαςιών ΙΙ while (1) Κανονικόσ Κώδικασ (δεν τύθεται θϋμα ςυγχρονιςμού) Κρύςιμο Τμόμα (critical section) Κανονικόσ Κώδικασ (δεν τύθεται θϋμα ςυγχρονιςμού) Κώδικασ Ειςόδου (entry code) Κώδικασ Εξόδου (exit code) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 4

Αμοιβαύοσ Αποκλειςμόσ με Χρόςη Κρύςιμων Περιοχών Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 5

Συνθόκεσ Αμοιβαύου Αποκλειςμού Δύο διεργαςύεσ δεν μπορούν να βρύςκονται ταυτόχρονα ςε κρύςιμα τμόματα. Δεν γύνονται υποθϋςεισ ςχετικϊ με το πλόθοσ και την ταχύτητα των επεξεργαςτών. Διεργαςύα που δε βρύςκεται ςε κρύςιμο τμόμα δεν επιτρϋπεται να αναςτεύλει (μπλοκϊρει) ϊλλη διεργαςύα. Δεν επιτρϋπεται να περιμϋνει επ αόριςτον μύα διεργαςύα για να ειςϋλθει ςε κρύςιμο τμόμα. Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 6

Αμοιβαύοσ Αποκλειςμόσ Απενεργοπούηςη διακοπών: Διϊθεςη τησ CPU ςτη διεργαςύα μϋχρι την ϋξοδο από την κρύςιμη περιοχό Μεταβλητϋσ κλειδώματοσ (lock variables) Κοινόχρηςτη μεταβλητό που εκφρϊζει εϊν κϊποια διεργαςύα βρύςκεται ςτην κρύςιμη περιοχό Για να ειςϋλθει μύα διεργαςύα ςτην κρύςιμη περιοχό ελϋγχει την τιμό τησ μεταβλητόσ αν εύναι 0, τη θϋτει ςε 1 και ειςϋρχεται ςτην κρύςιμη περιοχό αν εύναι 1, ανακυκλώνει ςτον βρόχο εξϋταςησ μϋχρι η μεταβλητό να γύνει 0 Όταν εξϋρχεται, θϋτει την μεταβλητό κλειδώματοσ ςτην τιμό 0 Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 7

Αμοιβαύοσ Αποκλειςμόσ με Αυςτηρό Εναλλαγό Οι διεργαςύεσ ειςϋρχονται με αυςτηρή ςειρά ςτο κρύςιμο τμόμα η κϊθε μύα χρύζει την επόμενό τησ Μειονεκτόματα: Πρϋπει να εύναι γνωςτό το ςυνολικό πλόθοσ των διεργαςιών που δυνητικά θα επιθυμούν να ειςϋλθουν Αν μύα διεργαςύα επιθυμεύ να ειςϋρχεται ςτο κρύςιμο τμόμα με μεγϊλη ςυχνότητα και η ϊλλη με μικρό, η πρώτη περιμϋνει χωρύσ λόγο Ο μηχανιςμόσ αναμονόσ (ενεργόσ αναμονή) δαπανϊ υπολογιςτικό ιςχύ int turn = 0 while (TRUE) while (turn!= 0); <<critical_section>> turn = 1; noncritical_region(); while (TRUE) while (turn!= 1); <<critical_section>> turn = 0; noncritical_region(); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 8

Η Λύςη του Peterson #define N 2 int turn; int interested[n]; void enter_region(int process) int other; other = 1 - process; interested[process] = TRUE; turn = process; while (turn == process && interested[other] == TRUE) void leave_region(int process) interested[process] = FALSE; Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 9

Αλλϊ... Οι προηγούμενεσ λύςεισ ςπαταλούν χρόνο τησ CPU ςτην αναμονό Πρόβλημα αντιςτροφόσ προτεραιοτότων (priority inversion problem): Μύα διεργαςύα χαμηλόσ προτεραιότητασ ϋχει ειςϋλθει ςτο κρύςιμο τμόμα Μύα διεργαςύα υψηλόσ προτεραιότητασ αφυπνύζεται και προςπαθεύ να ειςϋλθει ςτο κρύςιμο τμόμα Τύθεται ςε ενεργό αναμονό το λειτουργικό ςύςτημα τησ παραχωρεύ διαρκώσ την ΚΜΕ Η χαμηλόσ προτεραιότητασ διεργαςύα δεν εξϋρχεται ποτϋ από το κρύςιμο τμόμα, η υψηλόσ προτεραιότητασ μϋνει πϊντα ςτην ενεργό αναμονό Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 10

Οι εντολϋσ sleep και wakeup Ζητούμενο: αντύ μύα διεργαςύα να εκτελεύ ενεργό αναμονό να αναςτϋλλεται δε δαπανϊ κύκλουσ τησ CPU επιτρϋπει τον χρονοπρογραμματιςμό ϊλλων διεργαςιών πιθανώσ μικρότερησ προτεραιότητασ Προςθόκη εντολών: void sleep(void); (Η καλούςα διεργαςύα τύθεται ςε αναςτολό) void wakeup(pid_t pid); (Αφυπνύζεται η προςδιοριζόμενη διεργαςύα pid) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 11

Το Πρόβλημα Παραγωγού Καταναλωτό Ι Γνωςτό και ωσ πρόβλημα περιοριςμϋνησ προςωρινόσ μνόμησ (bounded-buffer problem) Κοινό μνόμη μεγϋθουσ Ν, μετρητόσ ελεύθερων θϋςεων count (0 count N) Διεργαςύα Παραγωγόσ: Παρϊγει πληροφορύα Την προςθϋτει ςτην κοινό μνόμη Εϊν η κοινό μνόμη εύναι γεμϊτη, ο παραγωγόσ κοιμϊται Διεργαςύα Καταναλωτόσ: Διαβϊζει την πληροφορύα από την κοινό μνόμη Εϊν η κοινό μνόμη εύναι ϊδεια, ο καταναλωτόσ κοιμϊται Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 12

Το Πρόβλημα Παραγωγού Καταναλωτό ΙΙ Ο παραγωγόσ: #define N 100 int count = 0; void producer(void) int item; while (TRUE) item = produce_item(); if(count == N) sleep(); insert_item(item); count = count + 1; if(count == 1) wakeup(consumer); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 13

Το Πρόβλημα Παραγωγού Καταναλωτό ΙΙΙ Ο Καταναλωτόσ void consumer(void) int item; while (TRUE) if (count == 0) sleep(); item = remove_item(); count = count - 1; if (count == N - 1) wakeup(producer); consume_item(item); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 14

Το... Πρόβλημα με το Πρόβλημα Παραγωγού Καταναλωτό Το πρόβλημα: ο ςυγχρονιςμόσ Παραγωγού και Καταναλωτό αναφορικϊ με την πρόςβαςη ςτη μεταβλητό count Παρϊδειγμα: Αρχικϊ... κοινό μνόμη: ϊδεια (count == 0) Ο Καταναλωτόσ διαβϊζει count == 0 Ο Χρονοπρογραμματιςτόσ δύνει τον ϋλεγχο ςτον Παραγωγό Ο Παραγωγόσ τοποθετεύ ςτοιχεύο ςτην κοινό μνόμη και θϋτει count = 1 Επειδό προηγουμϋνωσ count == 0, ο Παραγωγόσ θεωρεύ ότι πρϋπει να ξυπνόςει τον Καταναλωτό wakeup(consumer) Ο Καταναλωτόσ όμωσ δεν κοιμϊται! δε θα λϊβει ποτϋ το wakeup Ο Χρονοπρογραμματιςτόσ δύνει πϊλι τον ϋλεγχο ςτον Καταναλωτό Ο Καταναλωτόσ ελϋγχει την count και τη βρύςκει ύςη με 0 (όπωσ όταν όταν τη διϊβαςε) Ο Καταναλωτόσ πϋφτει για ύπνο Ο Παραγωγόσ ςυνεχύζει να προςθϋτει ςτοιχεύα ςτην κοινό μνόμη...και όταν count == N: Ο Παραγωγόσ πϋφτει για ύπνο και αυτόσ! Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 15

Σηματοφορεύσ Ειςαγωγό από τον Dijkstra το 1965 Σηματοφορϋασ: νϋοσ τύποσ μεταβλητών που καταμετρούν τα ςόματα αφύπνιςησ Λαμβϊνει ακϋραιεσ τιμϋσ Δυνατϋσ λειτουργύεσ: up (ό wait ό P) down (ό signal ό V) Οι λειτουργύεσ up και down εύναι ατομικϋσ (atomic) Ειδικό περύπτωςη: mutex Δυαδικόσ ςηματοφορϋασ Αμοιβαύοσ αποκλειςμόσ Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 16

Η Λειτουργύα down down(semaphore *s) αν η τρϋχουςα τιμό του ςηματοφορϋα εύναι μεγαλύτερη από 0, ο ςηματοφορϋασ μειώνεται κατϊ 1 και η διεργαςύα ςυνεχύζει αλλιώσ η διεργαςύα αναςτϋλλεται ςτο ςυγκεκριμένο ςηματοφορέα δηλαδό μπλοκϊρεται και μπαύνει ςε μύα ουρϊ που αναφϋρεται ςτον εν λόγω ςηματοφορϋα down(semaphore *s) while (*s <= 0); *s--; Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 17

Η Λειτουργύα up up(semaphore *s) αν ϋχουν αναςταλεύ διεργαςύεσ πϊνω ςτο ςηματοφορϋα, τότε μύα από αυτϋσ αφυπνύζεται και ςυνεχύζει, ενώ ο ςηματοφορϋασ δεν αλλϊζει τιμό αλλιώσ η τιμό του ςηματοφορϋα αυξϊνεται κατϊ 1 up(int *s) *s++; Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 18

Αμοιβαύοσ Αποκλειςμόσ με Σηματοφορεύσ Ορύζεται ςηματοφόροσ semaphore s = 1 Σε κϊθε διεργαςύα: while(1) down(s); <<critical_section>> up(s); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 19

Υλοπούηςη Σηματοφορϋων I typedef struct int sval; struct procq pq; semaphore; void init(semaphore *s, int val) s->sval=val; initq(s->pq); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 20

Υλοπούηςη Σηματοφορϋων II void down(semaphore *s) s->sval--; if (s->sval < 0) addq(s->pq, thisprocess()); suspend(); void up(semaphore *s) s->sval++; if (s->sval <= 0) resume(rmvq(s->pq)); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 21

Συγχρονιςμόσ με Σηματοφορεύσ Διεργαςύα P i A up(flag) Διεργαςύα P j down(flag) B Χρόςη του ςηματοφόρου flag με αρχικό τιμό 0 Εκτϋλεςη του B ςτην P j μόνο αφού εκτελεςτεύ το A ςτην P i Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 22

Παραγωγόσ Καταναλωτόσ με Χρόςη Σηματοφορϋων Ι Προςϋγγιςη: semaphore mutex = 1 (ελέγχει την πρόςβαςη ςτην κρίςιμη περιοχή) semaphore empty = N (πλήθοσ κενών θέςεων κοινήσ μνήμησ) semaphore full = 0 (πλήθοσ κατειλημμένων θέςεων κοινήσ μνήμησ) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 23

Παραγωγόσ Καταναλωτόσ με Χρόςη Σηματοφορϋων ΙΙ void producer(void) int item; while (TRUE) item = produce_item(); down(&empty); down(&mutex); insert_item(item); up(&mutex); up(&full); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 24

Παραγωγόσ Καταναλωτόσ με Χρόςη Σηματοφορϋων ΙΙΙ void consumer(void) int item; while (TRUE) down(&full); down(&mutex); item = remove_item(); up(&mutex); up(&empty); consume_item(item); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 25

Μεταβύβαςη Μηνύματοσ Όλεσ οι προηγούμενεσ μϋθοδοι προώποθϋτουν την ύπαρξη διαμοιραζόμενησ μνόμησ - αυτό δεν ιςχύει ςτη γενικό περύπτωςη π.χ., λειτουργικϊ ςυςτόματα που δεν παρϋχουν τη δυνατότητα αυτό διεργαςύεσ ςε διαφορετικούσ υπολογιςτϋσ Ανϊγκη για εναλλακτικό μϋθοδο μεταβύβαςη μηνύματοσ Βαςικϋσ λειτουργύεσ: void send(recipient_t destination, void *message); void receive(sender_t source, void *message); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 26

Παραγωγόσ Καταναλωτόσ I void producer(void) int item; message m; while (TRUE) item = produce_item(); receive(consumer, &m); build_message(&m, item); send(consumer, &m); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 27

Παραγωγόσ Καταναλωτόσ II void consumer(void) int item, i; message m; for (i = 0; i < N; i++) send(producer, &m); while (TRUE) receive(producer, &m); item = extract_item(&m); send(producer, &m); consume_item(item); Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 28

Το Πρόβλημα των Αδιεξόδων Τα υπολογιςτικϊ ςυςτόματα διαθϋτουν πόρουσ (resources) Οι διεργαςύεσ χρηςιμοποιούν τουσ πόρουσ Συγκεκριμϋνοι πόροι μπορούν να χρηςιμοποιούνται ανϊ πϊςα χρονικό ςτιγμό από μύα μόνο διεργαςύα π.χ., εκτυπωτόσ, αρχεύο Αμοιβαύοσ αποκλειςμόσ των διεργαςιών ςτη χρόςη των πόρων αυτών Πολλϋσ διεργαςύεσ μπορεύ να θϋλουν περιςςότερουσ από ϋναν πόρουσ ταυτόχρονα για κϊποια εργαςύα Και τελικϊ, η μύα διεργαςύα να μπλοκϊρει την ϊλλη Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 29

Συνθόκεσ Αδιεξόδου Ένα αδιϋξοδο μπορεύ να ςυμβεύ αν ιςχύουν ταυτόχρονα οι εξόσ ςυνθόκεσ: Αμοιβαύοσ αποκλειςμόσ (Mutual exclusion): Μόνο μια διεργαςύα μπορεύ να χρηςιμοποιεύ κϊποια οντότητα ενόσ πόρου κϊθε χρονικό ςτιγμό. Δϋςμευςη και αναμονό (Hold and wait): Μια διεργαςύα που κατϋχει τουλϊχιςτον ϋναν πόρο αναμϋνει να αποκτόςει επιπλϋον πόρουσ που κατϋχουν ϊλλεσ διεργαςύεσ. Μη προεκτόπιςη (No preemption): Ένασ πόροσ που ϋχει εκχωρηθεύ ςε μύα διεργαςύα δεν μπορεύ να αφαιρεθεύ από αυτό βύαια. Πρϋπει η ύδια η διεργαςύα να τον αποδεςμεύςει εκούςια. Κυκλικό αναμονό (Circular wait): Υπϊρχει ϋνα ςύνολο P 0, P 1,, P n-1 από διεργαςύεσ εν αναμονό, ϋτςι ώςτε η P 0 να περιμϋνει για ϋναν πόρο που ϋχει δεςμεύςει η P 1, η P 1 να περιμϋνει για ϋναν πόρο που ϋχει δεςμεύςει η P 2,, και η P n-1 να περιμϋνει για ϋναν πόρο που ϋχει δεςμεύςει η P 0. Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 30

Περύ «Προεκτοπιςιμότητασ» Οι πόροι μπορεύ να εύναι: Προεκτοπύςιμοι (preemptable): Μπορούν να αποςπαςτούν από κϊποια διεργαςύα χωρύσ ςοβαρϋσ παρενϋργειεσ π.χ., CPU, μνόμη Μη-προεκτοπύςιμοι (non-preemptable): Η απόςπαςό τουσ από κϊποια διεργαςύα προκαλεύ υπολογιςτικό ςφϊλμα π.χ., εκτυπωτόσ, ςυςκευό εγγραφόσ CD Τα αδιϋξοδα αφορούν μη-προεκτοπύςιμουσ πόρουσ Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 31

Γρϊφοσ Ανϊθεςησ Πόρων Γρϊφοσ με ςύνολο κόμβων V και ςύνολο ακμών Ε Το ςύνολο κόμβων V χωρύζεται ςε δύο τύπουσ: P = P 1, P 2,, P n, οι διεργαςύεσ του ςυςτόματοσ R = R 1, R 2,, R m, οι τύποι των πόρων του ςυςτόματοσ Το ςύνολο ακμών Ε χωρύζεται ςε δύο τύπουσ: Ακμό αύτηςησ: κατευθυνόμενη ακμό P i R j Ακμό ανϊθεςησ: κατευθυνόμενη ακμό R j P i Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 32

Συμβολιςμού Γρϊφου Ανϊθεςησ Πόρων Διεργαςύα P i P i Πόροσ R j με 4 ύδιεσ οντότητεσ Η P i κϊνει αύτηςη για μια οντότητα του R j P i R j Η P i κατϋχει μια οντότητα του πόρου R j P i R j Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 33

Παραδεύγματα Γρϊφων Ανϊθεςησ Πόρων Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 34

Γρϊφοσ Ανϊθεςησ Πόρων με Κύκλο αλλϊ όχι και Αδιϋξοδο Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 35

Βαςικϋσ Παρατηρόςεισ Αν ϋνασ γρϊφοσ δεν περιϋχει κύκλουσ δεν υπϊρχει αδιϋξοδο Αν ϋνασ γρϊφοσ περιϋχει κύκλο Αν υπϊρχει μόνο μια οντότητα για τον κϊθε πόρο αδιϋξοδο Αν υπϊρχουν αρκετϋσ οντότητεσ ανϊ τύπο πόρου πιθανότητα εμφϊνιςησ αδιεξόδου (αλλϊ όχι ςύγουρα αδιϋξοδο) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 36

Μϋθοδοι Χειριςμού Αδιεξόδων Αποτροπό: διαςφϊλιςη ότι το ςύςτημα δεν θα ειςϋλθει ποτϋ ςε κατϊςταςη αδιεξόδου (η ριζικό λύςη) Αποφυγό: προςεκτικό κατανομό των πόρων ούτωσ ώςτε το ςύςτημα να μη φτϊςει ςε κατϊςταςη αδιεξόδου Εντοπιςμόσ και ανϊκαμψη: Ανοχό: το ςύςτημα μπορεύ να ειςϋλθει ςε κατϊςταςη αδιεξόδου Εντοπιςμόσ: το αδιϋξοδο εντοπύζεται Ανϊκαμψη: εκτελούνται οι απαραύτητεσ ενϋργειεσ ούτωσ ώςτε το ςύςτημα να βγει από το αδιϋξοδο Στουρθοκαμηλιςμόσ : προςπούηςη ότι τα αδιϋξοδα δε ςυμβαύνουν ποτϋ ςε ϋνα ςύςτημα Η προςϋγγιςη αυτό χρηςιμοποιεύται ςτα περιςςότερα λειτουργικϊ ςυςτόματα, ςυμπεριλαμβανομϋνων και των UNIX και Windows Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 37

Αποτροπό Αδιεξόδου (Deadlock Prevention) [1] Μϋςω τησ προςβολόσ (εξαφϊνιςησ) κϊποιασ από τισ τϋςςερισ ςυνθόκεσ Προςβολό ςυνθόκησ αμοιβαύου αποκλειςμού: ϊρςη τησ αποκλειςτικόσ εκχώρηςησ πόρων Δύςκολο! εξ οριςμού κϊποιοι πόροι δεν εύναι διαμοιραζόμενοι Προςβολό ςυνθόκησ δϋςμευςησ και αναμονόσ: παροχό εγγυόςεων ότι όταν μια διεργαςύα κϊνει αύτηςη για ϋναν πόρο, δεν κατϋχει ϊλλουσ πόρουσ Απαιτεύ από τη διεργαςύα να αιτηθεύ και να τησ ανατεθούν όλοι οι πόροι πριν την ϋναρξη τησ εκτϋλεςησ, ό επιτρϋπει ςτισ διεργαςύεσ να κϊνουν αιτόςεισ μόνο όταν δεν κατϋχουν πόρουσ Δυςκολύα: η γνώςη όλων των πόρων από την αρχό Μειονεκτόματα: χαμηλό χρηςιμοπούηςη πόρων, πιθανότητα λιμοκτονύασ Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 38

Αποτροπό Αδιεξόδου (Deadlock Prevention) [2] Προςβολό ςυνθόκησ μη-προεκτόπιςησ: αφαύρεςη πόρων από μύα διεργαςύα που βρύςκεται ακόμα ςτο ςτϊδιο τησ αύτηςησ για πόρουσ Αν μια διεργαςύα που κατϋχει κϊποιουσ πόρουσ κϊνει αύτηςη για κϊποιον πόρο ο οπούοσ δεν μπορεύ να τησ ανατεθεύ αμϋςωσ, τότε όλοι οι πόροι που κρατούνται από τη διεργαςύα αποδεςμεύονται Η διεργαςύα θα ξεκινόςει ξανϊ μόνο όταν μπορϋςει να επανακτόςει όλουσ τουσ πόρουσ τησ που κατεύχε αλλϊ και αυτούσ για τουσ οπούουσ κϊνει αύτηςη Μη ρεαλιςτικό! (εύναι δυνατό να αφαιρϋςουμε τον εκτυπωτό ό τη ςυςκευό εγγραφόσ CD από μύα διεργαςύα?) Προςβολό ςυνθόκησ κυκλικόσ αναμονόσ: επιβολό μιασ ςυνολικόσ διϊταξησ όλων πόρων (δλδ., αρύθμηςη των πόρων) και αύτηςη για πόρουσ από τισ διεργαςύεσ ςε αύξουςα ςειρϊ τύπου των πόρων που χρειϊζονται Αποκλεύεται η ύπαρξη κύκλων ςτο γρϊφο ανϊθεςησ πόρων Δύςκολη η εφαρμογό ςτην πρϊξη, όταν οι πόροι εύναι πολλού (δλδ. πϊντα!) Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 39

Εντοπιςμόσ και Ανϊκαμψη (Detection and Recovery) Εντοπιςμόσ αδιεξόδου: Εύκολη υπόθεςη όταν υπϊρχει μύα οντότητα / πόρο Εντοπιςμόσ κύκλου ςτο Γρϊφο Ανϊθεςησ Πόρων Πιο πολύπλοκο όταν ϋχουμε πολλϋσ οντότητεσ / πόρο Ανϊκαμψη από αδιϋξοδο: Μϋςω προεκτόπιςησ Απόςπαςη πόρου από διεργαςύα Μϋςω αναςκευόσ (rollback) Οριςμόσ ςημεύων ιςορροπύασ των διεργαςιών και επιςτροφό ςε αυτϊ ςε περύπτωςη αδιεξόδου (επανεκύνηςη τησ διεργαςύασ από το ςημεύο αυτό) Μϋςω εξϊλλειψησ διεργαςιών Πολύ απλϊ: ςπϊςιμο του κύκλου μϋςω θανϊτωςησ κϊποιασ διεργαςύασ Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 40

Πώσ γύνεται ο εντοπιςμόσ αδιεξόδου? Δομϋσ δεδομϋνων: Λογικό αλγορύθμου: Βρεσ εϊν υπϊρχουν διεργαςύεσ οι οπούεσ αιτούνται περιςςότερουσ πόρουσ από όςουσ υπϊρχουν διαθϋςιμοι Αδιϋξοδο Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 41

Αποφυγό Αδιεξόδου (Deadlock Avoidance) Για να αποφεύγει τισ καταςτϊςεισ αδιεξόδου, ϋνα ςύςτημα πρϋπει να εύναι ςε θϋςη να αποφαςύζει πότε η εκχώρηςη ενόσ πόρου εύναι αςφαλόσ και μόνο εϊν εύναι αςφαλόσ να την πραγματοποιεύ Aςφαλόσ κατϊςταςη (safe state): υπϊρχει μια αςφαλόσ ακολουθύα όλων των διεργαςιών Παρατηρόςεισ: Αν ϋνα ςύςτημα εύναι ςε αςφαλό κατϊςταςη δεν υπϊρχει αδιϋξοδο Αν ϋνα ςύςτημα εύναι ςε μη αςφαλό κατϊςταςη πιθανότητα εμφϊνιςησ αδιεξόδου Αποφυγό αδιεξόδου διαςφϊλιςη ότι ϋνα ςύςτημα δεν θα ειςϋλθει ποτϋ ςε μη αςφαλό κατϊςταςη Ωςτόςο: το ότι το ςύςτημα θα ειςϋλθει ςε μη αςφαλό κατϊςταςη δε ςυνεπϊγεται απαραύτητα αδιϋξοδο! Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 42

Τροχιϋσ Πόρων Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 43

Αςφαλεύσ και Αναςφαλεύσ Καταςτϊςεισ Αςφαλόσ κατϊςταςη Αναςφαλόσ κατϊςταςη Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 44

Αλγόριθμοσ του Τραπεζύτη (Banker s Algorithm) Λογικό του αλγορύθμου: διαςφάλιςη ότι μία τράπεζα δε θα εκχωρούςε ποτέ τα διαθέςιμα μετρητά τησ με τρόπο τέτοιο που δε θα μπορούςε πλέον να ικανοποιήςει τισ ανάγκεσ των πελατών τησ Ουςιαςτικϊ αποτελεύ επϋκταςη του αλγορύθμου εντοπιςμού Χρόςη των ύδιων δομών δεδομϋνων Αποτρϋπει την εύςοδο ςε αναςφαλό κατϊςταςη Παρϊδειγμα (για μοναδικό πόρο): Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 45

Αλγόριθμοσ του Τραπεζύτη για Πολλούσ Πόρουσ Συγχρονιςμόσ Διεργαςιών & Αδιϋξοδα 46