Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1

Σχετικά έγγραφα
Εντοπισμός τερματισμού. Κατανεμημένα Συστήματα 1

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Ομαδική Επικοινωνία (Group Communication) Κατανεμημένα Συστήματα 1

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Συντονισμός και συμφωνία

Συνεπείς καθολικές καταστάσεις & επιβεβαίωση ιδιοτήτων. Κατανεμημένα Συστήματα 1

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Κατανεμημένη συμφωνία (distributed consensus) Κατανεμημένα Συστήματα 1

Συνεπής παρατήρηση εκτέλεσης & συνεπείς καθολικές καταστάσεις. Κατανεμημένα Συστήματα 1

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

Υλοποίηση Σηματοφόρων

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Διάλεξη 3: Αλγόριθμοι σε Γράφους ΙΙ. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Διάλεξη 6: Εκλογή Προέδρου σε Σύγχρονους Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

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

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

Εγγυημένη ποιότητα υπηρεσίας

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Διάλεξη 17: Συμφωνία με Βυζαντινά Σφάλματα. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

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

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1

Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1

Κατανεμημένος και Παράλληλος Προγραμματισμός MPI. Γρήγορος οδηγός αναφοράς 1/4/2017

Διάλεξη 4: Εκλογή Προέδρου σε Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

Πρωτόκολλα Ελέγχου προσπέλασης μέσου

Ανοχή βλαβών με καταγραφή κατάστασης και οπισθοδρόμηση (checkpoints & rollback) Κατανεμημένα Συστήματα 1

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

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

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

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

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 16 Νοεμβρίου 2013

Αποτίµησηκαθολικού κατηγορήµατος

Κατανεμημένα Συστήματα. Javascript LCR example

Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Κεφάλαιο 5: Τοπικά ίκτυα

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

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

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Αμοιβαίος αποκλεισμός

Παράλληλη Επεξεργασία Κεφάλαιο 10 ο Αντίγραφα Εργαζομένων

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 3: Καθολικά κατηγορήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

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

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Δομές Δεδομένων και Αλγόριθμοι

Επισκόπηση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Λεπτοµέρειες υλοποίησης αλγορίθµων

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1

οµήτης παρουσίασης Marzullo και Neiger αλγόριθµος Παράδειγµα Distributed Debugging Εισαγωγικά

Σειρά Προβλημάτων 1 Λύσεις

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

7.7 Πρωτόκολλο ARP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Λύση: Λύση: Λύση: Λύση:

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

Ιδιοκτησία Αντικειµένου

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων

Διάλεξη 13: Κατανεμημένη Κοινόχρηστη Μνήμη. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Φυσικά και λογικά ρολόγια. Κατανεμημένα Συστήματα 1

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Transcript:

Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr

Μοντέλο δικτύου/επικοινωνίας Αξιοπιστία (δεν χάνονται μηνύματα) Άγνωστη ταχύτητα μετάδοσης μηνυμάτων Αλλαγή σειράς των μηνυμάτων (προσπεράσματα) Ο αποστολέας δεν μπλοκάρεται και δεν γνωρίζει πότε το μήνυμα που έστειλε φτάνει στον παραλήπτη Ο παραλήπτης ειδοποιείται όταν φτάνει το μήνυμα Το μοντέλο αυτής της ασύγχρονης επικοινωνίας έχει εφαρμογή τόσο σε κατανεμημένα συστήματα όσο και σε συστήματα με πολλούς επεξεργαστές που (λόγω κλιμάκωσης) επικοινωνούν πάνω από ένα δίκτυο (interconnection network) Ταυτόχρονος Προγραμματισμός 2 lalis@inf.uth.gr

Application layer send deliver msg msg Messaging layer msg msg Network layer t Ταυτόχρονος Προγραμματισμός 3 lalis@inf.uth.gr

P1 send(m1) send(m2) P2 m2 delivered before m1 deliver(m2) send(m3) deliver(m1) m3 delivered before m2 P3 deliver(m3) deliver(m2) t Ταυτόχρονος Προγραμματισμός 4 lalis@inf.uth.gr

