Βάσεις Δεδομένων ΙΙ. Διάλεξη 2 η Tεχνικές Ελέγχου Συνδρομικότητας

Σχετικά έγγραφα
Τεχνικές Ελέγχου Συνδροµικότητας

Επεξεργασία οσοληψιών

Επεξεργασία οσοληψιών (συνέχεια)

Επεξεργασία οσοληψιών

Έλεγχος Ταυτοχρονισμού

Επεξεργασία οσοληψιών (συνέχεια)

Επεξεργασία οσοληψιών

Έλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Βάσεις Δεδομένων 2. Φροντιστήριο Δοσοληψίες Τεχνικές ελέγχου συνδρομικότητας. Ημερ: 05/5/2009 Ακ.Έτος

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών

Επαναληπτικές ασκήσεις

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

Θεµατολόγιο. Α) Πρακτικά Θέµατα στον Έλεγχο Ταυτοχρονισµού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙI

Επεξεργασία οσοληψιών

Βάσεις Δεδομένων ΙΙ Ενότητα 2

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

Δοσοληψίες. Κατανεμημένα Συστήματα

Διαχείριση Δοσοληψιών

Θεµατολόγιο. Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη;

Δοσοληψίες. Κατανεμημένα Συστήματα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Προχωρημένα Θέματα Βάσεων Δεδομένων

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Βάσεις Δεδομένων ΙΙ Ενότητα 2

Πλειάδες φαντάσματα (phantoms)

Μάθημα Βάσεις Δεδομένων ΙΙ - Ασκήσεις Επανάληψης. 01 Εκφώνηση

ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

Βάσεις Δεδομένων ΙΙ Ενότητα 1

Έλεγχος Ταυτοχρονισμού

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

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

Κεφάλαιο 13 Δοσοληψίες

Έλεγχος Ταυτοχρονισμού

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

9. Κόκκινα-Μαύρα Δέντρα

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

Συναλλαγές. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών. Συναλλαγές. Βάσεις Δεδομένων ΙΙ

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

Επεξεργασία Ερωτήσεων

Κατανεμημένες δοσοληψίες

Διαχρονικές δομές δεδομένων

ΚΕΦΑΛΑΙΟ 1 ΣΥΝΑΛΛΑΓΕΣ ΚΑΙ ΕΛΕΓΧΟΣ ΤΑΥΤΟΧΡΟΝΙΣΜΟΥ

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Χρονοδιάγραμμα/Χρονοπρόγραμμα

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σηµειώσεις Βάσεων εδοµένων. ιαχείριση οσοληψιών. Γιάννης Θεοδωρίδης. Τµήµα Πληροφορικής, Πανεπιστήµιο Πειραιά.

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

Βάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών

Αδιέξοδα (Deadlocks)

Σημεία ελέγχου (Checkpoints)

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εαρινό Εξάμηνο

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κατανεμημένες δοσοληψίες

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

Θέματα Υλοποίησης Σχεσιακών ΣΔΒΔ

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

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

Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός)

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

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

Κατανεμημένες Βάσεις Δεδομένων

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

Βάσεις Δεδομένων ΙΙ. Διάλεξη 4 η Aρχιτεκτονικές ΣΒΔ. Αρχιτεκτονικές Συστημάτων Βάσεων Δεδομένων

Κατανεμημένες δοσοληψίες

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Κατακερματισμός (Hashing)

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

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

Οι δομές δεδομένων στοίβα και ουρά

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

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

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

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

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

Transactions Management. (Διαχείριση Δοσοληψιών)

Έλεγχος Συγχρονικότητας. (Concurrency Control)

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

Transcript:

Βάσεις Δεδομένων ΙΙ Διάλεξη 2 η Tεχνικές Ελέγχου Συνδρομικότητας Δ. Χριστοδουλάκης - Α. Φωκά Τμήμα Μηχανικών Η/Υ & Πληροφορικής - Εαρινό Εξάμηνο 2007 Τεχνικές Ελέγχου Συνδρομικότητας Ο χρήστης δεν ασχολείται με τη συνδρομικότητα Το ΣΔΒΔ εξασφαλίζει «σωστή συνδρομικότητα», γενικά δρομολογεί τις πράξεις των δοσοληψιών ώστε να προκύπτουν χρονοπρογράμματα σειριοποιήσιμα βάσει συγκρούσεων Μέσω τεχνικών ελέγχου συνδρομικότητας Δηλαδή, ψάχνουμε αλγόριθμους (πρωτόκολλα) που θα δρομολογούν τις πράξεις των δοσοληψιών 1

Τεχνικές Ελέγχου Συνδρομικότητας 1. Κλειδώματος (locking) για να αποτρέψουν τη συνδρομική (ταυτόχρονη) προσπέλαση των δεδομένων από πολλές δοσοληψίες 2. Διάταξης χρονοσημάτων (timestamps), μια μοναδική ταυτότητα που δημιουργείται από το σύστημα για κάθε δοσοληψία 3. Πολλαπλών εκδοχών για έλεγχο συνδρομικότητας (multiversion concurrency control techniques), όπου φυλάσσονται διάφορες εκδοχές ενός στοιχείου 4. Πιστοποίησης (validation) μιας δοσοληψίας (αισιόδοξα πρωτόκολλα) Τεχνικές Κλειδώματος Ηπιοαπλήεκδοχή: ένα κλειδί ανά δεδομένο μια δοσοληψία πριν προσπελάσει ένα δεδομένο Χ ζητά ένα κλειδί -- αίτηση lock(χ) μπορεί να προσπελάσει το δεδομένο, μόνο αφού της δοθεί το κλειδί -- πότε παίρνει το κλειδί; μια δοσοληψία μπορεί να άρει το κλειδί στο δεδομένο -- αίτηση unlock (Χ) 2

