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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αυτοματοποιημένη Επαλήθευση

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

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

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες]

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

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

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

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

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

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

Ψευδοκώδικας. November 7, 2011

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

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

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

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

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

Μεταγλωττιστές Βελτιστοποίηση

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Εισαγωγή στην. Γιάννης Σμαραγδάκης

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

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

ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΣΤΗ CTL/LTL

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Εισαγωγή στον Προγραμματισμό

Μεταγλωττιστές Βελτιστοποίηση

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

ΠΡΟΔΙΑΓΡΑΦΗ ΙΔΙΟΤΗΤΩΝ ΜΕ ΧΡΟΝΙΚΗ ΛΟΓΙΚΗ Ι

ΑΥΤΟΜΑΤΑ Ι ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ. 29 Ιουνίου 2007 ΔΙΑΦΑΝΕΙΑ 1

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

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

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

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

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

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

ΕΠΛ 664 Ανάλυση και Επαλήθευση Συστημάτων 8-1

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

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

Λύσεις 4ης Σειράς Ασκήσεων

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

Λύσεις για τις ασκήσεις του lab5

Συνέπεια μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Μετρικές & Επιδόσεις. Κεφάλαιο V

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Red-Black Δέντρα. Red-Black Δέντρα

Σειρά Προβλημάτων 3 Ημερομηνία Παράδοσης: 04/04/16

Μάθημα 8 ο Η εντολή ανδιαφορετικά

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

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

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

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Αδιέξοδα (Deadlocks)

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

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

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Transcript:

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων ΙΙΙ 1 lalis@inf.uth.gr

Ιδιότητες προγραμμάτων Ιδιότητα ασφάλειας (safety properties): δεν θα φτάσουμε ποτέ σε μια ανεπιθύμητη κατάσταση Ιδιότητα προόδου/ζωτικότητας (progress/liveness properties): κάποτε/τελικά θα φτάσουμε σε μια επιθυμητή κατάσταση Μια ιδιότητα ασφάλειας μπορεί να εκφραστεί ως άρνηση μιας ιδιότητας προόδου, και το αντίστροφο always {Χ >= 0} not eventually {Χ < 0} Ένα πρόγραμμα χαρακτηρίζεται ως «ορθό» εφόσον ικανοποιεί τις επιθυμητές ιδιότητες προόδου χωρίς να παραβιάζει τις επιθυμητές ιδιότητες ασφάλειας ΙΙΙ 2 lalis@inf.uth.gr

Απόδειξη ιδιοτήτων Ιδανικά, η ορθότητα ενός ταυτόχρονου προγράμματος (συστήματος) πρέπει να επαληθευθεί συστηματικά Αυτό δεν μπορεί να γίνει μέσω «τυχαίων» σεναρίων μικτής εκτέλεσης είναι πολύ εύκολο να γίνουν λάθη ή/και να μην ληφθούν υπόψη προβληματικά σενάρια Χρειάζεται διεξοδικός έλεγχος όλων των πιθανών σεναρίων μικτής εκτέλεσης για τα τμήματα κώδικα που πιθανώς υπάρχουν συνθήκες ανταγωνισμού Όλα τα πιθανά σενάρια εκτέλεσης μπορεί να αναπαρασταθούν μέσω ενός γράφου καταστάσεων Οι επιθυμητές ιδιότητες μπορεί να αποδειχθεί ότι ισχύουν (ή όχι) μέσω αυτού του γράφου ΙΙΙ 3 lalis@inf.uth.gr

Γράφος καταστάσεων Οι πιθανές εκτελέσεις ενός ταυτόχρονου συστήματος περιγράφονται με την μορφή ενός γράφου G=(V,E) Ο κόμβος v i V αντιστοιχεί σε μια συγκεκριμένη εφικτή/πιθανή κατάσταση (που μπορεί να προκύψει κατά την ταυτόχρονη εκτέλεση) Η κατευθυνόμενη ακμή e=(v i,v j ) E αντιστοιχεί σε μια πιθανή μετάβαση από την κατάσταση v i στην v j Οι μεταβάσεις πραγματοποιούνται μέσα από εντολές που θεωρούμε ότι πραγματοποιούνται ατομικά Μια πιθανή εκτέλεση x={v 0,v 1,v 2, } είναι μια διαδρομή κατά μήκος των ακμών του γράφου ΙΙΙ 4 lalis@inf.uth.gr