Αμοιβαίος αποκλεισμός Οι διεργασίες μπορεί να θελήσουν να κλειδώσουν ανά πάσα στιγμή κατά την διάρκεια της εκτέλεσης Αυτό μπορεί να γίνει πολλές φορές ή καμία Αμοιβαίος αποκλεισμός: αν μια διεργασία κλειδώσει, καμία άλλη διεργασία δεν θα καταφέρει να κλειδώσει αν το επιχειρήσει θα μπλοκάρει Απουσία λιμοκτονίας: αν μια διεργασία θελήσει να κλειδώσει, τελικά θα το καταφέρει Ταυτόχρονος Προγραμματισμός 5 lalis@inf.uth.gr

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

queue Ταυτόχρονος Προγραμματισμός 7 lalis@inf.uth.gr

queue lock Ταυτόχρονος Προγραμματισμός 8 lalis@inf.uth.gr

queue ok have lock Ταυτόχρονος Προγραμματισμός 9 lalis@inf.uth.gr

queue have lock lock Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr

queue have lock Ταυτόχρονος Προγραμματισμός 11 lalis@inf.uth.gr

queue lock have lock Ταυτόχρονος Προγραμματισμός 12 lalis@inf.uth.gr

queue have lock Ταυτόχρονος Προγραμματισμός 13 lalis@inf.uth.gr

queue unlock unlock Ταυτόχρονος Προγραμματισμός 14 lalis@inf.uth.gr

queue ok have lock Ταυτόχρονος Προγραμματισμός 15 lalis@inf.uth.gr

queue have lock Ταυτόχρονος Προγραμματισμός 16 lalis@inf.uth.gr

queue unlock unlock Ταυτόχρονος Προγραμματισμός 17 lalis@inf.uth.gr

queue have lock ok Ταυτόχρονος Προγραμματισμός 18 lalis@inf.uth.gr

queue have lock Ταυτόχρονος Προγραμματισμός 19 lalis@inf.uth.gr

queue unlock unlock Ταυτόχρονος Προγραμματισμός 2 lalis@inf.uth.gr

queue Ταυτόχρονος Προγραμματισμός 21 lalis@inf.uth.gr

Pi: Init: bool ok; Lock: ok=false; send(pc,<lock,myid>); while (!ok) {} Unlock: send(pc,<unlock>); On received <OK>: ok=true; Pc: Init: Queue q={}; On received <LOCK,p>: add(q,p); if (head(q) == p) { send(p,<ok>); } On received <UNLOCK>: rmv(q); p=head(q); if (p!= NULL) { send(p,<ok>); } Ταυτόχρονος Προγραμματισμός 22 lalis@inf.uth.gr

Χαρακτηριστικά Φόρτος επικοινωνίας Κλείδωμα: 2 μηνύματα (συνδυασμός με επιβεβαίωση) Ξεκλείδωμα: 1 μήνυμα Καθυστέρηση κλειδώματος 2 x MsgT Ο συντονιστής μπορεί να γίνει σημείο συμφόρησης Υπάρχει κόστος επικοινωνίας/συγχρονισμού, ακόμα και όταν δεν υφίσταται ανταγωνισμός (δηλαδή η ίδια διεργασία επιθυμεί να κλειδώσει επανειλημμένα, χωρίς να ενδιαφέρεται καμία άλλη) Ταυτόχρονος Προγραμματισμός 23 lalis@inf.uth.gr

Συμμετρικός αλγόριθμος (Ricart & Agrawala) Κλείδωμα: η διεργασία στέλνει σε όλες τις διεργασίες αίτηση με έναν αριθμό σειράς, και περιμένει να λάβει άδεια από όλες τις διεργασίες Αποστολή αδείας: μια διεργασία στέλνει άδεια αν δεν έχει στείλει αίτηση ή η δική της αίτηση έχει μεγαλύτερο αριθμό σειράς, διαφορετικά βάζει την αίτηση σε τοπική αποθήκη tie break με βάση τα αναγνωριστικά των διεργασιών Ο τοπικός αριθμός σειράς αυξάνεται κάθε φορά που λαμβάνεται αίτηση με μεγαλύτερο αριθμό σειράς Ξεκλείδωμα: η διεργασία δίνει άδεια σε όλες τις αιτήσεις που βρίσκει στην αποθήκη της Ταυτόχρονος Προγραμματισμός 24 lalis@inf.uth.gr

