ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 664: Ανάλυση και Επαλήθευση Συστημάτων ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ ΗΜΕΡΟΜΗΝΙΑ : Πέμπτη, 21 Μαρτίου 2013 ΔΙΑΡΚΕΙΑ : 14:00 16:00 ΔΙΔΑΣΚΟΥΣΑ : Άννα Φιλίππου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Οδηγίες: Να διαβάσετε προσεχτικά και να απαντήσετε σε όλες τις ερωτήσεις. Να γράψετε τις απαντήσεις σας (καθαρά) στο εξεταστικό δοκίμιο. Ο άριστος βαθμός της εξέτασης είναι 100. Καλή Επιτυχία! Ερώτηση Βαθμός 1 2 3 4 Τελικός Βαθμός:
ΕΡΩΤΗΣΗ 1 [26 μονάδες] Θεωρήστε το πιο κάτω πρωτόκολλο το οποίο επιχειρεί να πετύχει αμοιβαίο αποκλεισμό ανάμεσα σε δύο παράλληλες διεργασίες. Οι γραμμές των δύο διεργασιών έχουν αριθμηθεί ως p1-p3 και q1-q3. Σημειώστε ότι οι ονομασίες p3 και q3 συγχωνεύουν τις δύο τελευταίες γραμμές των δύο διεργασιών με στόχο να διευκολύνουν τη ζητούμενη ανάλυση. bool want p := false, want q := false; int last = 1; while true do p1: atomic{ want p = true; last = 1;} p2: wait until(want q = false OR last = 2) p3: critical section; want p = false; while true do q1: atomic{ want q = true; last = 2;} q2: wait until(want p = false OR last = 1) q3: critical section; want q = false; (α) [8 μονάδες] Να μοντελοποιήσετε το πρωτόκολλο ως ένα σύστημα μεταβάσεων.
(β) [10 μονάδες] Να αποδώσετε το σύστημα μεταβάσεων του πρωτοκόλλου γραφικά (παρεμβαλλόμενη διάταξη).
(γ) [3 μονάδες] Διασφαλίζει το πρωτόκολλο αμοιβαίο αποκλεισμό; Εξηγήστε γιατί/γιατί όχι. (δ) [5 μονάδες] Παρουσιάστε μονοπάτι χρησιμοποιώντας τη γραφική αναπαράσταση του συστήματος μεταβάσεων που κατασκευάσατε στο (β) για να δείξετε ότι, ενώ η πρώτη διεργασία επιθυμεί να εισέλθει στο κρίσιμό της τμήμα, δεν το πετυχαίνει ποτέ. Ποιος είναι ο ασθενέστερος τύπος δικαιοσύνης που πρέπει να επιβληθεί στο σύστημα έτσι ώστε να αποφευχθεί αυτό το φαινόμενο;
ΕΡΩΤΗΣΗ 2 [30 μονάδες] (α) [8 μονάδες] Να διατυπώσετε τις πιο κάτω προτάσεις στον χρονικό λογισμό CTL. (i) Είναι δυνατόν το p να εμφανιστεί σε δύο διαδοχικές καταστάσεις. (ii) Μετά το p, αν αυτό εμφανιστεί, το q δεν εμφανίζεται ποτέ ξανά. (iii) To p θα εμφανιστεί ακριβώς μια φορά.
(β) [7 μονάδες] Θεωρήστε την ακόλουθη δομή Kripke. {r} 1 {p,t} 2 3 {p,q} 4 {r,q} Να εφαρμόσετε τον αλγόριθμο μοντελοελέγχου της CTL για να ελέγξετε κατά πόσο η κατάσταση 1 της δομής ικανοποιεί την ιδιότητα που ακολουθεί. E [ EG (q r) U EX (q AF (p s)) ]
(γ) [15 μονάδες] Να αποφασίσετε ποια από τα πιο κάτω ζεύγη προτάσεων περιέχουν ισοδύναμες προτάσεις. Αν δύο προτάσεις είναι ισοδύναμες να δώσετε απόδειξη χρησιμοποιώντας τη σημασιολογία, διαφορετικά να παρουσιάσετε δομή Kripke στην οποία να ικανοποιείται η μία ιδιότητα αλλά όχι η άλλη. (i) F (p G q) και (F p) (F G q) (ii) X (p G q) και (X p) (X G q)
ΕΡΩΤΗΣΗ 3 [32 μονάδες] (α) [10 μονάδες] Ακολουθεί ένα μοντέλο γραμμένο στη γλώσσα Promela. chan forks[3] = [0] of { bool }; proctype Phil(byte n, chan left, chan right){ bool x, y; end: do :: printf( Philosopher %d is thinking\n,n); left?(x); right?(y); printf( Philosopher %d is eating\n,n); right!true; left!true; od } proctype Fork(chan ch){ bool z; do :: ch! true; ch? (z); od } init { } atomic{ run Fork(forks[0]); run Fork(forks[1]); run Fork(forks[2]); run Phil(0,forks[0],forks[1]); run Phil(1,forks[1],forks[2]); run Phil(2,forks[2],forks[0]); } Το μοντέλο αυτό μπορεί να εμφανίσει αδιέξοδο. Να εξηγήσετε πως μπορεί να εμφανιστεί το αδιέξοδο με συγκεκριμένες αναφορές στον κώδικα.
(β) Θεωρήστε τον πιο κάτω Promela κώδικα. byte mode = 1; int x = 0, y = 0; active proctype m(){ endloop: if :: mode = 1 :: mode = 2 fi; do :: x := x+1; :: mode == 1 && x > y -> x = x-1 :: mode == 2 && y < x -> y = y+10 :: mode == 3 -> goto endloop od; count = 0 } active proctype n(){ do :: mode = 3 od } (i) [8 μονάδες] Να διατυπώσετε τις πιο κάτω προτάσεις στη χρονική λογική LTL. Στο μέλλον η μεταβλητή y θα πάρει τιμή > 4. Η μεταβλητή mode θα πάρει αναπόφευκτα την τιμή 3. Αν κάποια στιγμή η μεταβλητή y πάρει τιμή < x τότε θα παραμείνει < x μέχρι που, κάποια στιγμή στο μέλλον, η μεταβλητή mode πάρει την τιμή 2. Η μεταβλητή x δεν θα πάρει ποτέ την τιμή 100.
(ii) [8 μονάδες] Να αποφασίσετε κατά πόσο οι προτάσεις από το μέρος (i) ικανοποιούνται από το μοντέλο. (iii) [6 μονάδες] Να αναθεωρήσετε τις απαντήσεις σας από το μέρος (ii) υποθέτοντας ότι ο μοντελοέλεγχος διενεργείται με την υπόθεση ότι ο χρονοδρομολογητής του συστήματος (scheduler) εφαρμόζει ελαφρά δικαιοσύνη μεταβάσεων (weak fairness).
ΕΡΩΤΗΣΗ 4 [12 μονάδες] Να συγκρίνετε τους χρονικούς λογισμούς LTL, CTL και CTL * ως προς τις δυνατότητες και αδυναμίες τους για το μοντελοέλεγχο συστημάτων.
ΕΠΙΠΡΟΣΘΕΤΟΣ ΧΩΡΟΣ