Τεχνικές Κλειδώματος ένα απλό κλείδωμα: στην πιο απλή περίπτωση, ένα μόνο είδος κλειδιού lock (Χ) :: πραγματοποιείται αν το δεδομένο δεν είναι ήδη κλειδωμένο, αλλιώς η δοσοληψία περιμένει μέχρι να ελευθερωθεί το δεδομένο unlock (Χ) Υλοποίηση: μια δομή (πίνακας) (δεδομένο, μια ένδειξη (κλειδωμένο - μη-κλειδωμένο), ουρά με δοσοληψίες που περιμένουν) Τεχνικές Κλειδώματος Δυο προβλήματα: 1. Δεν επιτρέπει ταυτόχρονες αναγνώσεις 2. Δε δουλεύει! (δηλαδή, δεν αρκεί για να δώσει σειριοποιήσιμα χρονοπρογράμματα) Χρειάζεται (όπως θα δούμε) διάταξη των πράξεων lock-unlock κάθε δοσοληψίας Ας διορθώσουμε το πρώτο 3

Τεχνικές Κλειδώματος Στόχος: πολλές δοσοληψίες να μπορούν να διαβάσουν ένα δεδομένο ταυτόχρονα Δύο ειδών κλειδιά: διαμοιραζόμενο (shared) κλειδί ή κλειδί ανάγνωσης αποκλειστικό (exclusive) κλειδί ή κλειδί εγγραφής Τεχνικές Κλειδώματος Πολύτροπο Κλείδωμα (multiple-mode lock) μια δοσοληψία πριν διαβάσει ένα δεδομένο Χ ζητά ένα διαμοιραζόμενο κλειδί -- αίτηση S-lock(Χ) μια δοσοληψία πριν γράψει ένα δεδομένο Χ ζητά ένα αποκλειστικό κλειδί -- αίτηση Χ-lock(Χ) (πάλι) μια δοσοληψία μπορεί να άρει το κλειδί στο δεδομένο -- αίτηση unlock (Χ) 4

Μετατροπή Κλειδωμάτων Αναβάθμιση Από S-Lock(X) σε Χ-Lock(X) Yποβάθμιση Από Χ-Lock(X) σε S-Lock(X) T1 S-Lock(Y) R 1 (Y) Unlock(Y) S-Lock(X) W 1 (X) Unlock(X) C 1 T2 S-Lock(X) R 2 (X) Unlock(X) X-Lock(Y) W 2 (Y) Unlock(Y) C 2 Δεν αρκεί για σειριοποιησιμότητα Τεχνικές Κλειδώματος S: R 1 (Y) R 2 (X) W 2 (Y) C 2 W 1 (X) C 1 T1 Y X T2 Λύση: Κλείδωμα Δύο Φάσεων 5

Κλείδωμα Δυο Φάσεων Πρωτόκολλο κλειδώματος δυο φάσεων (Two-Phase Locking 2PL) Όλες οι πράξεις (αιτήσεις ) κλειδώματος μιας δοσοληψίας προηγούνται της πρώτης πράξης (αίτησης) άρσης κλειδώματος της διαδικασίας Δηλαδή, μόλις μια δοσοληψία αφήσει (unlock) ένα κλειδί δεν μπορεί να ζητήσει ξανά κλειδί Κλείδωμα Δυο Φάσεων Κάθε δοσοληψία δυο φάσεις μια φάση επέκτασης ή εξάπλωσης Μπορούν να ζητηθούν νέα κλειδώματα αλλά κανένα δεν μπορεί να αρθεί μια φάση συρρίκνωσης Υπάρχοντα κλειδώματα μπορούν να αρθούν αλλά δεν μπορούν ζητηθούν νέα κλειδώματα Αποδεικνύεταιότιείναισωστό Συγκεκριμένα, σειριοποιούνται με βάση τη σειρά που εισέρχονται στηφάσησυρρίκνωσης(εύκολη απόδειξη με χρήση του γράφου σειριοοποιησιμότητας και απαγωγή σε άτοπο) 6

Κλείδωμα Δύο Φάσεων Κάθε δοσοληψία πρέπει να κλειδώσει όλα τα δεδομένα που χρειάζεται πριν ξεκινήσει Αν δε μπορεί να κλειδώσει έστω και ένα, δε κλειδώνει κανένα και προσπαθεί ξανά Ονομάζεται συντηρητικό ή στατικό κλείδωμα δυο φάσεων Δύσκολο να χρησιμοποιηθεί στην πράξη Κλείδωμα Δύο Φάσεων Αυστηρό κλείδωμα δυο φάσεων: Εξασφαλίζει αυστηρά χρονοπρογράμματα Οι δοσοληψίες δεν μπορούν ούτε να διαβάζουν ούτε να γράψουν ένα στοιχείο Χ έως ότου επικυρωθεί η τελευταία δοσοληψία που έγραψε το Χ Μια δοσοληψία δεν απελευθερώνει κανένα αποκλειστικό κλειδί πριν επικυρωθεί ή ακυρωθεί 7