κατάσταση αρχική κατάσταση μετάβαση εκτέλεση τερματική κατάσταση ΙΙΙ 5 lalis@inf.uth.gr

Επαλήθευση ιδιοτήτων Ιδιότητα ασφάλειας (safety property) always Φ Για κάθε κατάσταση v i ισχύει Φ(v i ) Ιδιότητα προόδου (progress property) if Φ1 eventually Φ2 Αν υπάρχει κατάσταση v i που να ισχύει Φ1(v i ), τότε κάθε διαδρομή/εκτέλεση που περνάει από την v i περνάει στην συνέχεια, μέσα από μια ή περισσότερες μεταβάσεις, από μια κατάσταση v j όπου ισχύει Φ2(v j ) ΙΙΙ 6 lalis@inf.uth.gr

always Φ 0 Φ 1 Φ 2 Φ 3 Φ 4 Φ 5 Φ 6 Φ 7 Φ 8 Φ 9 Φ 10 Φ ΙΙΙ 7 lalis@inf.uth.gr

always Φ 0 Φ 1 Φ 2 Φ 3 Φ 4 5 Φ 6 Φ 7 Φ 8 Φ 9 Φ 10 Φ ΙΙΙ 8 lalis@inf.uth.gr

if Φ1 eventually Φ2 0 Φ1 1 2 3 Φ2 4 5 6 Φ2 7 8 9 Φ2 10 ΙΙΙ 9 lalis@inf.uth.gr

if Φ1 eventually Φ2 0 Φ1 1 2 3 4 5 6 Φ2 7 Φ2 8 9 Φ2 10 ΙΙΙ 10 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια (α) Μ Μ F F (β) F F M M Δίνονται 4 βάτραχοι, 2 αρσενικοί (M) και 2 θηλυκοί (F) Αρχικά, κάθονται σε πέτρες, όπως δείχνει το σχήμα (α) Οι αρσενικοί βάτραχοι μπορούν να κινηθούν μόνο προς τα δεξιά ενώ οι θηλυκοί μόνο προς τα αριστερά Ένας βάτραχος μπορεί να πηδήσει σε μια άδεια πέτρα αν είναι δίπλα του ή αν μεσολαβεί μόνο ένας βάτραχος Είναι εφικτό οι βάτραχοι να φτάσουν στις θέσεις (β); Είναι εγγυημένο; ΙΙΙ 11 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF ΙΙΙ 12 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF ΙΙΙ 13 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF ΙΙΙ 14 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F ΙΙΙ 15 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF ΙΙΙ 16 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF ΙΙΙ 17 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF _FMFM MFF_M F_MMF ΙΙΙ 18 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF _FMFM MFF_M F_MMF ΙΙΙ 19 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF _FMFM MFF_M F_MMF F_MFM ΙΙΙ 20 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF _FMFM MFF_M F_MMF F_MFM FFM_M ΙΙΙ 21 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MFM_F MFMF_ MF_MF MF_FM MFFM FMMF _FMFM MFF_M F_MMF F_MFM FFM_M FF_MM ΙΙΙ 22 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια MM_FF _MMFF M_MFF MMF_F MMFF_ MFM_F M_FMF MFMF_ MF_MF _MFMF MF_FM MFFM FMMF FM_MF _FMFM MFF_M F_MMF FMFM_ F_MFM FMF_M FFM_M F_FMM FF_MM ΙΙΙ 23 lalis@inf.uth.gr

Γράφοι καταστάσεων με κώδικα int i=0; p1: i=1 p2: i=2 p3: if (i>0) { goto p3 } p1, i is 0 p2, i is 1 p3, i is 2 Σύμβαση: ο μετρητής εντολών (program counter) δείχνει στην επόμενη εντολή προς εκτέλεση Οι εντολές που εμφανίζονται σε μια γραμμή θεωρούμε ότι εκτελούνται ατομικά, και στην συνέχεια ο μετρητής εντολών αυξάνεται κατά μια θέση ή με βάση ένα άλμα Η εκτέλεση μιας εντολής αναμονής δεν αλλάζει τον μετρητή εντολών όσο ισχύει η συνθήκη αναμονής ΙΙΙ 24 lalis@inf.uth.gr

