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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

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

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

Συλλογές, Στοίβες και Ουρές

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

make Προγραμματισμός II 1

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Λογαριασμοί Χρηστών στα Windows 7 / Windows 8

Γενικά. Σχήµα Ι: Επικοινωνία Client-Server, ExecuteCommand TuniConnection

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

9. Συστολικές Συστοιχίες Επεξεργαστών

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

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

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

Παράδειγµα: Προσοµοίωση µιας ουράς FIFO Οι λειτουργίες που υποστηρίζονται από µια ουρά FIFO είναι: [enq(q,x), ack(q)] [deq(q), return(q,x)] όπου x είν

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

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

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

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

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

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Ανάπτυξη και Σχεδίαση Λογισμικού

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

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

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

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Σήμερα. Εργαστήρια Τεχνικών Προγραμματισμού. Διαδικαστικά 19/3/2015. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

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

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

ΑΣΚΗΣΗ 6 ΠΟΛΥΠΛΕΚΤΕΣ (MUX) ΑΠΟΠΛΕΚΤΕΣ (DEMUX)

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

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

Εισαγωγικά & Βασικές Έννοιες

Τεχνικός Εφαρμογών Πληροφορικής

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

Βασικές Δομές Δεδομένων

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

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

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

οριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS

Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εφαρμογή Εκτύπωσης Ταξιθετικών Ετικετών

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

ΓΕΝΙΚΕΣ ΕΙΣΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ 2009

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

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

Transcript:

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση ΙΙΙ 1 lalis@inf.uth.gr

Ορθή συμπεριφορά τμήματος λογισμικού Ένα τμήμα λογισμικού (ή ένας ΑΤΔ) προσπελάζεται με δομημένο/ελεγχόμενο τρόπο, μέσα από συγκεκριμένες λειτουργίες / πράξεις πρόσβασης Υποθέτοντας μονονηματική/σειριακή εκτέλεση, η επιθυμητή λειτουργικότητα ορίζεται με βάση μια αντικειμενική παρατήρηση της συμπεριφοράς Μια υλοποίηση είναι ορθή/σωστή αν επιτυγχάνει την προσδιορισμένη επιθυμητή λειτουργικότητα (χωρίς να γνωρίζουμε το πως τα καταφέρνει) ΙΙΙ 2 lalis@inf.uth.gr

Ουρά FIFO init(): αρχικοποίηση put(object o): προσθήκη Object get(): αφαίρεση βοηθητική συνάρτηση ISEMPTY() get put init FIFO_Queue 1) init(); ISEMPTY() 2) ISEMPTY() ο=get(); ο == NULL ISEMPTY() μια «τυπική» περιγραφή της ορθής λειτουργίας 3) ISEMPTY() put(x1); put(xn); ο1=get(); οn=get(); o1 == x1 οn == xn ISEMPTY() ΙΙΙ 3 lalis@inf.uth.gr

Ζητούμενο Υποθέτουμε ότι η επιθυμητή λειτουργικότητα έχει προσδιοριστεί για μια σειριακή εκτέλεση Θέλουμε να φτιάξουμε μια υλοποίηση που μπορεί να χρησιμοποιηθεί υπό ταυτόχρονη εκτέλεση Ποιες «συμπεριφορές» είναι επιτρεπτές υπό ταυτόχρονη εκτέλεση; Πως μπορούμε να σκεφτούμε για αυτές, έτσι ώστε να βρούμε τα περιθώρια που (τυχόν) υπάρχουν σε επίπεδο υλοποίησης; ΙΙΙ 4 lalis@inf.uth.gr

Μοντέλο εκτέλεσης Οι λειτουργίες/πράξεις πρόσβασης θεωρούνται μηακαριαίες Κάθε πράξη πρόσβασης «σπάει» σε δύο μέρη: (1) αίτηση/κλήση, (2) απάντηση/επιστροφή Το διάστημα ανάμεσα στην αίτηση και την απάντηση αντιστοιχεί στην διάρκεια εκτέλεσης της πράξης Ταυτόχρονη εκτέλεση: χρονική επικάλυψη των πράξεων πρόσβασης που εκτελούν τα νήματα ΙΙΙ 5 lalis@inf.uth.gr

Συμβολισμοί op(x,y)p πράξη op, καλείται από το νήμα P με παραμέτρους x και επιστρέφει αποτελέσματα y P op(x) t1 OK(y) t2 η εκτέλεση της op(x,y)p αρχίζει και ολοκληρώνεται τις χρονικές στιγμές t1 και t2 αντίστοιχα ΙΙΙ 6 lalis@inf.uth.gr

Σειρά εκτέλεσης Η πράξη op2(x2,y2) εκτελείται μετά την πράξη op1(x1,y1) αν ισχύει ότι: ΟΚ(y1),,op2(x2) Χρησιμοποιούμε τον συμβολισμό: op1 op2 Η πράξη op2(x2,y2) εκτελείται ταυτόχρονα με την πράξη op1(x1,y1) αν ισχύει ότι: op1(x1),,op2(x2),,ok(y1) ή op2(x1),,op1(x2),,ok(y2) Χρησιμοποιούμε τον συμβολισμό: op1 op2 ΙΙΙ 7 lalis@inf.uth.gr