Κλείδωμα Δύο Φάσεων Υπεραυστηρό κλείδωμα δυο φάσεων: Εξασφαλίζει αυστηρά χρονοπρογράμματα Μια δοσοληψία δεν απελευθερώνει κανένα αποκλειστικό ή διαμοιραζόμενο κλειδί πριν επικυρωθεί ή ακυρωθεί Αδιέξοδα Οι τεχνικές κλειδώματος μπορεί να προκαλέσουν αδιέξοδα (deadlocks) T1 T2 S-Lock(Y) R 1 (Y) X-Lock(X) S-Lock(X) R 2 (X) X-Lock(Y) H T1 περιμένει την Τ2 να ελευθερώσει το Χ, και η Τ2 περιμένει την Τ1 να ελευθερώσει το Υ 8

Αντιμετώπιση Αδιεξόδων Δυο τεχνικές: Πρωτόκολλα Πρόληψης Αδιεξόδων (Deadlock Prevention): Αποφυγή δημιουργίας αδιεξόδου Πρωτόκολλα Ανίχνευσης Αδιεξόδου (Deadlock Detection): Eλέγχουμε περιοδικά αν το σύστημα βρίσκεται σε κατάσταση αδιεξόδου Συντηρητικό Κλείδωμα Δύο Φάσεων Απαλλαγμένο από αδιέξοδα Πρόληψη Αδιεξόδων 9

Πρόληψη Αδιεξόδων «σπάσιμο» του κύκλου κάποια διάταξη μεταξύ των δοσοληψιών Κάθε δοσοληψία Τ έχει ένα χρονόσημο ΤS(T): Μια διαδικασία παίρνει ένα χρονόσημο κατά την εκκίνησή της. TS(T1) < TS(T2), σημαίνει ότι η T1 ξεκίνησε πριν την Τ2 ιδέα: μια δοσοληψία περιμένει μόνοαντοκλειδίτοέχειμια δοσοληψία με μικρότερο (μεγαλύτερο) χρονόσημο, αλλιώς ακυρώνεται Πρόληψη Αδιεξόδων Δύο σχήματα αναμονής-θανάτωσης (wait-die) τραυματισμού-αναμονής (wound-wait) Και στα δύο σχήματα οι παλιές δοσοληψίες «εκτοπίζουν» τις νεώτερες 10

Πρόληψη Αδιεξόδων Έστω ότι η Τ i ζητά να κλειδώσει το X που είναι κλειδωμένο από την Τ j αναμονή-θανάτωση Αν TS(T i ) < TS(T j ) T i περιμένει (* περιμένουμε αν το κλειδί το έχει νεώτερη *) Αλλιώς (* τοκλειδίτοέχειπαλαιότερη*) ακυρώνεται (πεθαίνει!) ητ i και επανεκκινείται με το ίδιο (γιατί;) χρονόσημα τραυματισμός-αναμονή Αν TS(T i ) > TS(T j ) T i περιμένει (* περιμένουμε αν το κλειδί το έχει παλαιότερη *) Αλλιώς (* τοκλειδίτοέχεινεώτερη*) ακυρώνεται (τραυματίζεται) ητ j και επανεκκινείται με το ίδιο χρονόσημα Πρόληψη Αδιεξόδων Αλγόριθμος άνευ αναμονής (no waiting NW) Αν μια δοσοληψία δεν μπορεί να κλειδώσει ένα στοιχείο ακυρώνεται αμέσως και επανεκκινείται μετά από ένα χρονικό διάστημα, χωρίς να ελεγχθεί αν θα προκύψει ή όχι αδιέξοδο Αλγόριθμος επιφυλακτικής αναμονής (cautious waiting CW) Αν μια δοσοληψία Τ i προσπαθεί να κλειδώσει ένα στοιχείο Χ αλλά δεν μπορεί επειδή είναι κλειδωμένο από κάποια άλλη δοσοληψία Τ j Αν η Τ j δεν έχει ανασταλλεί (δεν περιμένει για κάποιο άλλο κλειδωμένο στοιχείο), τότε η Τ i αναστέλλεται και της επιτρέπεται να περιμένει, διαφορετικά η Τ i ακυρώνεται. 11

Ανίχνευση Αδιεξόδων Κατασκευή γράφου αναμονής (wait-for graph) κόμβοι : δοσοληψίες ακμή από τον κόμβο T i στον T j, αν η T i περιμένει την T j να αφήσει ένα κλειδί Περιοδικά έλεγχος για κύκλους στο γράφο αναμονής Ανίχνευση Αδιεξόδων Παράδειγμα: T1: S-Lock(A), R(A), S-Lock(B) T2: X-Lock(B),W(B) X-Lock(C) T3: S-Lock(C), R(C) X-Lock(A) T4: X-Lock(B) T1 Β T2 T1 T2 B C T4 T3 T4 T3 12

