Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΘΝΙΚΟ ΚΕΝΤΡΟ ΚΟΙΝΩΝΙΚΩΝ ΕΡΕΥΝΩΝ Στοιχεία και αριθμητικά δεδομένα (1) : Επιδείνωση κοινωνικών δεικτών  Πληθυσμός σε κίνδυνο φτώχειας ή κοινωνικό αποκλεισμό.
Advertisements

07. ΚΥΚΛΩΜΑΤΑ ΣΥΝΕΧΟΥΣ ΡΕΥΜΑΤΟΣ
5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Εφαρμογές Υπολογιστών Ά Λυκείου Κεφ. 4 Λογισμικό Συστήματος
Παραλληλοποίηση κώδικα
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Πολυεπεξεργαστές.
Συστήματα εισόδου/εξόδου
Λειτουργικά Συστήματα
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Pipelining – Βασικές αρχές.
Διαχείριση Έργου Οργάνωση, σχεδιασμός και προγραμματισμός έργων ανάπτυξης λογισμικού.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Πιθανοκρατικοί Αλγόριθμοι
Οργάνωση και Αρχιτεκτονική Υπολογιστών Διάδρομοι Μεταφοράς Δεδομένων
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Σχεδίαση μονάδας ελέγχου επεξεργαστή Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκτάριος Κοζύρης
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ. Ε
Λογισμικο συστηματοσ Κεφάλαιο 4ο
Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
1 Α. Βαφειάδης Τ.Ε.Ι Θεσσαλονίκης – Τμήμα Πληροφορικής Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Εργαστηριακό Μέρος Μέρος: Τρίτο Εξάμηνο: Έβδομο Καθηγητής:
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
22/11/2004Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
5. Αμοιβαίος αποκλεισμός
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλη εκτέλεση βρόχων.
© GfK 2012 | Title of presentation | DD. Month
1 4 Square Questions B A D C Κοιτάξτε προσεκτικά το διάγραμμα. Θα σας κάνω 4 ερωτήσεις γι’ αυτό το τετράγωνο. ΕΤΟΙΜΟΙ;
Οι χημικοί δεσμοί και οι δομές Lewis
Λειτουργικά Συστήματα ΑΔΙΕΞΟΔΑ. 3.1 Εισαγωγή  Αδιέξοδο = ένα σύνολο από διεργασίες που δημιουργούν μια κυκλική αλυσίδα όπου κάθε process στην αλυσίδα.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Γραφήματα & Επίπεδα Γραφήματα
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Συναρτησιακές Εξαρτήσεις.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Αποκεντρωμένη Διοίκηση Μακεδονίας Θράκης ∆ιαχείριση έργων επίβλεψης µε σύγχρονα µέσα και επικοινωνία C2G, B2G, G2G Γενική Δ/νση Εσωτερικής Λειτουργίας.
Βάσεις Δεδομένων II Διαχείριση Δοσοληψιών Πάνος Βασιλειάδης Σεπτέμβρης 2002
Αδιέξοδο Μόνιμο μπλοκάρισμα ενός συνόλου διεργασιών που είτε συναγωνίζονται για πόρους του συστήματος είτε επικοινωνούν μεταξύ τους Δεν υπάρχει αποδοτική.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
1 Content Addressable Network Λίλλης Κώστας Καλλιμάνης Νικόλαος Αγάθος Σπυρίδων – Δημήτριος Σταθοπούλου Ευγενία Γεωργούλας Κώστας.
Χρονοδρομολόγηση CPU Βασικές Αρχές Κριτήρια Χρονοδρομολόγησης
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Σχεδίαση αλγορίθμων (2ο μέρος)
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Οργάνωση και Αρχιτεκτονική Υπολογιστών Βασικές αρχές Αρχιτεκτονικής
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Dr. Holbert Νικ. Α. Τσολίγκας Χρήστος Μανασής
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ουρά Προτεραιότητας: Heap
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
© Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος Νεκτάριος Κοζύρης Νίκος Αναστόπουλος
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Διαχείριση Συναλλαγών Πάνος Βασιλειάδης Μάρτιος 2014
Κατανεμημένα Συστήματα με Java Ενότητα # 5: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
+19 Δεκέμβριος 2014 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20 Δείκτης < -20 Συνολικά της ΕΕ: +5 Δείκτης > +20 Δείκτης 0 έως +20 Δείκτης 0 έως -20.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Επαναληπτικές ασκήσεις
Μεταγράφημα παρουσίασης:

Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός

Ο νόμος του Amdahl - υπενθύμιση Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 2 Κάθε αλγόριθμος έχει ένα ποσοστό s που δεν παραλληλίζεται ( σειριακό τμήμα του αλγορίθμου ) Ακόμα και αν αγνοήσουμε το χρόνο επικοινωνίας και αν υποθέσουμε ότι τεμαχίσαμε τον κώδικα σε απολύτως ίσα κομμάτια η επιτάχυνση που θα επιτύχουμε δεν είναι μεγαλύτερη από 1/s Επιτάχυνση < 1/s Πχ. s = 0.05 ( δηλαδή s = 5%) τότε Επιτάχυνση < 20, όσους επεξεργαστές N και αν χρησιμοποιήσουμε για την παράλληλη εκτέλεση.

Ο νόμος του Amdahl -Παράδειγμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 3 Β Γ Ε Ζ Δ Η Θ Α Κ Ι Γράφος εξάρτησης Έστω ότι κάθε κόμβος απαιτεί χρόνο t=1. Σειριακή εκτέλεση T=10. Παράλληλη εκτέλεση όχι μικρότερη από το κρίσιμο μονοπάτι Α - Β - Γ - Ζ - Η - Κ, μήκος = 6, Τ παρ ≥ 6 s = 6/10 Επιτάχυνση ≤ 1/s = 10/6 Κρίσιμο μονοπάτι

Εργασίες, Διεργασίες Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 4 Ορισμοί Εργασία (task) = το μικρότερο κομμάτι κώδικα που δε διασπάται σε μικρότερα τμήματα = κόμβος στο Γράφο Εξάρτησης Διεργασία (process) = σύνολο από εργασίες που εκτελούνται στον ίδιο επεξεργαστή

Επικοινωνία διεργασιών Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 5 Γιατί επικοινωνία; 1. Χρήση κοινών αγαθών (κοινές μεταβλητές, κοινές θύρες I/O, κοινοί πόροι, κλπ) όταν έχουμε κοινή μνήμη 2. Ανταλλαγή μηνυμάτων όταν έχουμε κατανεμημένη μνήμη 3. Συγχρονισμός

Υποστήριξη από hardware Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 6 Βασικές λειτουργίες Ατομική ανταλλαγή (atomic exchange) Διάβασε και αύξησε (fetch-and-increment) Έλεγξε και γράψε (test-and-set)

Atomic Exchange Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 7 Καταχωρητής R ↔ Θέση μνήμης X αμοιβαία ανταλλαγή δεδομένων σε ένα αδιάσπαστο (ατομικό) κύκλο RX

Fecth and Increment Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 8 Καταχωρητής R, Θέση μνήμης X R = X X = X+1 RX X+1 αδιάσπαστα σε ένα κύκλο

Test and Set Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 9 Καταχωρητής R, Θέση μνήμης X R = X if (R==0) X = 1 RX 1 R==0 αδιάσπαστα σε ένα κύκλο

Χρήση κοινών αγαθών Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 10 Πρόβλημα στη χρήση κοινών αγαθών Έστω C = κάποιος μετρητής Ανάλογα με τη σειρά εκτέλεσης, C = C+1, ή C = C+2 Επεξεργαστής ΑΕπεξεργαστής Β load R5,Cload R2,C add R5,1add R2,1 store C,R5store C,R2

Κλείδωμα - Ξεκλείδωμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 11 Προστασία κοινών μεταβλητών Σηματοφορέας S: S = 1 : κλειδωμένο, απαγορεύεται η πρόσβαση από άλλον S = 0 : ξεκλείδωτο, επιτρέπεται η πρόσβαση Κλείδωμα lock(S) (γνωστό και ως P(S) ) Λειτουργία: while (S==1) { wait; } S=1; Ξεκλείδωμα unlock(S) (γνωστό και ως V(S) ) Λειτουργία: S=0;

Πρακτικό κλείδωμα (spin lock) Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 12 Χρήση atomic exchange (aexch) mov R1,#1;R1 = 1 = τιμή κλειδώματος wait: aexch R1,S;ατομική ανταλλαγή μεταξύ R1 και S bneqz R1,wait;αν S≠0 τότε έχει ;κλειδωθεί από άλλη διεργασία ;ξαναπροσπάθησε (goto wait)....;υπόλοιπος κώδικας

Πρακτικό ξεκλείδωμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 13 Δεν απαιτείται atomic exchange (aexch) αλλά δε βλάπτει mov R1,#0;R1 = 0 = τιμή ξε κλειδώματος aexch R1,S;ατομική ανταλλαγή μεταξ ύ R1 και S....;υπόλοιπος κώδικας

