Transactional Memory
|
|
- Αδώνια Κολιάτσος
- 6 χρόνια πριν
- Προβολές:
Transcript
1 Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Transactional Memory 9 ο Εξάμηνο
2 Τακτικές Συγχρονισμού Κλειδώματα (locks) Coarse-grain Fine-grain Non-blocking Lock-free Wait-free Transactional Memory 2
3 Δυσκολία προγραμματισμού εύκολο να κάνουμε coarse-grain υλοποιήσεις Συγχρονισμός Γιατί δε μας αρέσουν τα locks... για να εκμεταλλευτούμε όμως τον παραλληλισμό πρέπει να κάνουμε fine-grain υλοποιήσεις και εκεί ξεκινάει ο εφιάλτης 3
4 Δυσκολία προγραμματισμού εύκολο να κάνουμε coarse-grain υλοποιήσεις Συγχρονισμός Γιατί δε μας αρέσουν τα locks... για να εκμεταλλευτούμε όμως τον παραλληλισμό πρέπει να κάνουμε fine-grain υλοποιήσεις και εκεί ξεκινάει ο εφιάλτης Convoying ένα νήμα που κρατάει ένα lock γίνεται schedule out τα υπόλοιπα νήματα περιμένουν την απελευθέρωση του lock ακόμα και μετά την απελευθέρωση του lock υπάρχει μία ουρά από νήματα που περιμένουν να πάρουν το lock 3
5 Αντιστροφή προτεραιοτήτων (Priority inversion) ένα νήμα T1 υψηλής προτεραιότητας περιμένει να ελευθερωθεί κάποιο lock ένα άλλο νήμα T2 χαμηλότερης προτεραιότητας εκτελείται πριν το T1 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Mars Pathfinder (1997) αποστολή της NASA για αποστολή του εξερευνητικού οχήματος Sojourner στον Άρη λίγες μέρες μετά την προσεδάφιση στον Άρη το λογισμικού του συστήματος κάνει επανεκκινήσεις Γιατί; Priority inversion Concurrent programming is hard: After the failure, JPL engineers spent hours and hours running the system on the exact spacecraft replica in their lab with tracing turned on, attempting to replicate the precise conditions under which they believed that the reset occurred. Early in the morning, after all but one engineer had gone home, the engineer finally reproduced a system reset on the replica. Analysis of the trace revealed the priority inversion. Πηγή: wikipedia Πηγή: 4
6 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { withdraw(a, amount); deposit(b, amount); } 5
7 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } 5
8 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); Νήμα 2: transfer(b, A, 20); 5
9 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); lock(a); Νήμα 2: transfer(b, A, 20); lock(b); 5
10 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); lock(a); lock(b); Νήμα 2: transfer(b, A, 20); lock(b); lock(a); 5
11 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); lock(a); lock(b); DEADLOCK! Νήμα 2: transfer(b, A, 20); lock(b); lock(a); 5
12 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); lock(a); lock(b); Η σύνθεση κλειδωμάτων είναι δύσκολη. DEADLOCK! Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Νήμα 2: transfer(b, A, 20); lock(b); lock(a); Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 5
13 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { } withdraw(a, amount); deposit(b, amount); Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
14 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
15 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); Νήμα 2: transfer(c, D, 20); Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
16 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); lock(bank); Νήμα 2: transfer(c, D, 20); lock(bank); Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
17 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); lock(bank);... critical section... Νήμα 2: transfer(c, D, 20); lock(bank);... stall... Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
18 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); lock(bank);... critical section... Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα No Concurrency! δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Νήμα 2: transfer(c, D, 20); lock(bank);... stall... Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. 6
19 Συγχρονισμός Γιατί δε μας αρέσουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); lock(bank);... critical section... Η σύνθεση κλειδωμάτων είναι δύσκολη. Χρειάζεται καθολική πολιτική για το κλείδωμα No Concurrency! δεν μπορεί πάντα να αποφασιστεί εκ των προτέρων Νήμα 2: transfer(c, D, 20); lock(bank);... stall... Fine-grain locking: εκμετάλλευση παραλληλισμού, καλή επίδοση και κλιμακώσιμο, αλλά δυσκολία προγραμματισμού. Coarse-grain locking: δεν υπάρχει παραλληλία, χαμηλή επίδοση 6
20 Παράδειγμα: Java 1.4 HashMap Map: key value (-) δεν είναι thread-safe 7
21 Η λύση της Java 1.4: synchronized layer ρητό, coarse-grain locking από τον προγραμματιστή Synchronized HashMap Coarse-grain synchronized HashMap (+) thread-safe, εύκολο στον προγραμματισμό (-) περιορίζει τον (όποιον) ταυτοχρονισμό, χαμηλή κλιμακωσιμότητα μόνο ένα thread μπορεί να επεξεργάζεται το HashMap κάθε φορά Fine-grain locking HashMap (Java 5) ένα lock ανά bucket (+) καλή επίδοση και κλιμακωσιμότητα (-) δυσκολία προγραμματισμού 8
22 Επίδοση: Locks 9
23 Ιδανικά θα θέλαμε: Transactional Memory (TM) προγραμματιστική ευκολία αντίστοιχη με coarse-grain locking απόδοση συγκρίσιμη με fine-grain locking Transactional memory ο χρήστης σημειώνει κομμάτια κώδικα τα οποία πρέπει να εκτελεστούν ατομικά (transactions) το TM σύστημα είναι υπεύθυνο για την σωστή εκτέλεση Μεταφέρουμε την πολυπλοκότητα του fine-grain συγχρονισμού στο TM σύστημα. 10
24 Προγραμματισμός με ΤΜ void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Προστακτικός vs. Δηλωτικός προγραμματισμός Περιγραφή συγχρονισμού σε υψηλό επίπεδο ο προγραμματιστής λέει τι, όχι πώς Το υποκείμενο σύστημα υλοποιεί το συγχρονισμό εξασφαλίζει ατομικότητα, απομόνωση & σειριοποίηση Επίδοση; void transfer (account A, account B, int amount) { tx_begin(); withdraw(a, amount); deposit(b, amount); tx_end(); } εξαρτάται από το κρίσιμο τμήμα και την υλοποίηση του TM 11
25 Memory transaction μία ατομική και απομονωμένη ακολουθία λειτουργιών μνήμης εμπνευσμένη από τις δοσοληψίες στις Βάσεις Δεδομένων Ατομικότητα (Atomicity) θα γίνουν είτε όλες οι εγγραφές στη μνήμη ή καμία (all or nothing), όλες οι εγγραφές στη μνήμη abort, καμία εγγραφή στη μνήμη Απομόνωση (Isolation) Transactions κανένα άλλο τμήμα κώδικα δεν μπορεί να δεί τις εγγραφές ενός transaction πριν το Σειριοποίηση (Serializability) τα αποτελέσματα των transactions είναι συνεπή (ίδια με αυτά της σειριακής/σειριοποιημένης εκτέλεσης) τα transactions φαίνονται ότι κάνουν σειριακά η συγκεκριμένη σειρά ωστόσο δεν είναι εγγυημένη 12
26 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα 13
27 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα 13
28 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) 13
29 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) 13
30 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. unlock(l) 13
31 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. unlock(l) acq. unlock(l) 13
32 Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. unlock(l) acq. unlock(l) 13
33 Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. tx_begin() tx_begin() tx_begin() unlock(l) acq. unlock(l) acq. unlock(l) 13
34 Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. tx_begin() tx_end() tx_begin() rd B wr B tx_end() tx_begin() x conflict unlock(l) acq. unlock(l) 13
35 Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. tx_begin() tx_end() tx_begin() rd B wr B tx_end() tx_begin() x conflict tx_begin() unlock(l) acq. tx_end() unlock(l) 13
36 Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήματα εκτελούν ένα κρίσιμο τμήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. tx_begin() tx_end() tx_begin() rd B wr B tx_end() tx_begin() x conflict tx_begin() unlock(l) acq. tx_end() unlock(l) Αναμενόμενο κέρδος σε περίπτωση μη-conflict Επιβράδυνση σε conflicts (R-W ή W-W) λόγω χαμένης δουλείας 13
37 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο
38 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
39 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
40 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
41 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
42 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
43 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
44 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
45 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
46 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking
47 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Hand-over-hand locking Ακόμα και fine-grain υλοποιήσεις μπορεί να μην εκμεταλλεύονται πλήρως τον παραλληλισμό Παράδειγμα: ένα lock στον κόμβο 1 μπλοκάρει νήματα που θα μπορούσαν να εκτελεστούν ταυτόχρονα 14
48 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Transactions
49 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Transactions Transaction A READ 1,2,3 15
50 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Transactions Transaction A READ 1,2,3 Transaction B READ 1,2,4 15
51 Tree update από 2 νήματα Στόχος: τροποποίηση κόμβων 3 και 4 με thread-safe τρόπο Transactions Transaction A Transaction B READ 1,2,3 READ 1,2,4 WRITE 3 WRITE 4 Τα δύο updates μπορούν να γίνουν ταυτόχρονα: δεν υπάρχει conflict 15
52 Transactional HashMap Απλά εσωκλείουμε τη λειτουργία σε ένα atomic block το σύστημα εξασφαλίζει την ατομικότητα Transactional HashMap (+) thread-safe, εύκολο στον προγραμματισμό Καλή επίδοση & κλιμακωσιμότητα? Εξαρτάται από την υλοποίηση του TM και το σενάριο εκτέλεσης, αλλά τυπικά ναι 16
53 Επίδοση: Locks vs. TM 17
54 Ευκολία προγραμματισμού παραπλήσια με αυτή των coarse-grain locks ο προγραμματιστής δηλώνει, το σύστημα υλοποιεί Επίδοση παραπλήσια με αυτή των fine-grain locks Πλεονεκτήματα ΤΜ εκμεταλλεύεται αυτόματα τον fine-grain ταυτοχρονισμό δεν υπάρχει tradeoff ανάμεσα στην απόδοση & την ορθότητα Failure atomicity & recovery δεν «χάνονται» locks όταν ένα νήμα αποτυγχάνει failure recovery = transaction abort + restart Composability σύνθεση επιμέρους ατομικών λειτουργιών / software modules σε μία ενιαία ατομική λειτουργία ασφαλής & κλιμακώσιμη 18
55 Υλοποίηση ΤΜ Τα ΤΜ συστήματα πρέπει να παρέχουν ατομικότητα και απομόνωση χωρίς να θυσιάζεται ο ταυτοχρονισμός Ζητήματα υλοποίησης Data versioning (ώστε να μπορεί να γίνει abort/rollback) Conflict detection & resolution (για να ανιχνεύουμε πότε πρέπει να γίνει abort) Επιλογές Hardware transactional memory (HTM) Software transactional memory (STM) Hybrid transactional memory Hardware accelerated STMs Dual-mode systems 19
56 Data Versioning Διαχείριση unted (νέων) και ted (παλιών) εκδόσεων δεδομένων για ταυτόχρονα transactions 1. Lazy versioning (write-buffer based) 2. Eager versioning (undo-log based) 20
57 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Write X = 15 Thread Write Buffer X: 10 Memory Commit Transaction Abort Transaction 21
58 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread X: 10 Memory Write Buffer X: 10 Memory X: 15 Write Buffer Commit Transaction Abort Transaction 21
59 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread X: 10 Memory Write Buffer X: 10 Memory X: 15 Write Buffer Commit Transaction Abort Transaction 21
60 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread X: 10 Memory Write Buffer X: 10 Memory X: 15 Write Buffer Commit Transaction Abort Transaction Thread X: 10 Memory X: 15 Write Buffer 21
61 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread X: 10 Memory Write Buffer X: 10 Memory X: 15 Write Buffer Commit Transaction Abort Transaction Thread X: 15 Memory X: 15 Write Buffer 21
62 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread Write Buffer X: 15 Write Buffer X: 10 Memory X: 10 Memory Commit Transaction Thread Abort Transaction Thread X: 15 Memory X: 15 Write Buffer X: 10 Memory X: 15 Write Buffer 21
63 Lazy versioning Καταγραφή των αλλαγών σε write buffer, ενημέρωση της μνήμης κατά το Begin Transaction Thread Write X = 15 Thread Write Buffer X: 15 Write Buffer X: 10 Memory X: 10 Memory Commit Transaction Thread Abort Transaction Thread X: 15 Memory X: 15 Write Buffer X: 10 Memory X: 15 Write Buffer 21
64 Begin Transaction Thread Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Undo Log X: 10 Memory 22
65 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread X: 10 Memory Undo Log X: 10 Memory X:10 Undo Log 22
66 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread X: 10 Memory Undo Log X: 15 Memory X:10 Undo Log 22
67 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread X: 10 Memory Commit Transaction Thread Undo Log X: 15 Memory X:10 Undo Log X: 15 Memory X:10 Undo Log 22
68 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread X: 10 Memory Commit Transaction Thread Undo Log X: 15 Memory X:10 Undo Log X: 15 Memory X:10 Undo Log 22
69 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread Undo Log X:10 Undo Log X: 10 Memory X: 15 Memory Commit Transaction Thread Abort Transaction Thread X: 15 Memory X:10 Undo Log X: 15 Memory X:10 Undo Log 22
70 Eager versioning Άμεση ενημέρωση μνήμης, διατήρηση undo log για την περίπτωση abort Begin Transaction Thread Write X = 15 Thread Undo Log X:10 Undo Log X: 10 Memory X: 15 Memory Commit Transaction Thread Abort Transaction Thread X: 15 Memory X:10 Undo Log X: 10 Memory X:10 Undo Log 22
71 Lazy versioning (write-buffer based) Data versioning καταγραφή νέων δεδομένων σε write-buffer μέχρι το πραγματική ενημέρωση μνήμης κατά το (+) γρήγορο abort, fault tolerant (απλά «πετάμε» τον writer-buffer) (-) αργά s (πρέπει τα δεδομένα να γραφτούν στη μνήμη) Eager versioning (undo-log based) απευθείας ενημέρωση μνήμης διατήρηση undo πληροφορίας σε log (+) γρήγορο (τα δεδομένα είναι ήδη στη μνήμη) (-) αργό abort, ζητήματα fault tolerance (τι γίνεται αν ένα thread αποτύχει κατά τη διάρκεια ενός transaction) 23
72 Conflict detection Ανίχνευση και διαχείριση conflicts ανάμεσα σε transactions read-write conflict: ένα transaction A διαβάζει τη διεύθυνση X, η οποία έχει γραφτεί από ένα τρέχων transaction B. write-write conflict: δύο transactions γράφουν στην ίδια διεύθυνση μνήμης X Πρέπει να παρακολουθούνται το read-set & write-set ενός transaction read-set: οι διευθύνσεις που διαβάζονται εντός του transaction write-set: οι διευθύνσεις που γράφονται εντός του transaction Conflict resolution τι γίνεται όταν ανιχνευθεί ένα conflict διάφορες πολιτικές stall writer wins ter wins... 24
73 1. Pessimistic (eager) detection Έλεγχος για conflicts σε κάθε load ή store Conflict detection Χρήση contention manager για να αποφασίσει να κάνει stall ή abort Απαισιοδοξία: «Θα έχω conflicts οπότε ας ελέγχω μετά από κάθε πρόσβαση στη μνήμη... Αν χρειαστεί να γίνει abort θα γλιτώσω άσκοπη δουλειά.» 2. Optimistic (lazy) detection Έλεγχος για conflicts κατά το Σε περίπτωση conflict, προτεραιότητα στο ting transaction Αισιοδοξία: «Δεν θα έχω conflicts οπότε ελέγχω μόνο κατά την διάρκεια του.» 25
74 Pessimistic detection Case 1 TIME Success 74
75 Pessimistic detection Case 1 TIME Success 75
76 Pessimistic detection Case 1 TIME Success 76
77 Pessimistic detection Case 1 TIME wr B Success 77
78 Pessimistic detection Case 1 TIME wr B wr C Success 78
79 Pessimistic detection Case 1 TIME wr B wr C Success 79
80 Pessimistic detection Case 1 Case 2 TIME wr B wr C Success Early Detect 80
81 Pessimistic detection Case 1 Case 2 TIME wr C wr B Success Early Detect 81
82 Pessimistic detection Case 1 Case 2 TIME wr C wr B Success Early Detect 82
83 Pessimistic detection Case 1 Case 2 TIME wr C wr B stall Success Early Detect 83
84 Pessimistic detection Case 1 Case 2 TIME wr C wr B stall Success Early Detect 84
85 Pessimistic detection Case 1 Case 2 Case 3 TIME wr C wr B stall Success Early Detect Abort 85
86 Pessimistic detection Case 1 Case 2 Case 3 TIME wr B stall wr C Success Early Detect Abort 86
87 Pessimistic detection Case 1 Case 2 Case 3 TIME wr B stall wr C Success Early Detect Abort 87
88 Pessimistic detection Case 1 Case 2 Case 3 TIME wr B wr C stall restart Success Early Detect Abort 88
89 Pessimistic detection Case 1 Case 2 Case 3 TIME wr B wr C stall restart Success Early Detect Abort 89
90 Pessimistic detection Case 1 Case 2 Case 3 TIME wr B wr C stall restart Success Early Detect Abort 90
91 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr B wr C stall restart Success Early Detect Abort No progress 91
92 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart Success Early Detect Abort No progress 92
93 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart Success Early Detect Abort No progress 93
94 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart restart Success Early Detect Abort No progress 94
95 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart restart Success Early Detect Abort No progress 95
96 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart restart restart Success Early Detect Abort No progress 96
97 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart restart restart Success Early Detect Abort No progress 97
98 Pessimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B stall restart restart restart restart Success Early Detect Abort No progress 98
99 Optimistic detection TIME 99
100 Optimistic detection Case 1 TIME Success 100
101 Optimistic detection Case 1 TIME wr B Success 101
102 Optimistic detection Case 1 TIME wr B wr C Success 102
103 Optimistic detection Case 1 TIME wr B wr C Success 103
104 Optimistic detection Case 1 Case 2 TIME wr B wr C Success Abort 104
105 Optimistic detection Case 1 Case 2 TIME wr B wr C Success Abort 105
106 Optimistic detection Case 1 Case 2 TIME wr B wr C Success Abort 106
107 Optimistic detection Case 1 Case 2 TIME wr B wr C restart Success Abort 107
108 Optimistic detection Case 1 Case 2 TIME wr B wr C Success restart Abort 108
109 Case 1 Case 2 Case 3 Optimistic detection TIME wr B wr C Success restart Abort Success 109
110 Case 1 Case 2 Case 3 Optimistic detection TIME wr B wr C Success restart Abort Success 110
111 Case 1 Case 2 Case 3 Optimistic detection TIME wr C wr B Success restart Abort Success 111
112 Case 1 Case 2 Case 3 Optimistic detection TIME wr C wr B Success restart Abort Success 112
113 Optimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B restart Success Abort Success Forward progress 113
114 Optimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B restart Success Abort Success Forward progress 114
115 Optimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr C wr B restart Success Abort Success Forward progress 115
116 Optimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr B wr C restart restart Success Abort Success Forward progress 116
117 Optimistic detection Case 1 Case 2 Case 3 Case 4 TIME wr B wr C restart restart Success Abort Success Forward progress 117
118 1. Pessimistic conflict detection (+) ανιχνεύει τα conflicts νωρίς Conflict Detection Tradeoffs αναιρεί λιγότερη δουλειά, μετατρέπει μερικά aborts σε stalls (-) δεν εγγυάται την πρόοδο προς τα εμπρός, πολλά aborts σε κάποιες περιπτώσεις 2. Optimistic conflict detection (+) εγγυάται την πρόοδο προς τα εμπρός (-) ανιχνεύει τα conflicts αργά, άσκοπη δουλειά (-) starvation 28
119 ΗΤΜ συστήματα Lazy + optimistic: Stanford TCC Lazy + pessimistic: MIT LTM, Intel VTM, Sun s Rock Eager + pessimistic: Wisconsin LogTM TM Implementation Space (παραδείγματα) STM συστήματα Lazy + optimistic (rd/wr): Sun TL2 Lazy + optimistic (rd) / pessimistic (wr): MS OSTM Eager + optimistic (rd) / pessimistic (wr): Intel STM Eager + pessimistic (rd/wr): Intel STM 29
120 Hardware TM 2011 IBM Blue Gene/Q 2012 IBM zec12 mainframe 2013 Intel TSX (Haswell, Broadwell ) 2014 IBM Power8 Κοινά χαρακτηριστικά εκμετάλλευση των ήδη υπάρχοντων μηχανισμών για coherency conflict detection σε επίπεδο cache line false sharing περιορισμένο μέγεθος read/write sets aborts για διάφορους λόγους εκτός από data conflict cache line eviction, interrupt best-effort: δεν εγγυώνται forward progress ένα transaction μπορεί να μην κάνει ποτέ είναι ευθύνη του χρήστη να εγγυηθεί forward progress με ένα non-transactional path 30
121 Intel TSX Διαθέσιμο στους επεξεργαστές Haswell και μεταγενέστερους. Η πρώτη υλοποίηση HTM διαθέσιμη σε εμπορικούς επεξεργαστές. Στις πρώτες εκδόσεις επεξεργαστών Haswell και Broadwell το TSX είναι buggy Αύγουστος 2014: «Errata prompts Intel to disable TSX in Haswell, early Broadwell CPUs» HSW136. Software Using Intel TSX May Result in Unpredictable System Behavior Λύση; Απενεργοποίηση του TSX από το BIOS. 31
122 Παρέχονται δύο interfaces για την χρήση του 1. Restricted Transactional Memory (RTM) 4 νέες εντολές assembly για τη διαχείριση transactions Intel TSX interfaces μεγαλύτερη ευελιξία ο προγραμματιστής επιλέγει τι θα γίνει σε περίπτωση abort 2. Hardware Lock Elision (HLE) 2 νέα προθέματα εντολών assembly ένα critical section προστατεύετεται από ένα lock, το σύστημα προσπαθεί πρώτα να το εκτελέσει σε transaction, αν αποτύχει εκτελείται με την απόκτηση του lock ο κώδικας που προκύπτει εκτελείται και σε παλιότερους επεξεργαστές χωρίς TSX (τα προθέματα αντιμετωπίζονται σαν nops) 32
123 XBEGIN <fallback address> δηλώνει την αρχή ενός transaction Intel TSX - RTM <fallback address>: η διεύθυνση του κώδικα που θα εκτελεστεί σε περίπτωση abort XEND δηλώνει το τέλος ενός transaction XTEST δείχνει αν εκτελείται transaction ή όχι XABORT <abort code> αναγκάζει το τρέχων transaction να κάνει abort <abort code>: χρησιμοποιείται για την διάκριση μεταξύ διαφορετικών λόγων για abort 33
124 Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
125 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
126 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; Το transaction ξεκίνησε επιτυχώς start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
127 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT(); Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set... Critical Section... TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
128 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set Transactional path σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
129 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Commit TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set Transactional path σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
130 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Commit TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set Transactional path σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() Transaction aborted } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); 34
131 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Commit TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set Transactional path σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() Transaction aborted Αν δεν έχει ξεπεραστεί το όριο των aborts κάνουμε retry το transaction 34
132 Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Commit TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); Το transaction ξεκίνησε επιτυχώς Προσθήκη του fallback lock στο read-set Transactional path σε πέρίπτωση abort το hardware αναλαμβάνει να κάνει rollback και η ροή του προγράμματος επιστρέφει στην κλήση της TX_BEGIN() Transaction aborted Αν δεν έχει ξεπεραστεί το όριο των aborts κάνουμε retry το transaction Αλλιώς «κλείδωσε» το lock και εκτέλεσε το κρίσιμο τμήμα non-transactional path 34
133 Intel TSX HLE 2 νέα προθέματα εντολών assembly XACQUIRE XRELEASE Παράδειγμα: elision ενός TAS lock /* acquire lock */ while ( sync_lock_test_and_set(&lock_var) == 0) /* do nothing */;... Critical section with lock acquired... /* release lock */ sync_lock_release(&lock_var); /* elide lock */ while ( hle_acquire_test_and_set(&lock_var) == 0) /* do nothing */;... Critical section with lock acquired... /* release lock */ hle_release_clear(&lock_var); Το σύστημα εκτελεί αρχικά το κρίσιμο τμήμα με transaction Αν γίνει abort παίρνει το lock και επανεκτελεί το κρίσιμο τμήμα 35
Transactional Memory
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Transactional Memory 9 ο Εξάμηνο Τακτικές Συγχρονισμού Κλειδώματα (locks) Coarse-grain
Διαβάστε περισσότεραTransactional Memory
Εθνικό Μετςόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιςτών Εργαςτήριο Υπολογιςτικών Συςτημάτων Transactional Memory 9 ο Εξάμθνο Τακτικζσ Συγχρονιςμοφ Κλειδϊματα (locks) Coarse-grain
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Transac9onal memory
Υ- 07 Παράλληλα Συστήματα Transac9onal memory Αρης Ευθυμίου Παρ. προγρ/μός με κλειδιά Χαμηλού επιπέδου πολύ κοντά στα μέσα και τις δομές του υλικού πολλές λεπτομέρειες, εύκολα γίνεται λάθος χαμηλή παραγωγικότητα
Διαβάστε περισσότεραΤεχνικές Βελτιστοποίησης Κώδικα για Πολυεπεξεργαστικές Αρχιτεκτονικές. Υπευθυνος Διδάσκων: Νεκτάριος Κοζύρης. Transactional Memory
Τεχνικές Βελτιστοποίησης Κώδικα για Πολυεπεξεργαστικές Αρχιτεκτονικές Υπευθυνος Διδάσκων: Νεκτάριος Κοζύρης Transactional Memory Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραTransactional Memory
Transactional Memory Τα προβλήματα του παράλληλου προγραμματισμού Εντοπισμός παραλληλισμού χειροκίνητα (επισκόπηση) αυτόματα (compiler) Έκφραση παραλληλισμού low-level (π.χ. Pthreads, MPI) high-level (π.χ.
Διαβάστε περισσότεραΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Μελέτη και Αξιολόγηση Transactional Memory σε αλγορίθμους άμορφου παραλληλισμού
Διαβάστε περισσότεραΜελέτη και Αξιολόγηση του Hardware Transactional Memory για Παραλληλοποίηση Skip Lists
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Μελέτη και Αξιολόγηση του Hardware Transactional Memory για Παραλληλοποίηση
Διαβάστε περισσότεραΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:
ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε: Μια βάση δεδοµένων είναι σε συνεπή κατάσταση (consistent state) εάν όλοι οι περιορισµοί ακεραιότητας που έχουν δηλωθεί για αυτήν πληρούνται. Οι αλλαγές στην κατάσταση
Διαβάστε περισσότεραΒάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα
Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 7: Transactions (Συναλλαγές) Ο λόγος που αναπτύχθηκαν
Διαβάστε περισσότεραΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος cman@unipi.gr Δοσοληψίες (Transactions) Μέχρι στιγμής θεωρούσαμε πως υπάρχει μόνο ένας DB χρήστης που εκτελεί μία
Διαβάστε περισσότεραΗ πολυνηματική γλώσσα προγραμματισμού Cilk
Η πολυνηματική γλώσσα προγραμματισμού Cilk Β Καρακάσης Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού Μεταπτυχιακό Μάθημα (688), ΣΗΜΜΥ Νοέμβριος 2009 Β Καρακάσης (CSLab, NTUA) ΣΗΜΜΥ, Μετ/κό 688 9/2009
Διαβάστε περισσότεραΣύγχρονες Προκλήσεις
Σύγχρονες Προκλήσεις Εηζαγσγή Οη CMP είλαη πηα πξαγκαηηθόηεηα Intel Core 2, Quad, Nehalem IBM Power5, Power6 Sun Niagara, Niagara2, Rock Sony Cell Εθηέιεζε πνιιώλ threads Multithreaded environment Multiprogrammed
Διαβάστε περισσότεραQuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)
Quake I QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009) Είναι όντως χρήσιμη η transactional memory σε μεγάλες εφαρμογές; Παράλληλη υλοποίηση μιας
Διαβάστε περισσότεραΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος cman@unipi.gr Δοσοληψίες Concurrent Data Access (Ταυτόχρονη Πρόσβαση σε Δεδομένα) Συνήθως πολλοί χρήστες έχουν ταυτόχρονη
Διαβάστε περισσότεραΔοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη
Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Βασικές έννοιες της δοσοληψίας Δοσοληψία είναι μία
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΠαρουσίαση 5 ης Άσκησης:
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παρουσίαση 5 ης Άσκησης: Θέματα Συγχρονισμού σε Σύγχρονα Πολυπύρηνα Συστήματα Ακ. Έτος
Διαβάστε περισσότεραΣυγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα 9 ο Εξάμηνο Η ανάγκη για συγχρονισμό
Διαβάστε περισσότεραLocking to ensure serializability
Locking to ensure serializability Concurrent access to database items is controlled by strategies based on locking, timestamping or certification A lock is an access privilege to a single database item
Διαβάστε περισσότεραΙδιοκτησία Αντικειµένου
Software Transactional Memory H STM υποστηρίζει την εκτέλεση δοσοληψιών από τις διεργασίες, οι οποίες περιέχουν λειτουργίες που ο χρήστης θέλει να εκτελέσει στα διαµοιραζόµενα αντικείµενα. H STM εγγυάται
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει
Διαβάστε περισσότεραΠροχωρημένα Θέματα Βάσεων Δεδομένων
Προχωρημένα Θέματα Βάσεων Δεδομένων 1ο Σετ Ασκήσεων ΕΡΩΤΗΜΑ 1 Ατομικότητα : Η ατομικότητα πρακτικά εξασφαλίζει ότι είτε όλες οι πράξεις μιας δοσοληψίας θα εκτελεστούν ή καμμιά από αυτές δεν θα εκτελεστεί.
Διαβάστε περισσότεραΣύγχρονες Προκλήσεις
Σύγχρονες Προκλήσεις Εηζαγσγή Οη CMP είλαη πηα πξαγκαηηθόηεηα Intel Core 2, Quad, Nehalem IBM Power5, Power6 Sun Niagara, Niagara2, Rock Sony Cell Ύπαξμε πνιιώλ threads Τί ηα θάλνπκε; Multithreaded environment
Διαβάστε περισσότεραΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Αλγόριθμοι διάσχισης γράφων σε σύγχρονες
Διαβάστε περισσότεραΔοσοληψίες. Κατανεμημένα Συστήματα
Δοσοληψίες Κατανεμημένα Συστήματα 2018-2019 http://www.cslab.ece.ntua.gr/courses/distrib Στο προηγούμενο μάθημα Group communication Multicast για FIFO διάταξη Multicast για ολική διάταξη Sequencer ISIS
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 1 Περιγραφή των Δεδομένων: Τα μοντέλα ενός ΣΔΒΔ Ένα μοντέλο δεδομένων είναι μια συλλογή από έννοιες που χρησιμοποιούνται για την περιγραφή δεδομένων
Διαβάστε περισσότεραΛειτουργικά Συστήματα Η/Υ
Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΔοσοληψίες. Κατανεμημένα Συστήματα
Δοσοληψίες Κατανεμημένα Συστήματα 2016-2017 http://www.cslab.ece.ntua.gr/courses/distrib Στο προηγούμενο μάθημα Group communication Multicast για FIFO διάταξη Multicast για ολική διάταξη Sequencer ISIS
Διαβάστε περισσότεραΑρχεία και Βάσεις Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αρχεία και Βάσεις Δεδομένων Διάλεξη 16η: Διαχείριση Δοσοληψιών Μέρος 2ο - 2PL Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Locking to ensure serializability
Διαβάστε περισσότεραΛειτουργικά Συστήματα (ΗΥ222)
Λειτουργικά Συστήματα (ΗΥ222) Διάλεξη 5: Αδιέξοδα Συγχρονισμός στον Πραγματικό Κόσμο Χρειάζεται οποτεδήποτε > 1 χρήστης πόρου Λίγο πολύ οι ίδιες λύσεις με τον πραγματικό κόσμο: κλείδωμα (στo WC), χρονοπρογραμματισμός
Διαβάστε περισσότεραΈλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη
Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Έλεγχος συγχρονικότητας Διάφορες
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό
Διαβάστε περισσότεραΒάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών
Βάσεις Δεδομένων ΙΙ Διάλεξη 3 η Tεχνικές Aνάκαμψης Δ. Χριστοδουλάκης - Α. Φωκά Τμήμα Μηχανικών Η/Υ & Πληροφορικής - Εαρινό Εξάμηνο 2007 Επιθυμητές Ιδιότητες μιας Δοσοληψίας Ιδιότητες Δοσοληψιών Αtomicity
Διαβάστε περισσότεραDr. Garmpis Aristogiannis - EPDO TEI Messolonghi
Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει
Διαβάστε περισσότεραΔιαχείριση Δοσοληψιών
Διαχείριση Δοσοληψιών Ορισμός της δοσοληψίας Συνδρομικές εκτελέσεις (concurrency) Έλεγχος σειριοποιησιμότητας Ανάκαμψη δοσοληψιών (recovery) Υλοποίηση της Απομόνωσης Βασική πηγή διαφανειών: Silberschatz
Διαβάστε περισσότεραΕπανάκτηση δεδομένων. (εμπλουτισμένο υλικό)
Επανάκτηση δεδομένων (εμπλουτισμένο υλικό) http://delab.csd.auth.gr/courses/c_dbimpl/ Ευχαριστίες Μέρος του υλικού είναι βασισμένο στο βιβλίο Database Systems: The Complete Book 2 Επανάκτηση ηδεδομένων
Διαβάστε περισσότεραΔιάλεξη Εισαγωγή στη Java, Μέρος Γ
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer
Διαβάστε περισσότεραΑποκατάσταση συστήματος Βάσεις Δεδομένων
Αποκατάσταση συστήματος Βάσεις Δεδομένων με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Κατηγοριοποίηση αποτυχιών Αποτυχία συναλλαγής (Transaction failure):
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΚεφάλαιο 13 Δοσοληψίες
Κεφάλαιο 13 Δοσοληψίες Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν βασικά στοιχεία όσον αφορά τις δοσοληψίες, την έννοια της σειριοποιησιμότητας και των διαφόρων επιπέδων απομόνωσης. Προαπαιτούμενη γνώση
Διαβάστε περισσότεραPRINCIPLES OF TRANSACTION-ORIENTED DATABASE RECOVERY. Theo Haerder Andreas Reuter. Μαρία Κουτσουλιέρη
PRINCIPLES OF TRANSACTION-ORIENTED DATABASE RECOVERY Theo Haerder Andreas Reuter Μαρία Κουτσουλιέρη Για να συλλάβουµε την ιδέα της ανάνηψης στις βάσεις δεδοµένων (database recovery) πρέπει να έχουµε υπ
Διαβάστε περισσότεραΥ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης
Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει
Διαβάστε περισσότεραΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης
ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Συναλλαγές ιαχείριση Συναλλαγών Τζικούλης Βασίλειος Credits:Γιάννης Μακρυδάκης Συναλλαγές Η ταυτόχρονες συναλλαγές (δοσοληψίες, transactions) µε µια
Διαβάστε περισσότεραΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2
ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 Πολυπύρηνοι επεξεργαστές, μέρος 2 Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου Cache coherence & scalability! Τα πρωτόκολλα
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή
ΚΕΦΑΛΑΙΟ 9 Ταυτόχρονος προγραμματισμός και νήματα Σύνοψη Σε αυτό το κεφάλαιο πραγματευόμαστε τον ταυτόχρονο προγραμματισμό με τη χρήση νημάτων. Η έμφαση είναι στην κατανόηση βασικών λειτουργιών των νημάτων
Διαβάστε περισσότεραΕπαναφορά του Συστήματος (Μέρος Α')
Επαναφορά του Συστήματος (Μέρος Α') Κεφάλαιο 18 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke Ελληνική Μετάφραση: Γεώργιος Ευαγγελίδης 1 Επανάληψη: Οι ιδιότητες ACID A tomicity (Ατομικότητα):
Διαβάστε περισσότεραΣηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1
Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr Αποφυγή ενεργής αναμονής εναλλαγή if/while () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά
Διαβάστε περισσότεραΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ
ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ CPUs Διδάσκων: Παναγιώτης Καρκαζής Περίγραμμα -Συσκευές Ι/Ο - Διακοπές, Εξαιρέσεις, Παγίδες -Καταστάσεις λειτουργίας -Συνεπαξεργαστές mechanism Συσκευές Ι/Ο Οι συσκευές
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΑδιέξοδα (Deadlocks)
Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection
Διαβάστε περισσότεραΥ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές, 2ο μέρος
Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές, 2ο μέρος Αρης Ευθυμίου Το σημερινό μάθημα! Cache coherence directory protocols! Memory consistency! MulG- threading 2 Cache coherence & scalability! Τα
Διαβάστε περισσότεραTransactions Management. (Διαχείριση Δοσοληψιών)
Transactions Management (Διαχείριση Δοσοληψιών) Επισκόπηση διαλέξεων Αντιμετώπιση αστοχιών συστήματος (failure recovery) Χρήση ιστορικού/πρακτικού - Logging (Undo, Redo, Undo/Redo) Χρονοπρογράμματα Δοσοληψιών
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΠροσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα
Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα ΙΙΙ 1 lalis@inf.uth.gr Προβλήματα με κλείδωμα Υπερβολική σειριοποίηση / άσκοπη αναμονή Κόστος συγχρονισμού Αδιέξοδα Απότομος τερματισμός νημάτων
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΟρισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα
ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων
Διαβάστε περισσότεραΕπεξεργασία οσοληψιών
Επανάληψη: οσοληψίες Επεξεργασία οσοληψιών Ανακεφαλαίωση Πρόβληµα «Σωστή» εκτέλεση προγραµµάτων όταν επιτρέπουµε ταυτοχρονισµό και ακόµα και αν υπάρχουν αποτυχίες Βάσεις εδοµένων II 2003-2004 Ευαγγελία
Διαβάστε περισσότεραΠροσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα
Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα ΙΙΙ 1 lalis@inf.uth.gr Προβλήματα με κλείδωμα Υπερβολική σειριοποίηση / άσκοπη αναμονή Κόστος συγχρονισμού Αδιέξοδα Απότομος τερματισμός νημάτων
Διαβάστε περισσότεραΔιάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι
Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Αλγόριθμος Ψησταριάς (Bakery Algorithm) Αλγόριθμος 2- επεξεργαστών
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης
ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης Συναλλαγές ιαχείριση Συναλλαγών Αυγουστάκη Αργυρώ Συναλλαγές Κράτησε για τον κ. Χ την θέση 13Α για LA! Κράτησε για τον κ. Y την θέση 13Α για
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1
Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση
Διαβάστε περισσότεραΤο λειτουργικό σύστημα. Προγραμματισμός II 1
Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί
Διαβάστε περισσότεραΈλεγχος Ταυτοχρονισμού
Έλεγχος Ταυτοχρονισμού Κεφάλαιο 17 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke Ελληνική Μετάφραση: Γεώργιος Ευαγγελίδης 1 Συγκρουσιακώς Σειριοποιήσιμα Χρονοπρογράμματα Δυο χρονοπρογράμματα
Διαβάστε περισσότεραΠαράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων 9 ο Εξάμηνο Σχεδιασμός παράλληλων
Διαβάστε περισσότεραCilk: Φιλοσοφία και Χρήση
1 Cilk: Φιλοσοφία και Χρήση Παράλληλα Συστήματα Επεξεργασίας 9ο εξάμηνο ΣΗΜΜΥ ακ. έτος 2012-2013 http://www.cslab.ece.ntua.gr/courses/pps Εργαστήριο Υπολογιστικών Συστημάτων ΕΜΠ Δεκέμβριος 2012 Cilk 2
Διαβάστε περισσότεραΚατανεμημένες δοσοληψίες
Κατανεμημένες δοσοληψίες Κατανεμημένα Συστήματα 2015-2016 http://www.cslab.ece.ntua.gr/courses/distrib Στο προηγούμενο μάθημα Απλές δοσοληψίες (transactions) Flat Nested Ιδιότητες ACID Και κυρίως atomicity
Διαβάστε περισσότεραΕργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ
Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)
Διαβάστε περισσότεραΘεµατολόγιο. Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη;
Θεµατολόγιο Κλειδώµατα 2 Phase Locking Πώς γίνεται στην πράξη; Αδιέξοδα 1 Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη; Η σειριοποιησιµότητα όψεων είναι πολύ ακριβή για να ελεγχθεί, ούτως ή άλλως... Οι
Διαβάστε περισσότεραΚρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1
Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο
Διαβάστε περισσότεραΛειτουργικά Συστήματα
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών
Διαβάστε περισσότεραΕλεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1
Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός
Διαβάστε περισσότεραΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης
ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης Συναλλαγές ιαχείριση Συναλλαγών Αυγουστάκη Αργυρώ Συναλλαγές Κράτησε για τον κ. Χ την θέση 13Α για LA! Κράτησε για τον κ. Y την θέση 13Α για
Διαβάστε περισσότεραΚατανεμημένες δοσοληψίες
Κατανεμημένες δοσοληψίες Κατανεμημένα Συστήματα 2018-2019 http://www.cslab.ece.ntua.gr/courses/distrib Στο προηγούμενο μάθημα Απλές δοσοληψίες (transactions) Ιδιότητες ACID Και κυρίως atomicity και durability
Διαβάστε περισσότεραΤεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε
Επιθυµητές Ιδιότητες µιας οσοληψίας Τεχνικές Ανάκαµψης Ιδιότητες οσοληψιών Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε καµία Consistency (συνέπεια) - διατήρηση συνέπειας της Β Isolation (αποµόνωση)
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται
Διαβάστε περισσότεραΣυστήματα Διαχείρισης Βάσεων Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Συστήματα Διαχείρισης Βάσεων Δεδομένων Φροντιστήριο 9: Transactions - part 1 Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Tutorial on Undo, Redo and Undo/Redo
Διαβάστε περισσότεραParallel Architectures
Parallel Architectures Memory Consistency + Synchronization Figures, examples από 1. Transactional Memory, D. Wood, Lecture Notes in ACACES 2009 2. Krste Asanović s s Lecture Notes, University of California,
Διαβάστε περισσότεραΕπιτεύγµατα των Λ.Σ.
Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος
Διαβάστε περισσότεραΕπαναληπτικές ασκήσεις
Επαναληπτικές ασκήσεις Ασκ 1: Θεωρείστε τα παρακάτω χρονοδιαγράμματα σύγχρονης εκτέλεσης : S 1 = r 1 (A); w 4 (B); w 1 (C); w 3 (D); r 2 (C); w 3 (A); w 1 (A); r 3 (B); w 3 (B); r 2 (D); w 2 (A) S 2 =
Διαβάστε περισσότεραΟργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός
Διαβάστε περισσότεραΤεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε
Επιθυµητές Ιδιότητες µιας οσοληψίας Τεχνικές Ανάκαµψης Ιδιότητες οσοληψιών Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε καµία Consistency (συνέπεια) - διατήρηση συνέπειας της Β Isolation (αποµόνωση)
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΤο λειτουργικό σύστημα. Προγραμματισμός II 1
Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί
Διαβάστε περισσότεραΔιάλεξη 12 Καθυστερήσεις (Stalls)
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 12 Καθυστερήσεις (Stalls) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ 1 Καθυστερήσεις και Εκκενώσεις Εντολών Οι κίνδυνοι δεδομένων (data
Διαβάστε περισσότεραΕπεξεργασία οσοληψιών (συνέχεια)
Επανάληψη: οσοληψίες Επεξεργασία οσοληψιών (συνέχεια) Πρόβληµα «Σωστή» εκτέλεση προγραµµάτων όταν επιτρέπουµε ταυτοχρονισµό και ακόµα και αν υπάρχουν αποτυχίες 1 2 οσοληψία (transaction) Επανάληψη: οσοληψίες
Διαβάστε περισσότεραΣυνέπεια μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα
Συνέπεια μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα ΙΙΙ 1 lalis@inf.uth.gr Απλοποιημένο μοντέλο συστήματος CPU/cores πάνω σε δίαυλο/δίκτυο (bus/interconnect) για απλότητα, εδώ CPU = core Η κυρίως
Διαβάστε περισσότεραΑμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1
Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση
Διαβάστε περισσότεραΒάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών
Βάσεις Δεδομένων ΙΙ Διάλεξη 1 η Επεξεργασία Δοσοληψιών Δ. Χριστοδουλάκης - Α. Φωκά Τμήμα Μηχανικών Η/Υ & Πληροφορικής - Εαρινό Εξάμηνο 2007 Ορισμός Προβλήματος Σύστημα Επεξεργασίας Δοσοληψιών Συστήματα
Διαβάστε περισσότεραΜνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1
Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Ενότητα 14 Δυναμική διαχείριση μνήμης Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Στατική δέσμευση μνήμης Με τη δήλωση απλών μεταβλητών
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότεραΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ Α Σ ΤΗΡΙΟ ΥΠΟΛ Ο Γ Ι Σ ΤΙ Κ Ω Ν Σ Υ Σ ΤΗ ΜΑ ΤΩΝ www. c s l a b.
Διαβάστε περισσότεραΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2
ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 10ο μάθημα: Ορια παραλληλίας επιπέδου εντολής και πολυνηματικοί επεξεργαστές Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου Ορια
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Μemory)
ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1
Διαβάστε περισσότεραΈλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη
Έλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Πρωτόκολλα βασισμένα σε γράφο
Διαβάστε περισσότεραΥλοποίηση Σηματοφόρων
Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν
Διαβάστε περισσότεραΠαράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Νήματα & Συγχρονισμός Μεταβλητές κλειδιά Φράγματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων
Διαβάστε περισσότεραΚατανεμημένα Συστήματα με Java. Ενότητα # 7: Ατομικές συναλλαγές Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κατανεμημένα Συστήματα με Java Ενότητα # 7: Ατομικές συναλλαγές Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διαβάστε περισσότερα