Χρονικά Όρια Επιλογή Θύματος (victim selection) Επιλογή δοσοληψιών που θα ακυρωθούν Αποφεύγει δοσοληψίες που έχουν κάνει πολλές αλλαγές Χρονικά Όρια (timeouts) Αν μια δοσοληψία εκτελείται για μεγάλο χρονικό διάστημα τότε την ακυρώνει Ασχέτως με αν στη πραγματικότητα υπάρχει αδιέξοδο Λιμοκτονία (starvation) Μια δοσοληψία δεν μπορεί να προχωρήσει για απεριόριστο χρονικό διάστημα ενώ άλλες συνεχίζουν κανονικά Τεχνικές Ελέγχου Συνδρομικότητας Τεχνικές 1. Κλειδώματος (locking) 2. Διάταξης χρονοσημάτων (timestamps) 3. Πιστοποίησης (validation) 13

Διάταξη Χρονοσημάτων Το χρονόσημα δημιουργείται από το ΣΔΒΔ και προσδιορίζει μοναδικά μια δοσοληψία Ιδέα: διάταξη των δοσοληψιών με βάση το χρονόσημα τους (δηλαδή, χρονοπρόγραμμα ισοδύναμο με σειριακό στο οποίο οι δοσοληψίες εμφανίζονται διατεταγμένες με βάση τις τιμές των χρονοσημάτων) άρα η σειρά προσπέλασης στα δεδομένα πρέπει να μη παραβιάζει τη σειριοποιησιμότητα Διάταξη Χρονοσημάτων Δηλαδή: Αν μια πράξη a i μιας δοσοληψίας T i συγκρούεται με μια πράξη a j μιας δοσοληψίας T j και TS(T i ) < TS(T j ), τότε η a i πρέπει να προηγείται της a j. Αλλιώς, restart τη δοσοληψία. 14

Διάταξη Χρονοσημάτων Κάθε δεδομένο Χ έχει δύο τιμές χρονοσημάτων: ΧΣΑ(Χ) (χρονόσημα ανάγνωσης) το μεγαλύτερο μεταξύ όλων των χρονοσημάτων των δοσοληψιών που διάβασαν το Χ (διαισθητικά, η πιο πρόσφατη που το διάβασε) ΧΣΕ(Χ) (χρονόσημα εγγραφής) το μεγαλύτερο μεταξύ όλων των χρονοσημάτων των δοσοληψιών που έγραψαν το Χ Διάταξη Χρονοσημάτων Κάθε πράξη ανάγνωσης και εγγραφής μιας δοσοληψίας συνοδεύεται από κατάλληλους ελέγχους του χρονοσήματος της δοσοληψίας και των χρονοσημάτων του αντίστοιχου δεδομένου. Αν ο έλεγχος αποτύχει, η δοσοληψία απορρίπτεται και αρχίζει πάλι 15

Διάταξη Χρονοσημάτων Η δοσοληψία T με ΧΣ(Τ) εκτελεί μια πράξη ανάγνωσης R(X) Αν ΧΣ(Τ) < ΧΣE(Χ) (αυτό παραβιάζει τη διάταξη) η Τ ακυρώνεται, μπορεί να ξαναρχίσει αλλά με μεγαλύτερο χρονόσημα (γιατί;) Αν ΧΣ(Τ) > ΧΣE(Χ) η ανάγνωση είναι επιτρεπτή θέσε το ΧΣΑ(Χ) = max{xσa(t), ΧΣ(ΤΑ)} Οι αλλαγές στο ΧΣΑ(Χ) πρέπει να γράφονται στο δίσκο! Αυτό και το ότι η δοσοληψίες ξαναρχίζουν προκαλεί επιβάρυνση (overhead) Διάταξη Χρονοσημάτων Η δοσοληψία T με ΧΣ(Τ) εκτελεί μια πράξη εγγραφής W(X) Αν ΧΣΑ(Χ) > ΧΣ(Τ) ή ΧΣΕ(Χ) > ΧΣ(Τ) η Τ ακυρώνεται (γιατί;) Βελτιστοποίηση: τι σημαίνει ΧΣΕ(Χ) > ΧΣ(Τ) 16

Διάταξη Χρονοσημάτων Ο κανόνας του Thomas για εγγραφές (Thomas Write Rule) Μπορούμε να αγνοήσουμε μερικές «ξεπερασμένες» ή τυφλές εγγραφές, δε χρειάζεται επανεκκίνηση της Τ (η εγγραφή της Τ ακολουθείται από άλλη εγγραφή, χωρίς ενδιάμεση ανάγνωση) T1 R(A) W(A) Commit T2 W(A) Commit Επιτρέπει σειριοποίησιμα - αλλά όχι σειριοποιήσιμα βάσει συγκρούσεων Κανόνας εγγραφής Thomas Αν ΧΣA(Τ) > ΧΣ(T) η Τ ακυρώνεται και ανακαλείται ενώ η πράξη απορρίπτεται Αν ΧΣΕ(Τ) > ΧΣ(Τ) Δεν εκτελείται η πράξη εγγραφής αλλά συνεχίζεται η επεξεργασία Αλλιώς Εκτελείται η εγγραφή(χ) ΧΣΕ(Χ) = ΧΣ(Τ) 17