Παράδειγμα ασυνέπειας δεδομένων int i=0; : p1: tmp1=i p2: i=tmp1+1 p3: : q1: tmp2=i q2: i=tmp2+1 q3: Επιθυμητή ιδιότητα: Όταν οι διεργασίες φτάσουν στις εντολές p3 και q3, τότε η i να έχει την τιμή 2 ΙΙΙ 25 lalis@inf.uth.gr

Παράδειγμα ασυνέπειας δεδομένων #εντολής #εντολής i tmp1 tmp2 p1,q1 0,?,? p2,q1 0,0,? p1,q2 0,?,0 p3,q1 1,0,? p2,q2 0,0,0 p1,q3 1,?,0 p3,q2 1,0,1 p3,q2 1,0,0 p2,q3 1,0,0 ρ p2,q3 1,1,0 p3,q3 2,0,1 p3,q3 1,0,0 p3,q3 2,1,0 ΙΙΙ 26 lalis@inf.uth.gr

Παράδειγμα ατέρμονης αναμονής int rdy=0; int w=0; /* εικονική μεταβλητή κατάστασης αναμονής */ : /* prepare data */ p1: rdy=1; p2: if (w) { w=0; } p3: : q1: if (rdy) goto q4; q2: w=1; q3: if (w) { goto q3; } q4: /* use data */ Επιθυμητή ιδιότητα: τελικά η w θα είναι 0 (και το θα φτάσει στην εντολή q4) ΙΙΙ 27 lalis@inf.uth.gr

Παράδειγμα ατέρμονης αναμονής #εντολής #εντολής rdy w p1,q1 0,0 p2,q1 1,0 p3,q1 1,0 p2,q4 1,0 p1,q2 0,0 p2,q2 1,0 p1,q3 0,1 p3,q4 1,0 p3,q2 1,0 p2,q3 1,1 ρ p3,q3 1,1 p3,q3 1,0 ΙΙΙ 28 lalis@inf.uth.gr

Αλγόριθμος A1 int turn=; : p1: p2: if (turn!=) {goto p2;} p3: CS p4: turn=; goto p1; : q1: q2: if (turn!=) {goto q2;} q3: CS q4: turn=; goto q1; State Description rogram Counter IDL idle no wish to enter CS p1/q1 TRY trying to enter CS p2/q2 CS inside CS p3-p4/q3-q4 ΙΙΙ 29 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3,q1,cs,idl p2,q2,try,try p4,q1,cs,idl p3,q2,cs,try p1,q1,idl,idl p4,q2,cs,try p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3,idl,cs p2,q3,try,cs p2,q4,try,cs p1,q4,idl,cs ΙΙΙ 30 lalis@inf.uth.gr

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

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3,q1,cs,idl p2,q2,try,try p4,q1,cs,idl p3,q2,cs,try p1,q1,idl,idl p4,q2,cs,try p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3,idl,cs p2,q3,try,cs p2,q4,try,cs p1,q4,idl,cs ΙΙΙ 32 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3-p4,q1,cs,idl p2,q2,try,try p3-p4,q2,cs,try p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3-q4,idl,cs p2,q3-q4,try,cs ΙΙΙ 33 lalis@inf.uth.gr

Αμοιβαίος αποκλεισμός Σε καμία κατάσταση δεν επιτρέπεται το να βρίσκεται στο ΚΤ και το να βρίσκεται στο ΚΤ s : =CS =CS Σε όλες τις καταστάσεις δεν πρέπει να ισχύει ότι το βρίσκεται στο ΚΤ και το βρίσκεται στο ΚΤ s : ( (=CS) (=CS) ) ΙΙΙ 34 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3-p4,q1,cs,idl p2,q2,try,try p3-p4,q2,cs,try p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3-q4,idl,cs p2,q3-q4,try,cs ΟΚ ΙΙΙ 35 lalis@inf.uth.gr

