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

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

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

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

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

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

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

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

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

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

Παράλληλη Επεξεργασία

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

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

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο

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

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

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t)

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

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Το μάθημα. Λειτουργικά Συστήματα Πραγματικού Χρόνου Βασικές Έννοιες 6. Ενσωματωμένα Συστήματα (embedded systems) Παραδείγματα

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ

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

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

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

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

Παράλληλη Επεξεργασία

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

Λειτουργικά Συστήματα Πραγματικού Χρόνου

Εισαγωγή στα Λειτουργικά Συστήματα

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

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

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

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

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

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

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

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

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

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

Νήµατα. Πολύ σηµαντικό

Σκελετός Παρουσίασης

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

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

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

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

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

Εργαστήριο Διοίκησης Παραγωγής & Έργων. Εισαγωγή στην προσομοίωση διεργασιών χρησιμοποιώντας το λογισμικό Extend

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος Κανονική Εξέταση Λύσεις

ΠΛΕ-006 ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ Project

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων. Συγχρονισμός

50 Ketseo,Theoni Sarif,Omar 104

Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

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

Διορθώσεις σελ

1. Εισαγωγή. Λειτουργικά Συστήματα Η/Υ. Διεργασίες. Ορισμός ΚΕΦΑΛΑΙΟ 3 - ΔΙΕΡΓΑΣΙΕΣ. Κεφάλαιο 3 «Διεργασίες»

Κατηγορίες Νηµάτων. Νήµατα Επιπέδου Πυρήνα. Νήµατα Επιπέδου Χρήστη. «Νήµατα Επιπέδου Χρήστη» Ε-85: Ειδικά Θέµατα Λογισµικού

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

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

Διάλεξη 16: Πρόβλημα Συμφωνίας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κεφάλαιο 3. Διδακτικοί Στόχοι

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

Αντικειμενοστρεφής Προγραμματισμός

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκό Έτος

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

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

Kitchen Doormam. Floor with Tables. Restaurant Floorplan and Operation

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

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

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

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

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

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

2η Εργαστηριακή Άσκηση

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Transcript:

Σηματοφόροι (Σηματοφορείς) 1 lalis@inf.uth.gr