op1(x1) ΟΚ(y1) op1 op2 (1) op2(x2) ΟΚ(y2) op1(x1) ΟΚ(y1) op1 op2 (2) op2(x2) ΟΚ(y2) op1(x1) ΟΚ(y1) op1 op2 (3) op2(x2) ΟΚ(y2) ΙΙΙ 8 lalis@inf.uth.gr

Ιστορία εκτέλεσης Καταγραφή των πράξεων που γίνονται στον χρόνο Δύο τύποι «γεγονότων»: αιτήσεις και απαντήσεις Ιστορία: ακολουθία γεγονότων που αντιστοιχεί σε μια (αυστηρά σειριακή ή ταυτόχρονη) εκτέλεση Η σειρά των γεγονότων αντιστοιχεί στην χρονική στιγμή «αποστολής» των αιτήσεων op(x)p, και «παραλαβής» των απαντήσεων OK(y)P Κανόνες τοπικής ιστορίας κάθε νήματος: το αποτέλεσμα μιας πράξης εμφανίζεται μετά την αίτηση η επόμενη αίτηση στέλνεται αφού παραληφθεί η απάντηση για την προηγούμενη αίτηση (σειριακή εκτέλεση πράξεων) ΙΙΙ 9 lalis@inf.uth.gr

Σειριακή και ταυτόχρονη ιστορία Σειριακή (καθολική) ιστορία: δεν υπάρχει χρονική επικάλυψη μεταξύ των πράξεων που εκτελούν διαφορετικά νήματα Κάθε αίτηση op(x)p ακολουθείται από την αντίστοιχη απάντηση OK(y)P χωρίς να μεσολαβεί κάποια άλλη αίτηση ή απάντηση Ταυτόχρονη (καθολική) ιστορία: υπάρχει επικάλυψη ανάμεσα στις πράξεις που γίνονται μέσα από διαφορετικά νήματα Υπάρχει op(x)p και OK(y)P ανάμεσα στις οποίες παρεμβάλλεται μια άλλη αίτηση op(x) ΙΙΙ 10 lalis@inf.uth.gr

Σειριακή εκτέλεση op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) σειριακή ιστορία op2(x2), OK(y2), op1(x1), OK(y1), op3(x3), OK(y3) ΙΙΙ 11 lalis@inf.uth.gr

Ταυτόχρονη εκτέλεση op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) ταυτόχρονη ιστορία op2(x2), op1(x1), OK(y2), op3(x3), OK(y1), OK(y3) ΙΙΙ 12 lalis@inf.uth.gr

Ορθή σειριακή εκτέλεση Κάθε σειριακή εκτέλεση αντιστοιχεί σε μια μοναδική σειριακή ιστορία Επιτρεπτή σειριακή ιστορία: το αποτέλεσμα των πράξεων είναι συμβατό με τις προδιαγραφές (δεν αντιφάσκουν με την επιθυμητή λειτουργικότητα) Ορθή σειριακή εκτέλεση: η αντίστοιχη σειριακή ιστορία είναι επιτρεπτή ΙΙΙ 13 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(b) put(b) ΟΚ() get() OK(a) επιτρεπτή σειριακή ιστορία put(a), OK(), put(b), OK(), get(), OK(a), get(), OK(b) ΙΙΙ 14 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(a) put(b) ΟΚ() get() OK(b) μη επιτρεπτή σειριακή ιστορία put(a), OK(), put(b), OK(), get(), OK(b), get(), OK(a) ΙΙΙ 15 lalis@inf.uth.gr

Σειριακή ισοδυναμία Μια ταυτόχρονη ιστορία Ι είναι ισοδύναμη με την σειριακή ιστορία Ι αν: 1. Οι πράξεις που έχουν συγκεκριμένη σχετική σειρά στην Ι, έχουν την ίδια σχετική σειρά και στην Ι op1 op2 Ι op1 op2 Ι 2. Οι πράξεις που είναι ταυτόχρονες στην Ι, έχουν μια (οποιαδήποτε) σχετική σειρά στην Ι op1 op2 Ι op1 op2 Ι op2 op1 Ι Μια ταυτόχρονη ιστορία Ι έχει πολλές διαφορετικές ισοδύναμες σειριακές ιστορίες Ι ΙΙΙ 16 lalis@inf.uth.gr

Διαδικασία «κατασκευής» Θεωρούμε ότι κάθε πράξη εκτελείται στιγμιαία (αίτηση και απάντηση συμπίπτουν στον χρόνο) Επιλέγουμε ελεύθερα την χρονική στιγμή εκτέλεσης κάθε πράξης, αρκεί αυτή: (α) να βρίσκεται μέσα στο αρχικό διάστημα εκτέλεσης της πράξης (β) να μην συμπίπτει με κάποια άλλη πράξη Κάθε τέτοιο σενάριο αντιστοιχεί σε μια σειριακή εκτέλεση που είναι ισοδύναμη με την ταυτόχρονη ΙΙΙ 17 lalis@inf.uth.gr