Τεχνικές Πολλαπλών Εκδοχών Διατηρούνται διάφορες παλαιές τιμές δεδομένων όταν αυτά ενημερώνονται Όταν μια δοσοληψία θέλει να προσπελάσει ένα στοιχείο επιλέγεται μια κατάλληλη εκδοχή για τη διατήρηση της σειριοποιησιμότητας. Κάποιες πράξεις ανάγνωσεις που θα απορρίπτονταν σε άλλες τεχνικές μπορούν να γίνουν αποδεκτές διαβάζοντας μια παλαιότερη εκδοχή του στοιχείου. Τεχνική Πολλαπλών Εκδοχών με Διάταξη Χρονοσήμων Όταν μια δοσοληψία Eκτελέσει πράξη W(X) Δημιουργείται μια νέα εκδοχή Χ k+1 ΧΣΕ(Χ k+1 )=ΧΣ(Τ), ΧΣΕ(Χ k+1 )=ΧΣ(Τ) Εκτελέσει πράξη R(X) ΧΣA(Χ i )=max{χσ(τ), ΧΣA(Χ i )} 18

Τεχνική Πολλαπλών Εκδοχών με Διάταξη Χρονοσήμων Όταν μια δοσοληψία Eκτελέσει πράξη W(X) Aν ΧΣΕ(Χ i ) μεγαλύτερο από όλες τις εκδοχές του Χ ΚΑΙ ΧΣΕ(Χ i ) <= ΧΣ(Τ) ΚΑΙ ΧΣΑ(Χ i ) > ΧΣ(Τ) Ακυρώνεται και ανακαλείται η Τ Αλλιώς Δημιουργείται μια νέα εκδοχή Χ j του Χ με ΧΣΕ(Χ j )=ΧΣΑ(Χ i ) =ΧΣ(Τ) Τεχνική Πολλαπλών Εκδοχών με Διάταξη Χρονοσήμων Όταν μια δοσοληψία Eκτελέσει πράξη R(X) Eντοπίζεται η εκδοχή i με ΧΣΕ(Χ i ) μεγαλύτερο από όλες τις εκδοχές του Χ KΑΙ ΧΣΕ(Χ i ) <= ΧΣ(Τ) Επιστρέφεται η Χi στη Τ ΧΣA(Χ i )=max{χσ(τ), ΧΣA(Χ i )} Η ανάγνωση είναι πάντα επιτυχής 19

Κλείδωμα Πολλαπλών Εκδοχών δύο Φάσεων με Χρήση Κλειδωμάτων Πιστοποίησης Κλείδωμα Ανάγνωσης Εγγραφής Πιστοποίησης Δύο εκδοχές Μπορεί μια δοσοληψία να διαβάσει ένα στοιχείο που έχει κλειδωθεί από άλλη ανάγνωση εγγραφή ανάγνωση Ναι Όχι εγγραφή Όχι Όχι ανάγνωση εγγραφή πιστοποίηση ανάγνωση Ναι Ναι Όχι εγγραφή Ναι Όχι Όχι πιστοποίηση Όχι Όχι Όχι Αισιόδοξες Τεχνικές Οι τεχνικές κλειδώματος είναι συντηρητικές (αποφεύγονται οι συγκρούσεις) Μειονεκτήματα επιβάρυνση (overhead) χειρισμού κλειδώματος αποφυγή/ανίχνευση αδιεξόδων lock contention για τα δεδομένα που χρησιμοποιούνται συχνά Αν οι συγκρούσεις είναι σπάνιες, μεγαλύτερη συγχρονικότητα, αν αντί για κλείδωμα, έλεγχος για συγκρούσεις όταν μια δοσοληψία επικυρώνεται (commits) 20

Τεχνικές Ελέγχου Συνδρομικότητας Τεχνικές 1. Κλειδώματος (locking) 2. Διάταξης χρονοσημάτων (timestamps) 3. Πιστοποίησης (validation) Αισιόδοξες Τεχνικές Κάθε δοσοληψία έχει τρεις φάσεις ΑΝΑΓΝΩΣΗ: η δοσοληψία διαβάζει από τη βδ, αλλά τροποποιεί προσωπικά (τοπικά στο χώρο εργασίας της δοσοληψίας) αντίγραφα των δεδομένων ΠΙΣΤΟΠΟΙΗΣΗ: έλεγχος για συγκρούσεις αν οι ενημερώσεις εφαρμοσθούν στη βδ ΕΓΓΡΑΦΗ: γράφει τα τοπικά αντίγραφα στη βδ 21

Πιστοποίηση Έλεγχος συνθηκών που είναι ικανές για να εξασφαλίσουν ότι δεν υπήρχαν συγκρούσεις Κάθε δοσοληψία Τ έχει ένα μοναδικό αριθμό TID (χρονόσημα) To TID ανατίθεται στο τέλος της φάσης ΑΝΑΓΝΩΣΗΣ (ακριβώς πριν αρχίσει η πιστοποίηση) Για κάθε δοσοληψία διατηρούμε: ReadSet(T): το σύνολο των δεδομένων που διάβασε η T WriteSet(T): το σύνολο των δεδομένων που έγγραψε η T Πιστοποίηση ΕΛΕΓΧΟΣ Περίπτωση 1 Για όλα τα i και j τέτοια ώστε Ti < Tj, η Ti τελειώνει πριν αρχίσει η Tj. Ti R V W Tj R V W 22

