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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

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

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

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

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

Ανάλυση της Ορθότητας Προγραμμάτων

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

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

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

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

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

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

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

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

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

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

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

Ανάλυση της Ορθότητας Προγραμμάτων

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

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

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

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

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

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

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

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

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

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Σχετική κίνηση αντικειμένων

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

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

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

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

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα

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

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

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

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

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

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

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

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

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

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

HY Λογική Διδάσκων: Δ. Πλεξουσάκης

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

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

CTL - Λογική Δένδρου Υπολογισμού (ΗR Κεφάλαιο 3.4)

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

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

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2. Στη δραστηριότητα αυτή θα μάθεις να δημιουργείς τις δικές σου εντολές.

Transcript:

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

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

Απόδειξη ιδιοτήτων Ιδανικά, η ορθότητα ενός ταυτόχρονου προγράμματος (συστήματος) πρέπει να επαληθευθεί συστηματικά Θεωρητική προσέγγιση oι επιθυμητές ιδιότητες προσδιορίζονται ρητά η (ουσιαστική) λογική του προγράμματος περιγράφεται με τυπικό τρόπο οι επιθυμητές ιδιότητες αποδεικνύονται με βάση συγκεκριμένους κανόνες/αξιώματα Προσέγγιση διεξοδικού ελέγχου oι επιθυμητές ιδιότητες προσδιορίζονται ρητά ελέγχονται για κάθε δυνατό σενάριο εκτέλεσης (κατάσταση) του συστήματος ΙΙΙ 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 Φ2 1 2 Φ2 Φ2 3 4 Φ2 5 Φ2 6 Φ2 Φ2 Φ2 7 8 9 Φ2 10 Φ2 ΙΙΙ 10 lalis@inf.uth.gr

Παράδειγμα: ντάμα με βατράχια (α) Μ Μ F F (β) F F M M Οι αρσενικοί βάτραχοι (Μ) μπορούν να κινηθούν μόνο προς τα δεξιά, οι θηλυκοί (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: tmp1=tmp1+1; i=tmp1 p3: : q1: tmp2=i q2: tmp2=tmp2+1; i=tmp2 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,1,? p2,q2 0,0,0 p1,q3 1,?,1 p3,q2 1,1,1 p3,q2 1,1,0 p2,q3 1,0,1 ρ p2,q3 1,1,1 p3,q3 2,1,2 p3,q3 1,1,1 p3,q3 2,2,1 ΙΙΙ 26 lalis@inf.uth.gr

Παράδειγμα ατέρμονης αναμονής int rdy=0; ueue q; : /* prepare data */ p1: rdy=1; p2: WAKEU(q); p3: : q1: if (rdy) goto q4; q2: WAIT(q); q3: /* use data */ Επιθυμητή ιδιότητα: (αν το φτάσει στην εντολή p2) το θα φτάσει στην εντολή q3 ΙΙΙ 27 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 */ Επιθυμητή ιδιότητα: (αν το φτάσει στην εντολή p2) τελικά η w θα είναι 0 (και το θα φτάσει στην εντολή q4) ΙΙΙ 28 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 ΙΙΙ 29 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 ΙΙΙ 30 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 ΙΙΙ 31 lalis@inf.uth.gr

Παρατήρηση Ο γράφος των καταστάσεων μεγαλώνει πολύ γρήγορα με το μέγεθος του κώδικα Μπορεί να γίνουν απλοποιήσεις, συγχωνεύοντας καταστάσεις και αγνοώντας καταστάσεις που δεν επηρεάζουν την απόδειξη της ιδιότητας που ενδιαφέρει Χρειάζεται προσοχή ώστε να μην απαλειφθούν / αποκρυφθούν ενδιάμεσες καταστάσεις που πιθανώς επηρεάζουν την απόδειξη της ορθότητας ΙΙΙ 32 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 ΙΙΙ 33 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 ΙΙΙ 34 lalis@inf.uth.gr

Αμοιβαίος αποκλεισμός Σε καμία κατάσταση δεν επιτρέπεται το να βρίσκεται στο ΚΤ και το να βρίσκεται στο ΚΤ s : =CS =CS Σε όλες τις καταστάσεις δεν πρέπει να ισχύει ότι το βρίσκεται στο ΚΤ και το βρίσκεται στο ΚΤ s : ( (=CS) (=CS) ) ΙΙΙ 35 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 ΟΚ ΙΙΙ 36 lalis@inf.uth.gr

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

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

Απουσία λιμοκτονίας (συνέχεια) Το μπορεί να μην ενδιαφερθεί να μπει στο ΚΤ ποτέ ή για ένα πολύ μεγάλο χρονικό διάστημα Αν υπάρχει κατάσταση όπου το να προσπαθεί να μπει στο ΚΤ και το δεν προσπαθεί να μπει στο ΚΤ, αν το λάβει τον επεξεργαστή τότε στην αμέσως επόμενη κατάσταση θα καταφέρει να μπει στο ΚΤ s : =TRY =IDL next(s,) : =CS ΙΙΙ 41 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 ΝΟΤ ΟΚ ΙΙΙ 42 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 ΙΙΙ 43 lalis@inf.uth.gr

Απουσία αδιεξόδου Δεν πρέπει να υπάρχει περίπτωση και να περιμένει το ένα το άλλο ενώ προσπαθούν να μπουν στο ΚΤ, και κανένα να μην καταφέρει τελικά να μπει στο ΚΤ Αν υπάρχει κατάσταση όπου και προσπαθούν να μπουν στο ΚΤ (εφόσον κάθε νήμα λαμβάνει τακτικά τον επεξεργαστή) τότε (για κάθε πιθανή εκτέλεση) υπάρχει μια επόμενη κατάσταση όπου ή είναι στο ΚΤ s : =TRY =TRY next*(s) : =CS =CS ΙΙΙ 44 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 ΝΟΤ ΟΚ ΙΙΙ 45 lalis@inf.uth.gr