Οι εντολές load-linked και store- conditional Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 14 load-linked: ίδια με την απλή load αλλά ενημερώνεται ο link-register με την τιμή της διεύθυνσης μνήμης από όπου γίνεται το load link-register: παρακολουθεί συνεχώς τη δραστηριότητα του bus και αν δει να κυκλοφορεί διεύθυνση ίση με το περιεχόμενό του τότε αυτομάτως μηδενίζεται store-conditional: ίδια με τη store αλλά αν link-register == 0 τότε το store αποτυγχάνει (δεν εκτελείται) και επιστρέφεται κάποια χαρακτηριστική τιμή (πχ. NaN, Inf, κλπ)

Κλείδωμα με ll-sc Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 15 ld R4,#1;R4 = 1 try: mov R3,R4;φόρτωσε προσωρινά τον R4 στον R3 ll R2,S;load-linked sc R3,S;store-conditional beqz R3,try;άλμα πίσω αν το store απέτυχε (αν R3=0) mov R4,R2;μεταφορά του παλαιού περιεχομένου ;του S στον R4

Φράγμα συγχρονισμού Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 16 Φράγμα συγχρονισμού Ν διεργασιών είναι ένα σημείο στον κώδικα όπου το πρόγραμμα σταματάει μέχρι να φτάσουν στο ίδιο φράγμα οι υπόλοιπες N-1 διεργασίες Συναντάται σε loops και σε άλλα σημεία που απαιτείται συγχρονισμός μεταξύ διεργασιών

Απλό (εσφαλμένο) φράγμα συγχρονισμού Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 17 lock(S_count);/* προστάτεψε την μεταβλητή count */ if (count==0) release=0;/* αρχικοποίηση του release */ /* release = 0 -> σταμάτα και περίμενε */ /* release = 1 -> OK προχώρα */ count = count +1;/* μέτρα πόσοι έφτασαν στο φράγμα */ unlock(S_count);/* τέλος κρίσιμου τμήματος για τo count */ if (count==total) {/* έφτασαν όλοι στο φράγμα */ count=0;/* μηδένισε το μετρητή */ release=1;/* απελευθέρωσε τις διεργασίες */ } else spin(release);/* περίμενε μέχρι release=1 */

Πρόβλημα στο απλό φράγμα συγχρονισμού Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 18 Χρήση φράγματος συνήθως σε loop A release 1A iteration kiteration k+1 Β0 Γ0 Δ1 Β0 Δ0 deadlock 0 0

Ορθό φράγμα συγχρονισμού Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 19 Εναλλαγή σημασίας release iteration k: release=0: stop, release=1: go iteration k+1: release=1:stop, release=0:go A release 1A iteration k local_sense=1 Β0 Γ0 Δ1 Β1 Γ1 1 0 iteration k+1 local_sense=0 Δ0.....

Πρακτικό (ορθό) φράγμα συγχρονισμού Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 20 local_sense = 1-local_sense;/*local_sense = τοπική μεταβλητή */ lock(S_count);/* προστάτεψε την μεταβλητή count */ if (count==0) {/* αρχικοποίηση του release */ release=1-local_sense;/* release = local_sense -> προχώρα */ }/* release = 1-local_sense -> περίμενε */ count = count+1;/* μέτρα πόσοι έφτασαν στο φράγμα */ unlock(S_count);/* τέλος κρίσιμου τμήματος για τo count */ if (count==total) {/* έφτασαν όλοι στο φράγμα */ count=0;/* μηδένισε το μετρητή */ release=local_sense;/* απελευθέρωσε τις διεργασίες */ } else spin(release==local_sense);/* περίμενε */

Παράλληλες εντολές υψηλού επιπέδου Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 21 Το ζεύγος εντολών fork-join Το ζεύγος εντολών parbegin-parend Η δομή monitor

Οι εντολές fork και join Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 22 fork Label : δημιούργησε αντίγραφο του τρέχοντος προγράμματος και άρχισε να το εκτελείς από το σημείο με ετικέτα Label join n : φράγμα συγχρονισμού για n διεργασίες

Fork-join παράδειγμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 23 P1 P2 P3 P4 P6 P5 P7 P8 Γράφος εξάρτησης: P1,P2,P3,...= εργασίες = ρουτίνες ακμές = επικοινωνία δεδομένων

Fork-join παράδειγμα (2) Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 24 fork L2;fork L6; goto L3; fork L4;fork L6; goto L5; fork L6;goto L8; fork L7;goto L5; goto L8; L1: P1; L2: P2; L3: P3; L4: P4; L5: join c5; P5; L6: join c6; P6; L7: P7; L8: join c8; P8; END. c5=3; c6=3; c8=3; P1 P2 P3 P4 P6 P5 P7 P8