4 4 4 4 Ταυτόχρονος Προγραμματισμός 25 lalis@inf.uth.gr

5 : : : : OK lock,5. 4 4 lock,5. : : OK : : 5 Ταυτόχρονος Προγραμματισμός 26 lalis@inf.uth.gr

5 : OK : : OK : OK ok ok ok 5 5 ok ok : OK : OK : OK : OK 5 lock,5. Ταυτόχρονος Προγραμματισμός 27 lalis@inf.uth.gr

5 : OK : : OK : OK 5 5 have lock 5 lock,5. Ταυτόχρονος Προγραμματισμός 28 lalis@inf.uth.gr

5 5 lock,6. : OK : : OK : OK 6 : : : OK : have lock 5 lock,5. Ταυτόχρονος Προγραμματισμός 29 lalis@inf.uth.gr

6 lock,6. ok 6 : OK : : OK : OK 6 : OK : : OK : have lock 6 lock,5. lock,6. Ταυτόχρονος Προγραμματισμός 3 lalis@inf.uth.gr

6 lock,6. 6 : OK : : OK : OK 6 : OK : : OK : have lock 6 lock,5. lock,6. Ταυτόχρονος Προγραμματισμός 31 lalis@inf.uth.gr

6 lock,6. ok 6 : OK : OK : OK : OK 6 : OK : OK : OK : ok unlock 6 lock,5. lock,6. Ταυτόχρονος Προγραμματισμός 32 lalis@inf.uth.gr

lock,6. 6 have lock 6 6 : OK : OK : OK : 6 Ταυτόχρονος Προγραμματισμός 33 lalis@inf.uth.gr

lock,6. 6 unlock 6 ok 6 : OK : OK : OK : OK 6 Ταυτόχρονος Προγραμματισμός 34 lalis@inf.uth.gr

6 have lock 6 6 6 Ταυτόχρονος Προγραμματισμός 35 lalis@inf.uth.gr

6 unlock 6 6 6 Ταυτόχρονος Προγραμματισμός 36 lalis@inf.uth.gr

6 6 6 6 Ταυτόχρονος Προγραμματισμός 37 lalis@inf.uth.gr

Init: Queue q={}; seqn=, reqn=, acks; Lock: seqn++; reqn=seqn; acks=1; for-each p!= myid { send(p,<lock,myid,reqn>); } while (acks!= N) {} Unlock: reqn=; for (p=rmv(q); p!= NULL; p=rmv(q)) { send(p,<ok>); } On received <LOCK,p,n>: seqn = max(seqn,n); if (reqn == ) { send(p,<ok>); } else if (n < reqn) { send(p,<ok>); } else if (n == reqn) && (p < myid) { send(p,<ok>); } else { add(q,p); } On received <OK>: acks++; Ταυτόχρονος Προγραμματισμός 38 lalis@inf.uth.gr

Χαρακτηριστικά Φόρτος επικοινωνίας Κλείδωμα: 2 x (Ν-1) μηνύματα (1 με εκπομπή + Ν-1) (συνδυασμός με επιβεβαιώσεις) Καθυστέρηση κλειδώματος (Ν-1) x 2 x MsgT (2 x MsgT με παράλληλη επικοινωνία) Αποφυγή προσπεράσματος μιας διεργασίας που επιθυμεί να κλειδώσει, ανεξάρτητα από το πόσο αργά μεταδίδονται τα μηνύματα που αυτή στέλνει Μηδενικό κόστος αν δεν υφίσταται ανταγωνισμός (και η διεργασία ήταν η τελευταία που κλείδωσε) Μεγάλο κόστος όταν υφίσταται ανταγωνισμός Ταυτόχρονος Προγραμματισμός 39 lalis@inf.uth.gr

Αλγόριθμος σκυτάλης (Ricart & Agrawala) Δικαίωμα κλειδώματος έχει όποιος κρατά την σκυτάλη (η σκυτάλη πρέπει να αλλάζει χέρια κατάλληλα) Η σκυτάλη κουβαλάει πληροφορία για το πόσες φορές έχει λάβει την σκυτάλη κάθε διεργασία Κλείδωμα: αν η διεργασία δεν κρατά την σκυτάλη, στέλνει σε όλες τις διεργασίες αίτηση με έναν αριθμό σειράς, και περιμένει να λάβει την σκυτάλη Αποστολή αδείας: η διεργασία που κρατά την σκυτάλη, αν δεν έχει κλειδώσει, στέλνει την σκυτάλη σε μια από τις διεργασίες που την έχουν ζητήσει (αλλά ακόμα δεν την έχουν λάβει) Ξεκλείδωμα: αποστολή σκυτάλης (αν έχει ζητηθεί) Ταυτόχρονος Προγραμματισμός 4 lalis@inf.uth.gr