Πιστοποίηση ΕΛΕΓΧΟΣ Περίπτωση 2 Για όλα τα i και j τέτοια ώστε Ti < Tj: - ητi τελειώνει πριν αρχίσει η φάση εγγραφής της Tj - WriteSet(Ti) ReadSet(Tj) = Ti R V W R V W Tj Πιστοποίηση ΕΛΕΓΧΟΣ Περίπτωση 3 Για όλα τα i και j τέτοια ώστε Ti < Tj: - ητi τελειώνειτηφάσηανάγνωσηςπριναρχίσειηφάση aνάγνωσης της Τj - WriteSet(Ti) ReadSet(Tj) = - WriteSet(Ti) WriteSet(Tj) = Ti R V W R V W Tj 23

Διακριτότητα Κλειδώματος Μέχρι τώρα θεωρούσαμε εγγραφές Στην πράξη, συνήθως μιλάμε για σελίδες Μπορούμε να κλειδώσουμε τη βάση σε πολλά «επίπεδα» που ορίζουν μια «ιεραρχία διακριτότητας» Database contains Tables Pages Tuples Ορισμοί Διακριτότητα (granularity): πόσο μικρό είναι ένα αντικείμενο υπό παρατήρηση Μικρή διακριτότητα = μεγάλο μέγεθος στοιχείου (π.χ., πίνακας ή ΒΔ) Μεγάλη διακριτότητα = μικρό μέγεθος στοιχείου (π.χ., σελίδα ή εγγραφή) Πρόγονος ενός αντικειμένου: οποιοδήποτε αντικείμενο στην ιεραρχία διακριτότητας το περικλείει (π.χ., η ΒΔ είναι πρόγονος μιας σελίδας) Όσο μεγαλύτερο είναι το μέγεθος ενός στοιχείου, τόσο χαμηλότερος είναι ο βαθμός συνδρομικότητας που επιτρέπεται. 24

Κλείδωμα σε διαφορετικά επίπεδα διακριτότητας Κλείδωμα σε μικρή διακριτότητα: αποκλεισμός και καθυστέρηση των δοσοληψιών που τρέχουν εν παραλλήλω (π.χ., τι θα γίνει αν κλειδώσω όλη τη ΒΔ?) Κλείδωμα σε μεγάλη διακριτότητα: μεγάλος αριθμός κλειδωμάτων (χώρος μνήμης, καθυστέρηση διαχείρισης) Εκμετάλλευση της ιεραρχίας Η ιδέα είναι να κλειδώνουμε με κατάλληλο τρόπο σε διαφορετικά επίπεδα διακριτότητας Χρειαζόμαστε ένα νέο είδος κλειδώματος Κλείδωμα πρόθεσης (intention lock): εφαρμόζεται σε ένα πρόγονο, χαρακτηρίζοντας τι πράξη (για την ακρίβεια: κλείδωμα) θα εφαρμοστεί στον απόγονό του Δύο ειδών κλειδώματα πρόθεσης Πρόθεση αποκλειστικού κλειδιού Πρόθεση διαμοιραζόμενου κλειδιού 25

Κλείδωμα Πολλαπλής Κλιμάκωσης Ιεραρχική δομή Νέα είδη κλειδιών IS (πρόθεση διαμοιραζόμενου) IX (πρόθεση αποκλειστικό) Για να κλειδώσει με S (X) πρέπει να κλειδώσει όλους τους προγόνους με IS (IX) αρχίζοντας από τη ρίζα IS IX S X IS T T T IX T T S T T X Κλείδωμα Πολλαπλής Κλιμάκωσης Συχνά ΙΧ και S (διάβασμα όλου, τροποποίηση ενός) είδος κλειδιού SIX IS IX S SIX X IS T T T T IX T T S T T SIX T X 26

Αλγόριθμος Κλειδωμάτων Το κλείδωμα ξεκινά από την κορυφή της ιεραρχίας Για να πάρω ένα κλείδωμα S- (ή IS-) σε ένα αντικείμενο, πρέπει να έχω IS- (ή IX-) στον πρόγονό του [αλλιώς, περιμένω] Για να πάρω ένα κλείδωμα X- (ή IX- ή SIX) σε ένα αντικείμενο, πρέπει να έχω IX- (ή SIX-) στον πρόγονό του [αλλιώς, περιμένω] Η αποδέσμευση των κλειδιών πρέπει να γίνει με την αντίστροφη σειρά (bottom-up) Δυναμικές Βάσεις Δεδομένων Αν επιτρέψουμε εγγραφές και διαγραφές στοιχείων, τα πρωτόκολλα δε δουλεύουν σωστά (ούτε το αυστηρό 2PL) T1: βρίσκει το γηραιότερο ναύτη με rating 1 και 2 Sailors(sid, sname, rating, age) Boats(bid, bname, color) Reserves(sid, bid, day) Τ2: εισάγει ναύτη με rating 1 και age 96 και διαγράφει τον πιο ηλικιωμένο ναύτη με rating 2 T1 κλειδώνει όλες τις σελίδες που περιέχουν εγγραφές sailor με rating = 1, και βρίσκει τον πιο ηλικιωμένο (έστω, age = 71). Μετά, η T2 εισάγει ένα νέο sailor; rating = 1, age = 96. T2 επίσης διαγράφει τον πιο ηλικιωμένο ναυτικό με rating = 2 (έστω, age = 80), και επικυρώνεται. T1 τώρα κλειδώνει όλες τις σελίδες που περιέχουν εγγραφές sailor με rating = 2, βρίσκει τον πιο ηλικιωμένο (έστω, age = 63). Αποτέλεσμα: 71 63 Δεν υπάρχει ισοδύναμη με την παραπάνω σειριακή εκτέλεση 27