Οι εντολές parbegin και parend Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 25 parbegin-parend : όπως τα begin-end σε ένα loop μόνο που οι διεργασίες δεν εκτελούνται σειριακά αλλά παράλληλα parend : φράγμα συγχρονισμού για τις διεργασίες

parbegin-parend παράδειγμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 26 P1 P2P3P4 P5 P1; parbegin P2; || P3; || P4; parend P5;

Αδιέξοδα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 27 Αδιέξοδο: κατάσταση κατά την οποία μια σειρά εργασιών περιμένουν με κυκλικό τρόπο η μια την άλλη και καμία δεν μπορεί να προχωρήσει Τέσσερεις συνθήκες που οδηγούν σε αδιέξοδο 1. Δέσμευση και αναμονή 2. Όχι προαπελευθέρωση 3. Αμοιβαίος αποκλεισμός 4. Κυκλική αναμονή

Αποφυγή αδιεξόδων Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 28 Στατική αποφυγή: Οργάνωση του κώδικα έτσι ώστε σε καμία περίπτωση να μην υπάρχει πιθανότητα αδιεξόδου Λύση compile-time Δυναμική αποφυγή: Αφήνουμε τον κώδικα όπως είναι αλλά έχουμε μηχανισμούς ανίχνευσης αδιεξόδων και επίλυσής τους αν προκύψουν Λύση run-time

Στατική αποφυγή αδιεξόδων Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 29 Βασική υπόθεση: οι κώδικες των διεργασιών εκτελούνται ασύγχρονα Λύση compile-time: αναδιοργάνωση των κρίσιμων τμημάτων έτσι ώστε να μην υπάρξει περίπτωση κυκλικής αναμονής: Μετακίνηση των lock νωρίτερα, μετακίνηση των unlock αργότερα Χρήση των γράφων δέσμευσης αγαθών

Γράφος δέσμευσης αγαθών Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 30 Κόμβοι: κοινά αγαθά, πχ. σηματοφορείς S1, S2, S3, κλπ Ακμές: μεταξύ S1, S2 αν υπάρχουν διαδοχικά P(S1), P(S2) χωρίς να παρεμβάλεται V(S1) Υπάρχει κίνδυνος αδιεξόδου αν και μόνο αν υπάρχει κύκλος στο γράφο δέσμευσης αγαθών

Στατική αποφυγή αδιεξόδων (2) Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 31 Διεργασία Δ1Διεργασία Δ2Διεργασία Δ3Διεργασία Δ4... P(Sa)... P(Sb)... P(Sc)... V(Sa)... V(Sb) V(Sc)... P(Sb)... P(Sd)... P(Se)... V(Se)... V(Sd)... V(Sb)... P(Sc)... P(Se)... V(Se)... V(Sc)... P(Se)... P(Sf)... P(Sa)... V(Sf) V(Sa)... V(Se)...

Γ.Δ.Α.: Παράδειγμα Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 32 Sa Sb Sc Sd Se Sf Δ1Δ1 Δ1Δ1 Δ2 Δ3 Δ4 Δύο κύκλοι = κίνδυνος αδιεξόδου

Στατική αποφυγή αδιεξόδων με χρήση ΓΔΑ Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 33 Sa Sb Sc Sd Se Sf Δ1Δ1 Δ1Δ1 Δ2 Δ3 Δ4 Νέα Διεργασία Δ4’... P(Sa) P(Se)... P(Sf)... P(Sa)... V(Sf) V(Sa)... V(Se)...

Δυναμική αποφυγή αδιεξόδων Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 34 Ανίχνευση αδιεξόδων Διαθέτουμε πίνακα αγαθών. ελεύθερα αγαθά, δεσμευμένα αγαθά, αιτήσεις δέσμευσης αγαθών Ελέγχουμε την κατάσταση του πίνακα για κυκλική αναμονή Επίλυση αδιεξόδου Όταν ανιχνευτεί αδιέξοδο επιλύεται σταματώντας κάποιες διεργασίες (πιθανώς όλες) και ελευθερώνοντας τα αγαθά τους Επώδυνο. Αλγόριθμος βέλτιστης ανάκλησης διεργασιών

Σύγκριση μεθόδων αποφυγής αδιεξόδων Προηγμένες Αρχιτεκτονικές Η / Υ και Παράλληλα Συστήματα Κ. Διαμαντάρας 35 Δυναμική αποφυγή: καλύτερη διαχείριση κοινών αγαθών δυσκολότερη υλοποίηση Στατική αποφυγή: απλούστερη υλοποίηση κλείδωμα κώδικα «χωρίς λόγο»