reqs reqs reqs reqs Ταυτόχρονος Προγραμματισμός 41 lalis@inf.uth.gr

reqs reqs lock,,1 reqs reqs 1 Ταυτόχρονος Προγραμματισμός 42 lalis@inf.uth.gr

reqs 1 reqs 1 token,[,,,] 1 reqs reqs 1 Ταυτόχρονος Προγραμματισμός 43 lalis@inf.uth.gr

reqs 1 reqs 1 1 reqs reqs 1 have lock 1 Ταυτόχρονος Προγραμματισμός 44 lalis@inf.uth.gr

reqs 1 1 lock,,1 reqs 1 1 reqs reqs 1 have lock 1 Ταυτόχρονος Προγραμματισμός 45 lalis@inf.uth.gr

reqs 1 1 reqs 1 1 1 1 reqs reqs 1 1 have lock 1 Ταυτόχρονος Προγραμματισμός 46 lalis@inf.uth.gr

reqs 1 1 lock,,1 reqs 1 1 1 1 1 reqs reqs 1 1 have lock 1 Ταυτόχρονος Προγραμματισμός 47 lalis@inf.uth.gr

reqs 1 1 1 reqs 1 1 1 1 1 1 reqs reqs 1 1 1 have lock 1 Ταυτόχρονος Προγραμματισμός 48 lalis@inf.uth.gr

reqs 1 1 1 reqs 1 1 1 token,[,1,,] 1 1 1 reqs reqs 1 1 1 unlock 1 Ταυτόχρονος Προγραμματισμός 49 lalis@inf.uth.gr

reqs 1 1 1 have lock reqs 1 1 1 1 1 1 reqs 1 1 reqs 1 1 1 1 Ταυτόχρονος Προγραμματισμός 5 lalis@inf.uth.gr

reqs 1 1 1 unlock token,[,1,1,] reqs 1 1 1 1 1 1 reqs 1 1 reqs 1 1 1 1 Ταυτόχρονος Προγραμματισμός 51 lalis@inf.uth.gr

reqs 1 1 1 1 1 1 have lock reqs 1 1 1 1 1 1 reqs 1 1 reqs 1 1 1 1 Ταυτόχρονος Προγραμματισμός 52 lalis@inf.uth.gr

reqs 1 1 1 1 1 1 unlock reqs 1 1 1 1 1 1 reqs 1 1 reqs 1 1 1 1 Ταυτόχρονος Προγραμματισμός 53 lalis@inf.uth.gr

reqs 1 1 1 1 1 1 reqs 1 1 1 1 1 1 reqs 1 1 reqs 1 1 1 1 Ταυτόχρονος Προγραμματισμός 54 lalis@inf.uth.gr

Init: int reqs[n]={,,}, [N]={,,}; bool havetoken=(myid == ); Lock: if (!havetoken) { reqs[myid]++; for-each p!= myid { send(p,<lock,myid,reqs[myid]>); } while (!havetoken) {} } havetoken=false; Unlock: havetoken=true; [myid] = reqs[myid]; sendtoken(); // yield On received <LOCK,p,k>: reqs[p] = max(reqs[p],k); if (havetoken) { sendtoken; } sendtoken(): if for-some p: reqs[p] > [p] { send(p,<token,[]>); havetoken=false; } On received <TOKEN,g[]>: = g; havetoken = true; Ταυτόχρονος Προγραμματισμός 55 lalis@inf.uth.gr