Απουσία αδιεξόδου Δεν πρέπει να υπάρχει περίπτωση και να περιμένει το ένα το άλλο ενώ προσπαθούν να μπουν στο ΚΤ, και κανένα να μην καταφέρει τελικά να μπει στο ΚΤ Αν υπάρχει κατάσταση όπου και προσπαθούν να μπουν στο ΚΤ (εφόσον κάθε νήμα λαμβάνει τακτικά τον επεξεργαστή) τότε (για κάθε πιθανή εκτέλεση) υπάρχει μια επόμενη κατάσταση όπου ή είναι στο ΚΤ s : =TRY =TRY next*(s) : =CS =CS ΙΙΙ 36 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3-p4,q1,cs,idl p2,q2,try,try p3-p4,q2,cs,try p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3-q4,idl,cs p2,q3-q4,try,cs ΟΚ ΙΙΙ 37 lalis@inf.uth.gr

Απουσία λιμοκτονίας Δεν πρέπει να υπάρχει περίπτωση το να προσπαθεί να μπει στο ΚΤ, και να μην καταφέρει ποτέ να μπει στο ΚΤ Αν υπάρχει κατάσταση όπου προσπαθεί να μπει στο ΚΤ (εφόσον κάθε νήμα λαμβάνει τακτικά τον επεξεργαστή) τότε (για κάθε πιθανή εκτέλεση) υπάρχει μια επόμενη κατάσταση όπου είναι στο ΚΤ s : =TRY next*(s) : =CS ΙΙΙ 38 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3-p4,q1,cs,idl p2,q2,try,try p3-p4,q2,cs,try p1,q1,idl,idl p2,q1,try,ncs p1,q2,idl,try p2,q2,try,try p1,q3-q4,idl,cs p2,q3-q4,try,cs ΟΚ ΙΙΙ 39 lalis@inf.uth.gr

Απουσία λιμοκτονίας (συνέχεια) Το μπορεί να μην ενδιαφερθεί να μπει στο ΚΤ ποτέ ή για ένα πολύ μεγάλο χρονικό διάστημα Αν υπάρχει κατάσταση όπου το να προσπαθεί να μπει στο ΚΤ και το δεν προσπαθεί να μπει στο ΚΤ, και το λάβει τον επεξεργαστή, τότε στην αμέσως επόμενη κατάσταση θα καταφέρει να μπει στο ΚΤ s : =TRY =IDL next(s,) : =CS ΙΙΙ 40 lalis@inf.uth.gr

p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p3-p4,q1,cs,idl p2,q2,try,try p3-p4,q2,cs,try p1,q1,idl,idl p2,q1,try,idl p1,q2,idl,try p2,q2,try,try p1,q3-q4,idl,cs p2,q3-q4,try,cs ΝΟΤ ΟΚ ΙΙΙ 41 lalis@inf.uth.gr

Αλγόριθμος B2 boolean want=false,want=false; : p1: p2: want=true; p3: if (want) {goto p3;} p4: CS p5: want=false; goto p1; : q1: q2: want=true; q3: if (want) {goto q3;} q4: CS q5: want=false; goto q1; State Description rogram Counter IDL idle no wish to enter CS p1/q1 TRY trying to enter CS p2-p3/q2-q3 CS inside CS p4-p5/q4-q5 ΙΙΙ 42 lalis@inf.uth.gr

Απουσία αδιεξόδου Δεν πρέπει να υπάρχει περίπτωση και να περιμένει το ένα το άλλο ενώ προσπαθούν να μπουν στο ΚΤ, και κανένα να μην καταφέρει τελικά να μπει στο ΚΤ Αν υπάρχει κατάσταση όπου και προσπαθούν να μπουν στο ΚΤ (εφόσον κάθε νήμα λαμβάνει τακτικά τον επεξεργαστή) τότε (για κάθε πιθανή εκτέλεση) υπάρχει μια επόμενη κατάσταση όπου ή είναι στο ΚΤ s : =TRY =TRY next*(s) : =CS =CS ΙΙΙ 43 lalis@inf.uth.gr

p1,q1 F,F,IDL,IDL p2,q1 F,F,TRY,IDL p1,q2 F,F,IDL,TRY p3,q1 T,F,TRY,IDL p2,q2 F,F,TRY,TRY p1,q3 F,T,IDL,TRY p3,q2 T,F,TRY,TRY p2,q3 F,T,TRY,TRY p3,q3 T,T,TRY,TRY ΝΟΤ ΟΚ ΙΙΙ 44 lalis@inf.uth.gr