Δυναμικές Βάσεις Δεδομένων Sailors(sid, sname, rating, age) Boats(bid, bname, color) Reserves(sid, bid, day) T1: βρίσκει το γηραιότερο ναύτη με rating 1 και 2 Τ2: εισάγει ναύτη με rating 1 και age 96 και διαγράφει τον πιο ηλικιωμένο ναύτη με rating 2 T1 κλειδώνει όλες τις σελίδες που περιέχουν εγγραφές sailor με rating = 1, και βρίσκει τον πιο ηλικιωμένο (έστω, age = 71). Μετά, η T2 εισάγει ένα νέο sailor; rating = 1, age = 96. T2 επίσης διαγράφει τον πιο ηλικιωμένο ναυτικό με rating = 2 (έστω, age = 80), και επικυρώνεται. T1 τώρα κλειδώνει όλες τις σελίδες που περιέχουν εγγραφές sailor με rating = 2, βρίσκει τον πιο ηλικιωμένο (έστω, age = 63). Αποτέλεσμα 71 63 Δεν υπάρχει ισοδύναμη με την παραπάνω σειριακή εκτέλεση T1 T2: αποτέλεσμα 71 80 Τ2 Τ1: αποτέλεσμα 96 63 Δυναμικές Βάσεις Δεδομένων Η T1 έμμεσα υποθέτει ότι έχει κλειδώσει το σύνολο όλων των εγγραφών με rating = 1. (εγγραφές φαντάσματα σε άλλες σελίδες) Η υπόθεση ισχύει μόνο αν δεν προστεθούν εγγραφές ενώ εκτελείται η T1 Χρειάζεται κάποιος μηχανισμός για να το επιβάλει: κλείδωμα ευρετηρίου (index locking) και κλείδωμα συνθηκών (predicate locking.) Τα παράδειγμα δείχνει ότι η σειριοποιησιμότητα βάσει συγκρούσεων δίνει σειριοποιησιμότητα μόνο όταν τα αντικείμενα στη βδ είναι σταθερά 28

Κλείδωμα ευρετηρίων Αν είχαμε ένα index (π.χ., B+ tree) πάνω στο πεδίο rating, θα μπορούσαμε να κλειδώναμε γρήγορα όλες τις εγγραφές με RATING=1. Ακόμα κι αν δεν υπάρχουν τέτοιες εγγραφές, κλειδώνοντας τον index, μπορούμε να απαγορεύσουμε να δημιουργηθούν από άλλους κατά τη διάρκεια της δοσοληψίας Ειδική περίπτωση του κλειδώματος κατηγορήματος Β+ tree Table Κλείδωμα Β+ δέντρου Το κλείδωμα του ευρετηρίου είναι μια εδική μορφή δεδομένων, πως θα γίνει το κλείδωμα; Ας υποθέσουμε ότι θέλουμε να εισάγουμε μια εγγραφή με RATING = 1 στη διάρκεια της Τ1 Κατεβαίνοντας από τη ρίζα προς τα φύλλα του Β+ δέντρου, μπορούμε να κλειδώνουμε κάθε κόμβο με X-lock [του φύλλου συμπεριλαμβανομένου] ΠΡΟΒΛΗΜΑ: ήδη από το πρώτο βήμα έχουμε κλειδώσει τη ρίζα, δηλαδή, ΟΛΟ το δέντρο. 29

Κλείδωμα Β+ δέντρου ΠΑΡΑΤΗΡΗΣΗ Στα Β+ δέντρα, οι εσωτερικοί κόμβοι χρησιμεύουν ΜΟΝΟ ως μονοπάτια για τα φύλλα, όλαταπραγματικάδεδομέναείναισταφύλλα [βασικήδιαφοράμεταβδέντρα] Δηλαδή, «συνήθως» οι εσωτερικοί κόμβοι δεν τροποποιούνται, εκτός ΑΝ; Κλείδωμα Β+ δέντρου Αν κλείδωνα με S-lock τους ενδιάμεσους κόμβους και με X-lock τα φύλλα? Εκτός, αν χρειαστεί να διασπάσω ή να συνενώσω κάποιο εσωτερικό κόμβο Πότε; Αν overflow/underflow του παιδιού του! 30