Αποφυγή ενεργής αναμονής if () { WAIT(); Μπορεί να γίνει εναλλαγή αφού το νήμα κάνει τον έλεγχο της συνθήκης αναμονής και την βρει αληθή, αλλά προτού αυτό προλάβει να μπλοκάρει Θέλουμε ατομικό έλεγχο της συνθήκης αναμονής και μπλοκάρισμα του νήματος αν αυτή ισχύει 2 lalis@inf.uth.gr

Σηματοφόροι (semaphores) Αφηρημένος τύπος δεδομένων με 3 λειτουργίες: init(sem s, int val) αρχικοποιεί τον σηματοφόρο στην τιμή val >=0 down(sem s) (ή wait ή P) επιχειρεί να μειώσει την τιμή του σηματοφόρου κατά 1 αν η τιμή του s είναι 0, το καλών νήμα μπλοκάρεται up(sem s) (ή signal ή V) αν υπάρχει μπλοκαρισμένο νήμα, αυτό ξεμπλοκάρεται διαφορετικά, αυξάνει την τιμή του σηματοφόρου κατά 1 Οι down/up λειτουργούν υπό ταυτόχρονη εκτέλεση η εσωτερική υλοποίηση δεν μας ενδιαφέρει (προς στιγμή) Γενικό εργαλείο συγχρονισμού 3 lalis@inf.uth.gr

up down init value thread queue sem s τρέχουσα τιμή σηματοφόρου ουρά νημάτων που έχουν μπλοκάρει στον σηματοφόρο 4 lalis@inf.uth.gr

Τύποι σηματοφόρων 1. Εύρος τιμών Γενικοί/μετρητές: >=0 Δυαδικοί: 0 ή 1 2. Προτεραιότητα/σειρά με την οποία ξεμπλοκάρονται (μέσω up) τα νήματα που έχουν μπλοκάρει στην down Random: η επιλογή γίνεται με τυχαία σειρά (θεωρητικά, υπάρχει περίπτωση λιμοκτονίας) Fair: η επιλογή γίνεται έτσι ώστε να μην υπάρχει περίπτωση λιμοκτονίας για κανένα νήμα FIFO: ξεμπλοκάρεται το νήμα που μπλόκαρε πριν από τα υπόλοιπα 5 lalis@inf.uth.gr

Κρίσιμο τμήμα με σηματοφόρους Αρκεί ένας δυαδικός σηματοφόρος Αρχικοποίηση: ο σηματοφόρος λαμβάνει την τιμή 1 Κώδικας εισόδου: μείωση του σηματοφόρου Κώδικας εξόδου: αύξηση του σηματοφόρου 6 lalis@inf.uth.gr

Κρίσιμο τμήμα με σηματοφόρους sem s; Pi: /* entry code */ i /* exit code */ 7 lalis@inf.uth.gr

πριν αρχίσει η εκτέλεση s? {? συμβολική (όχι απαραίτητα αυτή μιας πραγματικής υλοποίησης) τιμή ουρά αναμονής 8 lalis@inf.uth.gr

αρχικοποίηση σηματοφόρου με 1 s 1 { 9 lalis@inf.uth.gr

running ready ready εναλλαγή σε P0 s 1 { 10 lalis@inf.uth.gr

ready running ready εναλλαγή σε P1 s 1 { 11 lalis@inf.uth.gr

running ready ready εναλλαγή σε P0, P0 καλεί down, ο σηματοφόρος μειώνεται κατά 1 s 0 { 12 lalis@inf.uth.gr

running ready ready P0 εισέρχεται στο ΚΤ s 0 { 13 lalis@inf.uth.gr

ready running ready εναλλαγή σε P1 s 0 { 14 lalis@inf.uth.gr

ready waiting ready P1 καλεί down, ο σηματοφόρος έχει τιμή 0, P1 μπλοκάρεται μέσα στην down s 0 {P1 15 lalis@inf.uth.gr

ready waiting running εναλλαγή σε P2 s 0 {P1 16 lalis@inf.uth.gr

ready waiting waiting P2 καλεί down, ο σηματοφόρος έχει τιμή 0, P2 μπλοκάρεται μέσα στην down s 0 {P1,P2 17 lalis@inf.uth.gr

running waiting waiting εναλλαγή σε P0 s 0 {P1,P2 18 lalis@inf.uth.gr

running ready waiting P0 εξέρχεται από το ΚΤ, καλεί up, και βγάζει το P1 από την ουρά s 0 {P1,P2 19 lalis@inf.uth.gr

running ready waiting P0 συνεχίζει s 0 {P2 20 lalis@inf.uth.gr

running ready waiting P0 συνεχίζει s 0 {P2 21 lalis@inf.uth.gr

waiting ready waiting P0 καλεί down, ο σηματοφόρος έχει τιμή 0, P0 μπλοκάρεται μέσα στην down s 0 {P2,P0 22 lalis@inf.uth.gr

waiting running waiting εναλλαγή σε P1 s 0 {P2,P0 23 lalis@inf.uth.gr

waiting running waiting P1 εισέρχεται στο ΚΤ s 0 {P2,P0 24 lalis@inf.uth.gr

waiting running ready P1 εξέρχεται από το ΚΤ, καλεί up, και βγάζει το P2 από την ουρά s 0 {P2,P0 25 lalis@inf.uth.gr

waiting running ready P1 συνεχίζει s 0 {P0 26 lalis@inf.uth.gr

waiting ready running εναλλαγή σε P2 s 0 {P0 27 lalis@inf.uth.gr

waiting ready running P2 εισέρχεται στο ΚΤ s 0 {P0 28 lalis@inf.uth.gr

waiting running ready εναλλαγή σε P1 s 0 {P0 29 lalis@inf.uth.gr

waiting running ready P1 συνεχίζει s 0 {P0 30 lalis@inf.uth.gr

waiting waiting ready P1 καλεί down, ο σηματοφόρος έχει τιμή 0, P1 μπλοκάρεται μέσα στην down s 0 {P0,P1 31 lalis@inf.uth.gr

waiting waiting running P2 συνεχίζει s 0 {P0,P1 32 lalis@inf.uth.gr

ready waiting running P2 εξέρχεται από το ΚΤ, καλεί up, και βγάζει το P0 από την ουρά s 0 {P0,P1 33 lalis@inf.uth.gr

ready waiting running P2 συνεχίζει s 0 {P1 34 lalis@inf.uth.gr

running waiting ready εναλλαγή σε P0 s 0 {P1 35 lalis@inf.uth.gr

running waiting ready P0 εισέρχεται στο ΚΤ s 0 {P1 36 lalis@inf.uth.gr

running ready ready P0 εξέρχεται από το ΚΤ, καλεί up, και βγάζει το P1 από την ουρά s 0 {P1 37 lalis@inf.uth.gr

running ready ready P0 συνεχίζει s 0 { 38 lalis@inf.uth.gr

ready running ready εναλλαγή σε P1 s 0 { 39 lalis@inf.uth.gr

ready running ready το P1 εισέρχεται στο ΚΤ s 0 { 40 lalis@inf.uth.gr

ready running ready P1 εξέρχεται από το ΚΤ, καλεί up, και αυξάνει την τιμή του s κατά 1 s 1 { 41 lalis@inf.uth.gr

ready running ready P1 συνεχίζει την εκτέλεση του s 1 { 42 lalis@inf.uth.gr

«Χαμένες» κλήσεις της up Ένας δυαδικός σηματοφόρος παίρνει μόνο τιμές 0,1 Όταν η τιμή είναι 1 (δεν υπάρχουν νήματα που έχουν μπλοκάρει στην down), τυχόν επιπλέον κλήσεις της up δεν έχουν κανένα απολύτως αποτέλεσμα Η κλήση της up «χάνεται» Μια υλοποίηση μπορεί να επιτρέπει τέτοιες χαμένες κλήσεις, χωρίς να επιστρέφεται κωδικός λάθους Κώδικας σε επίπεδο εφαρμογής που μπορεί να οδηγεί σε χαμένες κλήσεις της up θεωρείται άκομψος και συνήθως πρόκειται για προγραμματιστικό λάθος 43 lalis@inf.uth.gr

Παράδειγμα: ραντεβού Το P1 πρέπει να περιμένει στο σημείο Α του κώδικα του, μέχρι το P2 να φτάσει στο σημείο Β του δικού του κώδικα Αυτό μπορεί να χρειαστεί να γίνει πολλές φορές P1 Α P2 Β Πως μπορεί να υλοποιηθεί ο επιθυμητός συγχρονισμός με δυαδικούς σηματοφόρους; σημείο ραντεβού 44 lalis@inf.uth.gr

bsem s; init(s,0); /* A */ /* B */ Σε ποια περίπτωση αυτή η λύση δεν είναι σωστή; Πως μπορεί να διορθωθεί το πρόβλημα; 45 lalis@inf.uth.gr