op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) P3 op4(x4) ΟΚ(y4) ΙΙΙ 18 lalis@inf.uth.gr

ισοδύναμη σειριακή εκτέλεση op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) P3 op4(x4) ΟΚ(y4) op4 op2 op1 op3 ΙΙΙ 19 lalis@inf.uth.gr

ισοδύναμη σειριακή εκτέλεση op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) P3 op4(x4) ΟΚ(y4) op2 op1 op3 op4 ΙΙΙ 20 lalis@inf.uth.gr

μη ισοδύναμη σειριακή εκτέλεση op1(x1) ΟΚ(y1) op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) P3 op4(x4) ΟΚ(y4) op2 op4 op3 op1 ΙΙΙ 21 lalis@inf.uth.gr

Παρατήρηση Η σχετική σειρά των πράξεων που εκτελούνται σειριακά (στην ταυτόχρονη εκτέλεση) δεν μπορεί να αλλάξει Πιθανώς είναι αποτέλεσμα ρητού (αλλά μη ορατού σε εμάς) συγχρονισμού ανάμεσα στα νήματα Συνεπώς δεν έχουμε «δικαίωμα» να αλλάξουμε την σχετική σειρά αυτών των πράξεων Ουσιαστική ελευθερία επιλογής υπάρχει μόνο ως προς τις ταυτόχρονες (επικαλυπτόμενες) πράξεις Δεν υπάρχει λογική εξάρτηση μεταξύ τους σε επίπεδο εφαρμογής (εκτός αν η εφαρμογή έχει bug) Έχουμε «δικαίωμα» να τις διατάξουμε όπως θέλουμε ΙΙΙ 22 lalis@inf.uth.gr

op1(x1) συγχρονισμός μεταξύ και ΟΚ(y1) παραβίαση λογικής συνέπειας op2(x2) ΟΚ(y2) op3(x3) ΟΚ(y3) P3 op4(x4) ΟΚ(y4) ΙΙΙ 23 lalis@inf.uth.gr

Ορθότητα Μια ταυτόχρονη εκτέλεση είναι ορθή (επιτρεπτή) αν είναι ισοδύναμη με (μπορεί να αντιστοιχηθεί σε) τουλάχιστον μια ορθή σειριακή εκτέλεση ΙΙΙ 24 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(a) επιτρεπτή ΙΙΙ 25 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(NULL) επιτρεπτή ΙΙΙ 26 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(a) επιτρεπτή ΙΙΙ 27 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(NULL) επιτρεπτή ΙΙΙ 28 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(b) put(b) ΟΚ() μη επιτρεπτή ΙΙΙ 29 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(b) put(b) ΟΚ() get() OK(a) επιτρεπτή ΙΙΙ 30 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(a) put(b) ΟΚ() get() OK(b) επιτρεπτή ΙΙΙ 31 lalis@inf.uth.gr

FIFO Queue put(a) ΟΚ() get() ΟΚ(a) put(b) ΟΚ() get() OK(a) μη επιτρεπτή ΙΙΙ 32 lalis@inf.uth.gr

Έλεγχος ταυτόχρονης εκτέλεσης Καταγράφουμε την ιστορία της ταυτόχρονης εκτέλεσης Αν βρούμε έστω και μια επιτρεπτή σειριακή ιστορία που είναι ισοδύναμη με την ταυτόχρονη ιστορία, τότε η (συγκεκριμένη) εκτέλεση είναι επιτρεπτή όπως ξέρουμε, αυτό δεν λέει πολλά για την ορθότητα... Αν ελέγξουμε όλες τις ισοδύναμες σειριακές ιστορίες και καμία από αυτές δεν είναι επιτρεπτή, τότε η εκτέλεση είναι λανθασμένη είναι σίγουρο ότι η υλοποίηση είναι προβληματική ΙΙΙ 33 lalis@inf.uth.gr

Αποφυγή σειροποίησης Η απλούστερη σωστή υλοποίηση είναι αυτή όπου τα πάντα γίνονται υπό αμοιβαίο αποκλεισμό σειριοποίηση των λειτουργιών πρόσβασης Αυτό μπορεί να μην είναι καλό για την απόδοση ιδίως σε συστήματα με πολλούς επεξεργαστές Ιδανικά θα θέλαμε κάποια τμήματα του κώδικα των πράξεων πρόσβασης να εκτελούνται ταυτόχρονα, χωρίς να προκύπτουν προβλήματα ορθότητας Π.χ., αυτό μπορεί να γίνει για λειτουργίες που εμπίπτουν στο πνεύμα των readers-writers ΙΙΙ 34 lalis@inf.uth.gr