Χαρακτηριστικά Φόρτος επικοινωνίας Κλείδωμα: Ν μηνύματα (2 αν υποστηρίζεται εκπομπή) Καθυστέρηση κλειδώματος Ν x MsgT (2 x MsgT αν υποστηρίζεται εκπομπή) Μηδενικό κόστος αν δεν υφίσταται ανταγωνισμός Μέτριο κόστος όταν υφίσταται ανταγωνισμός Ανάλογα με το πώς εξετάζονται οι εισαγωγές στους πίνακες, μπορεί να δοθεί προτεραιότητα (οπότε υπάρχει και περίπτωση λιμοκτονίας) ή να δοθούν εγγυήσεις δικαιοσύνης (απουσία λιμοκτονίας) Ταυτόχρονος Προγραμματισμός 56 lalis@inf.uth.gr

Αλγόριθμος δέντρου (Neilsen-Mizuno) Οι διεργασίες οργανώνονται σε εικονικό δέντρο: η ρίζα έχει την σκυτάλη, και οι υπόλοιπες διεργασίες έχουν κατευθυνόμενες ακμές προς την ρίζα Κλείδωμα: αν η διεργασία δεν κρατά την σκυτάλη, στέλνει αίτηση προς την ρίζα του δέντρου η αίτηση προωθείται προς την ρίζα, ανακατευθύνοντας τις ακμές έτσι ώστε να δείχνουν προς την διεργασία που έστειλε την αίτηση Αποστολή άδειας: η διεργασία που κρατά την σκυτάλη, αν δεν έχει κλειδώσει, στέλνει την σκυτάλη στην διεργασία που την ζητά, ανακατευθύνοντας την ακμή μέσω της οποίας έλαβε την αίτηση Ξεκλείδωμα: αποστολή σκυτάλης, ως άνω Ταυτόχρονος Προγραμματισμός 57 lalis@inf.uth.gr

4 have lock 4 4 1 p5 3 Ταυτόχρονος Προγραμματισμός 58 lalis@inf.uth.gr

4 have lock 4 4 lock,, 2 p5 3 Ταυτόχρονος Προγραμματισμός 59 lalis@inf.uth.gr

4 have lock 2 lock,, 4 2 p5 3 Ταυτόχρονος Προγραμματισμός 6 lalis@inf.uth.gr

1 2 have lock 2 4 2 p5 3 Ταυτόχρονος Προγραμματισμός 61 lalis@inf.uth.gr

1 2 have lock 2 4 lock,p5,p5 2 p5 5 Ταυτόχρονος Προγραμματισμός 62 lalis@inf.uth.gr

1 2 have lock 2 lock,,p5 5 2 p5 5 Ταυτόχρονος Προγραμματισμός 63 lalis@inf.uth.gr

3 2 have lock 2 lock,,p5 5 2 p5 5 Ταυτόχρονος Προγραμματισμός 64 lalis@inf.uth.gr

3 2 have lock 4 5 lock,,p5 2 p5 5 Ταυτόχρονος Προγραμματισμός 65 lalis@inf.uth.gr

3 2 have lock 4 5 1 5 p5 5 Ταυτόχρονος Προγραμματισμός 66 lalis@inf.uth.gr

3 2 unlock 4 token 5 1 5 p5 5 Ταυτόχρονος Προγραμματισμός 67 lalis@inf.uth.gr

3 4 5 1 5 p5 5 have lock Ταυτόχρονος Προγραμματισμός 68 lalis@inf.uth.gr

3 4 5 1 5 token p5 5 unlock Ταυτόχρονος Προγραμματισμός 69 lalis@inf.uth.gr

3 4 5 have lock 1 p5 5 Ταυτόχρονος Προγραμματισμός 7 lalis@inf.uth.gr

3 4 5 unlock 1 p5 5 Ταυτόχρονος Προγραμματισμός 71 lalis@inf.uth.gr

3 4 5 1 p5 5 Ταυτόχρονος Προγραμματισμός 72 lalis@inf.uth.gr

Init: int =(init to form a tree), =; bool havetoken=( == myid); Lock: if (!havetoken) { send(,<lock,myid,myid>); =myid; while (!havetoken) {} } havetoken=false; Unlock: if ( == ) { havetoken=true; } else { send(,<token>); =; } On received <LOCK,p,org>: if (!= myid) { send(,<lock,myid,org>); } else if havetoken { send(org,<token>); havetoken=false; } else { =org; } =p; On received <TOKEN>: havetoken = true; Ταυτόχρονος Προγραμματισμός 73 lalis@inf.uth.gr