Απλός αλγόριθμος κλειδώματος δέντρων Αναζητήσεις: Ξεκινώντας από τη ρίζα κλειδώνουμε με S-lock κάθε κόμβο. Μετά, ξεκλειδώνουμε τον γονέα του. Εισαγωγές: Ξεκινώντας από τη ρίζα κλειδώνουμε με X-locks κατά περίπτωση. Μετά ελέγχουμε αν ο κλειδωθείς κόμβος είναι ασφαλής: Αν ναι, ξεκλειδώνουμε τους προγόνους του Ασφαλής κόμβος: οι όποιες αλλαγές δεν θα διαδοθούν προς τα πάνω από τον κόμβο αυτό INS: ο κόμβος δεν είναι πλήρης (όχι overflow) DEL: ο κόμβος δεν είναι άδειος κατά το ήμισυ. (όχι underflow) Επεξεργασία Δοσοληψιών Άσκηση 1 Ο γράφος προήγησης για ένα συγκεκριμένο χρονοπρόγραμμα περιέχει μόνο τις παρακάτω ακμές και κόμβους. Πόσα διαφορετικά σειριακά χρονοπρογράμματα είναι ισοδύναμα με αυτό το χρονοπρόγραμμα; T1 T2 T3 T4 ΠΑΡΑΤΗΡΗΣΗ: Διαφορετικά χρονοπρογράμματα; Έστω Τ i με m i πράξεις (m 1 + m 2 + + m N )! / (m 1! m 2! m N!) 31

Άσκηση Κλείδωμα Δυο Φάσεων: Άσκηση Αποδείξτε ότι το βασικό πρωτόκολλο κλειδώματος δύο φάσεων εξασφαλίζει σειριοποιησιμότητα βάσει συγκρούσεων Με απαγωγή στο άτοπο Έστω ότι δεν το εξασφαλίζει, δηλαδή κλείδωμα δυο φάσεων και μη σειριοποιησιμότητα βάσει συγκρούσεων Κύκλος στο γράφο σειριοποιησιμότητας T1 T2 Tn T1, η T1 προσπελαύνει το x1 πριν η T2 προσπελάσει το x1 και είναι συγκρουόμενες (τουλάχιστον μία γράφει στο x1). Ορίζουμε ως lockpoint(t1) το χρονικό όριο μετά από το οποίο η T1 δεν ζητάει άλλα κλειδώματα. Υποθέτουμε ότι αιτήσεις κλειδώματος μπορούν να γίνουν πολύ πριν χρειαστούν σε μια δοσοληψία. Η T1 πρέπει να άρει το κλείδωμα για το x1 μετά το lockpoint(t1) και πριν η Τ2 κλειδώσει το x1, δηλ. πριν το lockpoint(t2). Έτσι το lockpoint(t1) προηγείται του lockpoint(t2 ). Ομοίως, το lockpoint(t2) προηγείται του lockpoint(t3). Έτσι, και το lockpoint(t1) προηγείται του lockpoint(t1). ΔΕΝ ΙΣΧΥΕΙ. Κλείδωμα Δυο Φάσεων: Άσκηση Άσκηση Θεωρείστε το παρακάτω χρονοπρόγραμμα των δοσοληψιών T 1 και Τ 2 : S: b W 1 (X) R 2 (X) W 2 (Y) C 2 W 1 (Z) C 1 e b αρχή και e τέλος του χρονοπρογράμματος. Υποθέστε 2PL. Πότε -- μεταξύ ποιών γεγονότων μπορούν να συμβούν τα παρακάτω (α) Πότε μπορεί η Τ1 να κάνει unlock(x) (β) Πότε μπορεί η Τ1 να κάνει lock(z) 32

Αντιμετώπιση Αδιεξόδων: Άσκηση Άσκηση Θεωρείστε ότι οι πράξεις υποβάλλονται με την παρακάτω σειρά. Θεωρείστε ότι οι εντολές έρχονται στο scheduler με την παρακάτω σειρά. Περιγράψτε για το καθένα από τα παρακάτω πρωτόκολλα πως χειρίζεται τις πράξεις ο μηχανισμός ελέγχου ταυτοχρονισμού R 1 (X) W 2 (Χ) W 2 (Υ) W 3 (Υ) W 1 (Y) C 1 C 2 C 3 (a) Aυστηρό 2PL με χρήση χρονοσημάτων για αποφυγή (πρόληψη) αδιεξόδου και αναμονή-θανάτωση (το κλειδί το έχει με μικρότερο χρονόσημα (παλιότερη) ακυρώνεται, αλλιώς περιμένει) (β) Aυστηρό 2PL με χρήση γράφου αναμονής για ανίχνευση αδιεξόδου Διάταξη Χρονοσημάτων: Άσκηση Άσκηση Εφαρμόστε τον αλγόριθμο διάταξης χρονοσημάτων στα χρονοπρογράμματα (α), (β), και (γ) (α) R 1 (X) W 2 (Y) W 2 (Χ) W 3 (Χ) W 1 (Y) C 1 C 2 C 3 33

T1 T2 Τ3 R 1 (X) W 1 (X) R 1 (Y) W 1 (Y) R 2 (Ζ) R 2 (Y) W 2 (Y) R 2 (X) W 2 (X) Διάταξη Χρονοσημάτων: Άσκηση 7(β) R 3 (Y) R 3 (Z) W 3 (Y) W 3 (Z) T1 T2 Τ3 R 1 (X) W 1 (X) Διάταξη Χρονοσημάτων: Άσκηση 7(γ) R 3 (Y) R 3 (Z) R 1 (Y) W 1 (Y) R 2 (Ζ) R 2 (Y) W 2 (Y) R 2 (X) W 2 (X) W 3 (Y) W 3 (Z) 34