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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

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

2 Παραγωγός-Καταναλωτής (με σηματοφόρους) 2 lalis@inf.uth.gr

3 Παραγωγός-καταναλωτής Νήματα που παράγουν / καταναλώνουν δεδομένα τα οποία τοποθετούν σε / παραλαμβάνουν από μια κοινή ενδιάμεση αποθήκη Η αποθήκη είναι ένας ΑΤΔ με λειτουργίες put: λειτουργεί πάντα (απεριόριστη χωρητικότητα) get: λειτουργεί μόνο αν η αποθήκη δεν είναι άδεια Επιθυμητός συγχρονισμός: ένας καταναλωτής πρέπει να μπλοκάρεται όταν (και όσο) η αποθήκη είναι άδεια, και να αφυπνίζεται με το που κάποιος παραγωγός τοποθετήσει δεδομένα στην αποθήκη 3 lalis@inf.uth.gr

4 λειτουργεί σωστά μόνο όταν η αποθήκη δεν είναι άδεια πρέπει να μπλοκάρει όσο η αποθήκη είναι άδεια 4 lalis@inf.uth.gr

5 Σκεπτικό Πρέπει να μετράμε τον αριθμό των δεδομένων που είναι διαθέσιμα στην αποθήκη ανά πάσα στιγμή Χρειαζόμαστε έναν «κατάλληλο» μετρητή προσθήκη δεδομένων: αύξηση μετρητή απομάκρυνση δεδομένων: μείωση μετρητή αναμονή καταναλωτή: όταν ο μετρητής είναι Ο μετρητής πρέπει να αυξομειώνεται σωστά υπό την ταυτόχρονη εκτέλεση των παραγωγών/καταναλωτών Αυτή η λειτουργικότητα αντιστοιχεί ακριβώς στην λειτουργικότητα ενός γενικού σηματοφόρου 5 lalis@inf.uth.gr

6 gsem avl; /* # δεδομένων στην αποθήκη */ init(avl,); παραγωγός: while (1) { /* produce d */ put(d); καταναλωτής: while (1) { down(avl); d=get(); up(avl); /* consume d */ 6 lalis@inf.uth.gr

7 Παρατήρηση Η λύση είναι σωστή ανεξάρτητα από τον αριθμό των νημάτων παραγωγού και καταναλωτή Αν οι λειτουργίες της αποθήκης put και get δεν είναι ασφαλείς υπό ταυτόχρονη εκτέλεση, τότε οι κλήσεις τους αποτελούν κρίσιμα τμήματα και πρέπει να προστατευτούν κατάλληλα Αυτό μπορεί να γίνει πολύ εύκολα μέσω ενός δυαδικού σηματοφόρου 7 lalis@inf.uth.gr

8 gsem avl; /* # δεδομένων στην αποθήκη */ bsem mtx; /* αμοιβαίος αποκλεισμός put,get */ init(avl,); init(mtx,1); παραγωγός: while (1) { /* produce d */ down(mtx); put(d); up(mtx); καταναλωτής: while (1) { down(avl); down(mtx); d=get(); up(mtx); up(avl); /* consume d */ 8 lalis@inf.uth.gr

9 Αποθήκη περιορισμένης χωρητικότητας Όταν η αποθήκη είναι γεμάτη δεν επιτρέπεται να κληθεί η put (αυτό θα οδηγούσε σε υπερχείλιση) Ο παραγωγός πρέπει (και αυτός) να μπλοκάρεται, (όταν η αποθήκη είναι γεμάτη) και να αφυπνίζεται όταν κάποιος καταναλωτής απομακρύνει δεδομένα Η σχέση αναμονής-αφύπνισης μεταξύ παραγωγών και καταναλωτών είναι πλέον συμμετρική Όπως μετράμε (ήδη) για τους καταναλωτές τον αριθμό των γεμάτων θέσεων της αποθήκης, έτσι πρέπει να μετράμε και για τους παραγωγούς τον αριθμό των κενών θέσεων της αποθήκης 9 lalis@inf.uth.gr

10 bsem mtx; /* αμοιβαίος αποκλεισμός */ gsem empty; /* # άδειων θέσεων αποθήκης */ gsem full ; /* # γεμάτων θέσεων αποθήκης */ init(mtx,1); init(full,); init(empty,n); παραγωγός: while (1) { /* produce d */ down(empty); down(mtx); put(d); up(mtx); up(full); καταναλωτής: while (1) { down(full); down(mtx); d=get(); up(mtx); up(empty); /* consume d */ 1 lalis@inf.uth.gr

11 Κοιμώμενος κουρέας Το κουρείο έχει ένα σαλόνι αναμονής, και ξεχωριστό δωμάτιο όπου ο κουρέας κουρεύει τους πελάτες Οι πελάτες μπαίνουν στο κουρείο από το σαλόνι, και βγαίνουν μέσα από το δωμάτιο κουρέματος Αν δεν υπάρχουν πελάτες, ο κουρέας κοιμάται Σαλόνι: αποθήκη (απεριόριστη χωρητικότητα) Κουρέας: ο (μοναδικός) καταναλωτής Πελάτες: τα δεδομένα προς κατανάλωση Λύση μόνο με δυαδικούς σηματοφόρους Ενδιαφέρει μόνο η αναμονή του κουρέα 11

12 έξοδος είσοδος δωμάτιο κουρέματος σαλόνι 12

13 1η προσέγγιση Ο κουρέας ελέγχει το σαλόνι, και αν υπάρχουν πελάτες, φωνάζει τον επόμενο και τον κουρεύει Αν θυμάται ότι αυτός ήταν ο τελευταίος πελάτης που είδε στο σαλόνι, κοιμάται στην καρέκλα του δωματίου αν θυμηθεί ότι όταν κούρευε τον ενόχλησε ένας πελάτης, ξυπνάει μόνος του Αν ένας πελάτης βρει άλλους πελάτες στο σαλόνι, ξέρει ότι ο κουρέας κουρεύει Αν βρει το σαλόνι άδειο, ελέγχει το δωμάτιο Αν ο κουρέας κοιμάται, τον ξυπνάει, αλλιώς ζητά συγγνώμη για την ενόχληση και γυρίζει στο σαλόνι 13

14 αφύπνιση/παρενόχληση κουρέα από έναν νέο πελάτη 14

15 int avl=; /* # πελατών στο σαλόνι */ bsem mtx; /* αμοιβαίος αποκλεισμός */ bsem sleep; /* αναμονή κουρέα */ init(sleep,); init(mtx,1); Customer: while (1) { down(mtx); // new customer arrives avl++; if (avl == 1) { up(sleep); up(mtx); πρώτος στο σαλόνι: ξύπνα/ενόχλησε τον κουρέα Barber: int n=; /* old avl value */ while (1) { if (n == ) { down(sleep); down(mtx); // pick next customer avl--; n = avl; up(mtx); // give haircut θυμάμαι ότι το σαλόνι ήταν άδειο: επιχειρώ να κοιμηθώ 15 lalis@inf.uth.gr

16 Παρατήρηση Έστω ότι οι πελάτες φτάνουν με τον ίδιο ρυθμό με τον οποίο τους κουρεύει ο κουρέας Ο εκάστοτε επόμενος πελάτης θα βρίσκει το σαλόνι πάντα άδειο, και θα ενοχλεί τον κουρέα χωρίς λόγο (αφού δεν κοιμάται) Γίνονται «άσκοπες» κλήσεις up/down στον sleep 16

17 Ιδανικά Ο πελάτης ενοχλεί τον κουρέα μόνο αν αυτός όντως κοιμάται (όχι όταν κουρεύει) Η up(sleep) πρέπει να καλείται μόνο αν ο κουρέας έχει ήδη (ή πρόκειται να) καλέσει down(sleep) Ο κουρέας πρέπει να σηματοδοτεί (με ρητό τρόπο) στον πελάτη ότι πρέπει να τον ξυπνήσει 17

18 2η προσέγγιση Ο κουρέας ελέγχει το σαλόνι, και αν υπάρχουν πελάτες, φωνάζει τον επόμενο και τον κουρεύει Αν δεν υπάρχουν πελάτες στο σαλόνι, κοιμάται στον καναπέ του σαλονιού (σήμα προς τον επόμενο πελάτη ότι πρέπει να τον ξυπνήσει) Αν ένας πελάτης βρει άλλους πελάτες στο σαλόνι, ξέρει ότι ο κουρέας κουρεύει Αν βρει το σαλόνι άδειο, πάλι ξέρει ότι ο κουρέας κουρεύει (οπότε δεν επιχειρεί να τον ξυπνήσει) Αν βρει τον κουρέα στον καναπέ, τον ξυπνάει 18

19 αφύπνιση κουρέα από έναν νέο πελάτη 19

20 int avl=; /* # πελατών στο σαλόνι, σήμα κουρέα */ bsem mtx; /* αμοιβαίος αποκλεισμός */ bsem sleep; /* αναμονή κουρέα */ init(sleep,); init(mtx,1); Customer: while (1) { down(mtx); // new customer arrives avl++; if (avl == ) { up(sleep); up(mtx); ο κουρέας σίγουρα κοιμάται: ξύπνα τον δεν υπάρχει πελάτης στο σαλόνι: πάω για ύπνο, αφήνοντας σήμα αφύπνισης στον επόμενο πελάτη Barber: while (1) { down(mtx); avl--; if (avl == -1) { up(mtx); down(sleep); down(mtx); // pick next customer up(mtx); // give haircut 2 lalis@inf.uth.gr

21 int avl=; /* # πελατών στο σαλόνι */ bsem mtx; /* αμοιβαίος αποκλεισμός */ bsem sleep; /* αναμονή κουρέα */ init(sleep,); init(mtx,1); Customer: while (1) { /* produce d */ down(mtx); // new customer arrives avl++; if (avl == 1) { up(sleep); up(mtx); Γιατί αυτή η λύση δεν είναι σωστή; Barber: while (1) { down(mtx); if (avl == ) { up(mtx); down(sleep); down(mtx); avl--; // pick next customer up(mtx); // give haircut 21 lalis@inf.uth.gr

22 int avl=; /* # πελατών στο σαλόνι, σήμα κουρέα */ bsem mtx; /* αμοιβαίος αποκλεισμός */ bsem sleep; /* αναμονή κουρέα */ init(sleep,); init(mtx,1); Customer: while { down(mtx); // new customer arrives avl++; if (avl <= ) { up(sleep); up(mtx); Είναι η λύση σωστή για πολλούς παραγωγούς; Είναι η λύση σωστή για πολλούς καταναλωτές; Barber: while (1) { down(mtx); avl--; if (avl < ) { up(mtx); down(sleep); down(mtx); // pick next customer up(mtx); // give haircut 22 lalis@inf.uth.gr

23 Αναγνώστες-Εγγραφείς (με σηματοφόρους) 23

24 Αναγνώστες και εγγραφείς To ΚΤ προσπελάζεται είτε για την ανάγνωση είτε για την αλλαγή/γράψιμο κοινών δεδομένων Ανάγνωση Ανάγνωση: NAI Ανάγνωση Γράψιμο: OXI Γράψιμο Γράψιμο: OXI Αναγνώστης: νήμα που θέλει να διαβάσει Εγγραφέας: νήμα που θέλει να γράψει Απαιτείται διαφορετικός κώδικας εισόδου στο ΚΤ και εξόδου από το ΚΤ για αναγνώστες και εγγραφείς 24

25 25

26 Βασική ιδέα Η περίπτωση των εγγραφέων αντιστοιχεί ακριβώς στο «κλασικό» πρόβλημα του ΚΤ Χρησιμοποιούμε τον δυαδικό σηματοφόρο wmtx Όλοι οι αναγνώστες μαζί μπορεί να θεωρηθούν ως ένας ειδικός «σύνθετος» εγγραφέας Ο πρώτος αναγνώστης που επιχειρεί να μπει στο ΚΤ σηματοδοτεί την άφιξη του ειδικού εγγραφέα Ο τελευταίος αναγνώστης που εξέρχεται από το ΚΤ σηματοδοτεί την αναχώρηση του ειδικού εγγραφέα Χρησιμοποιούμε τον μετρητή rds για να μετράμε τους αναγνώστες, και τον δυαδικό σηματοφόρο rmtx για τον αμοιβαίο αποκλεισμό στον μετρητή rds 26

27 int rds=; /* # αναγνωστών στο ΚΤ */ bsem rmtx; /* αα αναγνωστών */ bsem wmtx; /* αα εγγραφέων/αναγνωστών */ init(rmtx,1); init(wmtx,1); Writer: while (1) { down(wmtx); /* write */ up(wmtx); Reader: while (1) { down(rmtx); if (rds == ) { down(wmtx); rds++; up(rmtx); /* read */ down(rmtx); rds--; if (rds == ) { up(wmtx); up(rmtx); 27 lalis@inf.uth.gr

28 αρχική κατάσταση wmtx 1 ΚΤ rmtx 1 rds 28 lalis@inf.uth.gr

29 άφιξη αναγνώστη R1 wmtx 1 ΚΤ R1 rmtx 1 rds 29 lalis@inf.uth.gr

30 R1 εισέρχεται στο ΚΤ wmtx ΚΤ rmtx 1 R1 rds 1 3 lalis@inf.uth.gr

31 άφιξη εγγραφέα W1 wmtx ΚΤ W1 rmtx 1 R1 rds 1 31 lalis@inf.uth.gr

32 W1 περιμένει wmtx rmtx 1 W1 ΚΤ R1 rds 1 32 lalis@inf.uth.gr

33 άφιξη αναγνώστη R2 R2 wmtx rmtx 1 W1 ΚΤ R1 rds 1 33 lalis@inf.uth.gr

34 R2 εισέρχεται στο ΚΤ wmtx rmtx 1 W1 R2 ΚΤ R1 rds 2 34 lalis@inf.uth.gr

35 έξοδος αναγνώστη R2 από το ΚΤ wmtx rmtx 1 W1 ΚΤ R1 rds 1 R2 35 lalis@inf.uth.gr

36 έξοδος αναγνώστη R1 από το ΚΤ, και αφύπνιση του εγγραφέα W1 και... wmtx W1 ΚΤ rmtx 1 rds R1 36 lalis@inf.uth.gr

37 ... είσοδος του εγγραφέα W1 στο ΚΤ wmtx W1 ΚΤ rmtx 1 rds 37 lalis@inf.uth.gr

38 ... είσοδος του εγγραφέα W1 στο ΚΤ wmtx ΚΤ rmtx 1 W1 rds 38 lalis@inf.uth.gr

39 άφιξη αναγνώστη R3 wmtx ΚΤ R3 rmtx 1 W1 rds 39 lalis@inf.uth.gr

40 R3 περιμένει wmtx R3 ΚΤ rmtx W1 rds 1 4 lalis@inf.uth.gr

41 άφιξη αναγνώστη R4 wmtx R3 ΚΤ R4 rmtx W1 rds 1 41 lalis@inf.uth.gr

42 R4 περιμένει wmtx R3 ΚΤ rmtx W1 R4 rds 1 42 lalis@inf.uth.gr

43 άφιξη αναγνώστη R5 wmtx R3 ΚΤ R5 rmtx W1 R4 rds 1 43 lalis@inf.uth.gr

44 R5 περιμένει wmtx R3 ΚΤ rmtx W1 R5 R4 rds 1 44 lalis@inf.uth.gr

45 άφιξη εγγραφέα W2 wmtx R3 ΚΤ W2 rmtx W1 R5 R4 rds 1 45 lalis@inf.uth.gr

46 W2 περιμένει wmtx W2 R3 ΚΤ rmtx W1 R5 R4 rds 1 46 lalis@inf.uth.gr

47 έξοδος εγγραφέα W1, και αφύπνιση του αναγνώστη R3, και... wmtx W2 R3 ΚΤ rmtx R5 R4 rds 1 W1 47 lalis@inf.uth.gr

48 ... αφύπνιση του αναγνώστη R4, είσοδος αναγνώστη R3 στο ΚΤ, και... wmtx W2 R3 ΚΤ rmtx R5 R4 rds 1 48 lalis@inf.uth.gr

49 ... αφύπνιση του αναγνώστη R5, είσοδος αναγνώστη R4 στο ΚΤ, και... wmtx W2 ΚΤ rmtx R5 R3 R4 rds 2 49 lalis@inf.uth.gr

50 ... είσοδος αναγνώστη R5 στο ΚΤ wmtx W2 ΚΤ rmtx 1 R4 R3 R5 rds 3 5 lalis@inf.uth.gr

51 άφιξη αναγνώστη R6 wmtx W2 ΚΤ R6 rmtx 1 R4 R3 R5 rds 3 51 lalis@inf.uth.gr

52 ... που εισέρχεται στο ΚΤ wmtx W2 ΚΤ rmtx 1 R6 R4 R5 R3 rds 4 52 lalis@inf.uth.gr

53 ... που εισέρχεται στο ΚΤ wmtx W2 ΚΤ rmtx 1 R6 R4 R5 R3 rds 4 53 lalis@inf.uth.gr

54 Προτεραιότητες Οι αναγνώστες έχουν προτεραιότητα εισόδου στο ΚΤ σε σχέση με τους εγγραφείς Όσο υπάρχει τουλάχιστον ένας αναγνώστης στο ΚΤ, κάθε νέος αναγνώστης εισέρχεται άμεσα στο ΚΤ, προσπερνώντας εγγραφείς που τυχόν περιμένουν (πιθανώς εδώ και πολλή ώρα) να μπουν στο ΚΤ Αντίθετα, όταν εξέρχεται ένας εγγραφέας από το ΚΤ, η σειρά πάει στο επόμενο νήμα που περιμένει (είτε εγγραφέας είτε αναγνώστης) Περίπτωση λιμοκτονίας για τους εγγραφείς Δεν υπάρχει περίπτωση λιμοκτονίας για αναγνώστες 54

55 Μια πιο δίκαιη λύση Θέλουμε ένας νέος αναγνώστης να περιμένει αν υπάρχουν εγγραφείς που περιμένουν να εισέλθουν στο ΚΤ (αντί να τους προσπεράσει) Αριθμός αναγνωστών και εγγραφέων μέσα στο ΚΤ: ακέραιοι rds και wrs Ξεχωριστές ουρές αναμονής για αναγνώστες και εγγραφείς: δυαδικοί(;) σηματοφόροι rq και wq Αριθμός αναγνωστών και εγγραφέων που περιμένουν στις ουρές αναμονής: ακέραιοι rw και ww Προστασία των μετρητών ανάμεσα σε αναγνώστες και εγγραφείς: δυαδικός σηματοφόρος mtx 55

56 bsem mtx; /* αα εγγραφέων/αναγνωστών */ bsem wq; gsem rq; /* ουρά αναμονής εγγραφέων/αναγνωστών */ int ww=,rw=; /* # εγγραφέων/αναγνωστών σε αναμονή */ int wrs=,rds=; /* # εγγραφέων/αναγνωστών στο ΚΤ */ init(mtx,1); init(rq,); init(wq,); Writer: down(mtx); if (rds+wrs > ) { ww++; up(mtx); down(wq); else { wrs++; up(mtx); /* write */ down(mtx); wrs--; if (rw > ) { do{ rw--; rds++; up(rq); while (rw > ); else if (ww > ) { ww--; wrs++; up(wq); up(mtx); Reader: down(mtx); if (wrs+ww > ) { rw++; up(mtx); down(rq); else { rds++; up(mtx); /* read */ down(mtx); rds--; if (rds == ) && (ww > ) { ww--; wrs++; up(wq); up(mtx); γιατί ο σηματοφόρος είναι γενικός και όχι δυαδικός; 56 lalis@inf.uth.gr

57 bsem mtx; /* αα εγγραφέων/αναγνωστών */ bsem wq,rq; /* ουρά αναμονής εγγραφέων/αναγνωστών */ int ww=,rw=; /* # εγγραφέων/αναγνωστών σε αναμονή */ int wrs=,rds=; /* # εγγραφέων/αναγνωστών στο ΚΤ */ init(mtx,1); init(rq,); init(wq,); Writer: Reader: down(mtx); if (rds+wrs > ) { ww++; up(mtx); down(wq); else { wrs++; up(mtx); /* write */ down(mtx); wrs--; if (rw > ) { rw--; rds++; up(rq); else if (ww > ) { ww--; wrs++; up(wq); up(mtx); down(mtx); if (wrs+ww > ) { rw++; up(mtx); down(rq); if (rw > ) { rw--; rds++; up(rq); else { rds++; up(mtx); /* read */ down(mtx); rds--; if (rds == ) && (ww > ) { ww--; wrs++; up(wq); up(mtx); είναι η λύση σωστή; 57 lalis@inf.uth.gr

58 bsem mtx; /* αα εγγραφέων/αναγνωστών */ bsem wq,rq; /* ουρά αναμονής εγγραφέων/αναγνωστών */ int ww=,rw=; /* # εγγραφέων/αναγνωστών σε αναμονή */ int wrs=,rds=; /* # εγγραφέων/αναγνωστών στο ΚΤ */ init(mtx,1); init(rq,); init(wq,); Writer: down(mtx); if (rds+wrs > ) { ww++; up(mtx); down(wq); else { wrs++; up(mtx); /* write */ down(mtx); wrs--; if (rw > ) { rw--; rds++; up(rq); else { if (ww > ) { ww--; wrs++; up(wq); up(mtx); Reader: down(mtx); if (wrs+ww > ) { rw++; up(mtx); down(rq); if (rw > ) { rw--; rds++; up(rq); else { up(mtx); else { rds++; up(mtx); /* read */ down(mtx); rds--; if (rds == ) && (ww > ) { ww--; wrs++; up(wq); up(mtx); 58 lalis@inf.uth.gr

59 Συνδαιτυμόνες Φιλόσοφοι (με σηματοφόρους) 59

60 Οι συνδαιτυμόνες φιλόσοφοι Η ζωή ενός φιλόσοφου: σκέφτομαι, πεινάω, τρώω Υπάρχουν άπλετα μακαρόνια πάνω σε ένα κοινό τραπέζι, όπου κάθε φιλόσοφος έχει την θέση του Για να μπορέσει να φάει ένας φιλόσοφος, πρέπει να πιάσει τα δύο πιρούνια που είναι δεξιά και αριστερά από την θέση του 6 lalis@inf.uth.gr

61 think (hard) grab forks eat (a lot) Pi 61

62 Προσέγγιση Όταν ο i-οστός φιλόσοφος πεινάσει, επιχειρεί να πιάσει πρώτα το πιρούνι στα δεξιά του RIGHT(i), και μετά το πιρούνι στα αριστερά του LEFT(i) Αφού φάει, αφήνει τα δύο πιρούνια πάνω στο τραπέζι Κάθε πιρούνι αποτελεί ένα ξεχωριστό ΚΤ ανάμεσα στους δύο φιλόσοφους που κάθονται σε γειτονικές θέσεις στο τραπέζι Κάθε πιρούνι: ένας δυαδικός σηματοφόρος fork[i] Φιλόσοφος επιχειρεί να πιάσει το πιρούνι: down Φιλόσοφος αφήνει κάτω ένα πιρούνι: up 62

63 bsem fork[n]; for (i=; i<n; i++) { init(fork[i],1); Philosopher i: while (1) { /* think */ down(fork[right(i)]); down(fork[left(i)]); /* eat */ up(fork[right(i)]); up(fork[left(i)]); 63 lalis@inf.uth.gr

64 Η λύση δεν είναι σωστή Υπάρχει πιθανότητα αδιεξόδου Αν όλοι οι φιλόσοφοι πεινάσουν και καθίσουν στο τραπέζι την ίδια στιγμή όλοι θα πιάσουν το ξυλάκι στα δεξιά τους στη συνέχεια, κανείς δεν θα βρει ελεύθερο το ξυλάκι στα αριστερά του Λύση Α δεν επιτρέπουμε σε περισσότερους από Ν-1 φιλόσοφους να έχουν πρόσβαση στο τραπέζι Λύση Β υποχρεώνουμε έναν φιλόσοφο (π.χ. Ν-1) να πιάνει πρώτα το αριστερό και μετά το δεξί ξυλάκι (σπάσιμο συμμετρίας) μια άλλη οπτική γωνία: οι φιλόσοφοι πρέπει να επιχειρούν να πιάνουν τα ξυλάκια με αύξουσα αριθμητική σειρά 64

65 bsem fork[n]; for (i=; i<n; i++) { init(fork[i],1); gsem table; init(table,n-1); Philosopher i: while (1) { /* think */ down(table); down(fork[right(i)]); down(fork[left(i)]); /* eat */ up(fork[right(i)]); up(fork[left(i)]); up(table); 65 lalis@inf.uth.gr

66 bsem fork[n]; for (i=; i<n; i++) { init(fork[i],1); Philosopher i: while (1) { /* think */ if (i!= N-1) { down(fork[right(i)]); down(fork[left(i)]); else { down(fork[left(i)]); down(fork[right(i)]); /* eat */ up(fork[right(i)]); up(fork[left(i)]); 66 lalis@inf.uth.gr

67 Μια διαφορετική προσέγγιση Ρητή πληροφορία κατάστασης για κάθε φιλόσοφο THINKING: δεν ενδιαφέρεται να φάει HUNGRY: περιμένει να φάει EATING: τρώει Χρησιμοποιείται ώστε ένας φιλόσοφος να αποφασίσει (1) αν μπορεί να φάει, και (2) αφού φάει, αν πρέπει να ξυπνήσει κάποιον από τους γείτονες του Κάθε φιλόσοφος έχει την δική του ουρά αναμονής: δυαδικός σηματοφόρος wait[i] Οι κοινές μεταβλητές κατάστασης προστατεύονται μέσω ενός ξεχωριστού δυαδικού σηματοφόρου mtx 67

68 bsem mtx,wait[n]; init(mtx,1); for (i=; i<n; i++) { init(wait[i],); int state[n] = {THINKING,,THINKING; while (1) { /* thinking */ down(mtx); state[i] = HUNGRY; test(i); /* see if I can eat */ up(mtx); down(wait[i]); /* wait, if I cannot eat */ /* eating */ down(mtx); state = THINKING; test(right(i)); /* allow for right neighbor to eat */ test(left(i)); /* allow for left neighbor to eat */ up(mtx); είναι η λύση σωστή; void test(int i) { if ( (state[i]==hungry) && (state[left(i)]!=eating) && (state[right(i)]!=eating)) { state[i] = EATING; up(wait[i]); 68 lalis@inf.uth.gr

69 Γενική μοντελοποίηση αδιεξόδου Ν διεργασίες, Μ πόροι Για να λάβει μια διεργασία ένα πόρο R, αυτός δεν πρέπει ήδη να χρησιμοποιείται από άλλη διεργασία Όταν μια διεργασία έναν πόρο, περιμένει μέχρι να λάβει άδεια να τον χρησιμοποιήσει δεν μπορεί να «οπισθοδρομήσει» ή να απελευθερώσει τους πόρους που ίσως ήδη κρατά η ίδια Αδιέξοδο: κατάσταση «κυκλικής» αναμονής όπου κάθε διεργασία περιμένει να ελευθερωθεί ένας πόρος που έχει δεσμεύσει μια άλλη διεργασία, που με την σειρά της περιμένει... Μια ειδική περίπτωση ομαδικής λιμοκτονίας 69

70 used by P1 waiting for Resource D Resource Α P4 P2 Resource C Resource Β P3 7 lalis@inf.uth.gr

71 Αντιμετώπιση αδιεξόδου Αποφυγή αδιεξόδου Είμαστε «συντηρητικοί», φροντίζουμε να μην υπάρχει περίπτωση δημιουργίας αδιεξόδου Σχεδιάζουμε την πρόσβαση στους κοινούς πόρους με κατάλληλο τρόπο, π.χ. δέσμευση με αύξουσα σειρά Εντοπισμός & επίλυση αδιεξόδου Είμαστε «αισιόδοξοι», αφήνουμε τις διεργασίες να επιχειρούν δέσμευση των πόρων κατά βούληση, ελπίζοντας ότι δεν θα δημιουργηθεί αδιέξοδο Υλοποιούμε μηχανισμό εντοπισμού αδιεξόδου, και τερματισμού / οπισθοδρόμησης διεργασιών (όμως αυτό δεν είναι πάντα εφικτό / πρακτικό) 71 lalis@inf.uth.gr

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

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1 Κρίσιμη Περιοχή Υπό Συνθήκη (onditional ritical Regions) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Πέρα από ελεγκτές Ο ελεγκτής είναι χρήσιμο εργαλείο συγχρονισμού παρέχει στον προγραμματιστή εγγυημένο

Διαβάστε περισσότερα

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

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Υλοποίηση σηματοφόρων Οι σηματοφόροι είναι ένας ΑΤΔ με συγκεκριμένες λειτουργίες πρόσβασης Μπορεί να υλοποιηθούν με «φυσικό»

Διαβάστε περισσότερα

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

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

Διαβάστε περισσότερα

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

Υλοποίηση Σηματοφόρων Υλοποίηση Σηματοφόρων 1 lalis@inf.uth.gr Υλοποίηση σε επίπεδο συστήματος Εσωτερική κατάσταση: Ένας ακέραιος για την αποθήκευση της τιμής του σηματοφόρου Μια ουρά αναμονής που τοποθετείται ένα νήμα όταν

Διαβάστε περισσότερα

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

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Σηματοφόροι Οι σηματοφόροι είναι ένας ΑΤΔ με συγκεκριμένες λειτουργίες πρόσβασης Μπορεί να υλοποιηθούν εύκολα με τον

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1 Ελεγκτές/Παρακολουθητές (Monitors) 1 lalis@inf.uth.gr Ελεγκτές Αμοιβαίος αποκλεισμός στο πλαίσιο ενός τμήματος λογισμικού που προσπελάζεται με δομημένο τρόπο, μέσω προκαθορισμένης διασύνδεσης (API) Ο συγχρονισμός

Διαβάστε περισσότερα

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

2.4 Κλασσικά Προβλήματα IPC 2.4 Κλασσικά Προβλήματα IPC 1 Οι φιλόσοφοι που γευματίζουν - Dining Philosophers Μια πρώτη λύση για Ν φιλοσόφους: philosopher (i) while (1) { think; take_fork(i);/* πάρε αριστερό ξυλάκι */ take_fork(i+1

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει

Διαβάστε περισσότερα

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

Συγχρονισμός & σηματοφόροι. Προγραμματισμός II 1 Συγχρονισμός & σηματοφόροι Προγραμματισμός II 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Οι διεργασίες εκτελούνται ταυτόχρονα μεταξύ τους Ο προγραμματιστής δεν ελέγχει την εναλλαγή Τι γίνεται αν δύο ή περισσότερες

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (ΗΥ222) Λειτουργικά Συστήματα (ΗΥ222) Ταυτοχρονισμός, Συγχρονισμός Πολλαπλές Διεργασίες/Νήματα σε 1 Κοινωνία: Προβλήματα; «Κοινωνικές Γιάννης διεργασίες/νήματα»: Διαβάζουν/γράφουν στον ίδιο χώρο. Αποτέλεσμα; Πιθανότατα

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 5 «Αμοιβαίος Αποκλεισμός» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αμοιβαίος Αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διεργασίες (Processes) Διεργασία (process) ή καθήκον (task) Διεργασίες (Processes) στοιχειώδης οντότητα/δραστηριότητα υπολογισμού (processing entity/activity) εκτέλεση ενός προγράμματος ένα (κύριο) νήμα (thread)/ρεύμα ελέγχου/εκτέλεσης

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

6. Αδιέξοδο. 1. Ορισμοί είδη πόρων. 3. Συνθήκες αδιεξόδου. 1. Πρόληψη 2. Αποφυγή 3. Ανίχνευση 5. Το πρόβλημα των συνδαιτημόνων φιλοσόφων

6. Αδιέξοδο. 1. Ορισμοί είδη πόρων. 3. Συνθήκες αδιεξόδου. 1. Πρόληψη 2. Αποφυγή 3. Ανίχνευση 5. Το πρόβλημα των συνδαιτημόνων φιλοσόφων 6. Αδιέξοδο 1. Ορισμοί είδη πόρων 2. Γράφοι εκχώρησης πόρων 3. Συνθήκες αδιεξόδου 4. Προσεγγίσεις αδιεξόδου 1. Πρόληψη 2. Αποφυγή 3. Ανίχνευση 5. Το πρόβλημα των συνδαιτημόνων φιλοσόφων ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διαβάστε περισσότερα

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Το Πρόβλημα του Αδιεξόδου Ένα σύνολο από διεργασίες σε αναμονή, όπου η κάθε μια κατέχει έναν αριθμό από πόρους και περιμένει να αποκτήσει και έναν

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

Διαβάστε περισσότερα

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα

Διαβάστε περισσότερα

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation) Εισαγωγή Μοντέλο συστήματος Χαρακτηρισμός και ορισμός κατάστασης αδιεξόδου Μέθοδοι χειρισμού αδιεξόδων Αποτροπή αδιεξόδου (Deadlock Prevention) Αποφυγή

Διαβάστε περισσότερα

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

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1 Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Tuple space Ένας κοινός χώρος αποθήκευσης δεδομένων / μηνυμάτων, με μορφή πλειάδων (tuples) Παρέχονται ειδικές λειτουργίες για

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με κοινή μνήμη 1 lalis@inf.uth.gr Το πρόβλημα Έστω ότι δύο η περισσότερα νήματα επιθυμούν να προσπελάσουν έναν κοινό πόρο, που όμως δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα Η χρήση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 664: Ανάλυση και Επαλήθευση Συστημάτων ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ ΗΜΕΡΟΜΗΝΙΑ : Πέμπτη, 21 Μαρτίου 2013 ΔΙΑΡΚΕΙΑ : 14:00 16:00 ΔΙΔΑΣΚΟΥΣΑ : Άννα Φιλίππου Ονοματεπώνυμο:

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Λειτουργικά Συστήματα Ενότητα 4α: Σημαφόροι, Πρόβλημα Συνδαιτυμόνων Φιλοσόφων, Αδιέξοδα Αθηνά Βακάλη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Εργαστήριο 14. Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Εργαστήριο 14 Συγχρονισμός Νημάτων (χρήση pthread_mutex_t, pthread_cond_t) Να γράψετε πρόγραμμα που να δημιουργεί 1 νήμα Έτσι στο πρόγραμμα σας θα υπάρχουν 2 νήματα (το ένα νήμα είναι το αρχικό νήμα που

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):

Διαβάστε περισσότερα

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός Κωνσταντίνος Μαργαρίτης Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας kmarg@uom.gr http://eos.uom.gr/~kmarg Αρετή Καπτάν Υποψήφια

Διαβάστε περισσότερα

ΑΔΙΕΞΟΔΑ (Deadlocks) Παράδειγμα 1 Θανάσιμο αγκάλιασμα (deadly embrace)

ΑΔΙΕΞΟΔΑ (Deadlocks) Παράδειγμα 1 Θανάσιμο αγκάλιασμα (deadly embrace) Παράδειγμα 1 Ένα σύστημα με έναν εκτυπωτή και ένα σαρωτή εγγράφων Δύο διεργασίες Ρ1 και Ρ2 Η Ρ1 δεσμεύει τον εκτυπωτή Η Ρ2 δεσμεύει το σαρωτή Η Ρ1 ζητά το σαρωτή και εμποδίζεται Η Ρ2 ζητά τον εκτυπωτή

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 4: Διεργασίες ΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

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

Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1 Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Σύγχρονα κανάλια επικοινωνίας Μέρος του Communicating Sequential Processes (CSP) που

Διαβάστε περισσότερα

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

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1 Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Tuple space Ένας κοινός χώρος αποθήκευσης δεδομένων / μηνυμάτων, με μορφή πλειάδων (tuples) Παρέχονται ειδικές λειτουργίες για

Διαβάστε περισσότερα

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

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων ΙΙΙ 1 lalis@inf.uth.gr Ιδιότητες προγραμμάτων Ιδιότητα ασφάλειας (safety): ποτέ δεν θα φτάσουμε σε μια κατάσταση που είναι

Διαβάστε περισσότερα

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 5 : Αμοιβαίος Αποκλεισμός Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών

Διαβάστε περισσότερα

Γιατί υϖάρχει τέτοια καθολική κατάσταση;

Γιατί υϖάρχει τέτοια καθολική κατάσταση; ΥΛΟΠΟΙΗΣΗ ΚΑΤΑΧΩΡΗΤΩΝ ΑΝΑΓΝΩΣΗΣ/ΕΓΓΡΑΦΗΣ Καταχωρητές που µοιάζουν πιο πολύπλοκοι µπορούν να υλοποιηθούν από απλούστερους καταχωρητές. Multi-valued from Binary Βασικό Αντικείµενο: δυαδικός καταχωρητής ο

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 6 «Αδιέξοδο» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Αδιέξοδο 1. Ορισμοί είδη πόρων 2. Γράφοι εκχώρησης πόρων 3. Συνθήκες αδιεξόδου 4. Προσεγγίσεις αδιεξόδου

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων ΙΙΙ 1 lalis@inf.uth.gr Ιδιότητες προγραμμάτων Ιδιότητα ασφάλειας (safety properties): δεν θα φτάσουμε ποτέ σε μια ανεπιθύμητη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στα Λειτουργικά Συστήματα Εισαγωγή στα Λειτουργικά Συστήματα Ενότητα 5: Διεργασίες ΙΙΙ Γεώργιος Φ. Φραγκούλης Τμήμα Ηλεκτρολόγων Μηχανικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

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

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Συγχρονισμός (συνέχεια) Μεταβλητές υπό συνθήκη Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Συγχρονισμός μεταξύ νημάτων

Διαβάστε περισσότερα

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας (Priority

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός Αμοιβαίος αποκλεισμός 1. Εισαγωγή 2. Κρίσιμα τμήματα (Critical Sections) 3. Υλοποίηση του αμοιβαίου αποκλεισμού I. Προσεγγίσεις λογισμικού II. Υποστήριξη εκ μέρους του υλικού III. Σηματοφορείς 4. Κλασσικά

Διαβάστε περισσότερα

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

Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εργαστήριο ΔΙΕΡΓΑΣΙΕΣ - ΔΙΑΧΕΙΡΙΣΗ Εισαγωγή Σκοπός τόσο αυτού του εργαστηρίου, όσο και των εργαστηρίων που ακολουθούν, είναι να γνωρίσουμε τους τρόπους δημιουργίας και διαχείρισης των διεργασιών (processes)

Διαβάστε περισσότερα

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1

Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 Μη ανασταλτική/πολυπλεξία Ε/Ε (non-blocking/multiplexed I/O) Προγραμματισμός II 1 lalis@inf.uth.gr Μπλοκάρισμα διεργασίας Μια διεργασία μπλοκάρει όταν καλεί λειτουργίες συστήματος που δεν μπορεί να ολοκληρωθούν

Διαβάστε περισσότερα

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες Interprocess Communication and Concurrent Processes Περίληψη Σύνδροµος Προγραµµατισµός Συνθήκη συναγωνισµού Συγχρονισµός διεργασιών Κρίσιµες περιοχές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1

Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 Κλείδωμα αρχείων (file locking) Προγραμματισμός II 1 lalis@inf.uth.gr Κλείδωμα αρχείων Οι διεργασίες που προσπελάζουν ένα αρχείο μέσω ξεχωριστών περιγραφέων, μπορούν να γράψουν / διαβάσουν τα περιεχόμενα

Διαβάστε περισσότερα

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

Διαβάστε περισσότερα

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται ως

Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται ως Αµοιβαίος Αϖοκλεισµός Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Ασύγχρονο Σύστηµα ιαµοιραζόµενης Μνήµης Το σύστηµα περιέχει n διεργασίες p 0,, p n-1 και m καταχωρητές R 0,, R m-1. Κάθε διεργασία µοντελοποιείται

Διαβάστε περισσότερα

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

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1 Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο Κατανεμημένα Συστήματα lalis@inf.uth.gr Μοντέλο δικτύου* Το δίκτυο δέχεται και επιστρέφει πακέτα κάθε πακέτο μεταφέρει έναν περιορισμένο αριθμό

Διαβάστε περισσότερα

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

Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1 Σύγχρονη επικοινωνία με ανταλλαγή μηνυμάτων (CSP message passing model) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Σύγχρονα κανάλια επικοινωνίας Μέρος του Communicating Sequential Processes (CSP) που

Διαβάστε περισσότερα

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

Νήµατα. Πολύ σηµαντικό Νήµατα Πολύ σηµαντικό 1 Νήµατα (συν.) Σηµαντικό 2 Νήµατα vs ιεργασίες Νήµατα ιεργασίες Χώρος εδοµένων Περιγραφητές Αρχείων fork exit exec Σήµατα Κοινός. Ότι αλλάζει το 1 νήµα το βλέπουν/ αλλάζουν και τα

Διαβάστε περισσότερα

Εγγυημένη ποιότητα υπηρεσίας

Εγγυημένη ποιότητα υπηρεσίας Εγγυημένη ποιότητα υπηρεσίας Απαιτήσεις ποιότητας υπηρεσίας Μηχανισμοί κατηγοριοποίησης Χρονοπρογραμματισμός Μηχανισμοί αστυνόμευσης Ενοποιημένες υπηρεσίες Διαφοροποιημένες υπηρεσίες Τεχνολογία Πολυμέσων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

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

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει

Διαβάστε περισσότερα

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους

Διαβάστε περισσότερα

Αδιέξοδα (Deadlocks)

Αδιέξοδα (Deadlocks) Αδιέξοδα (Deadlocks) Περίληψη Αδιέξοδα (deadlocks) Τύποι πόρων (preemptable non preemptable) Μοντελοποίηση αδιεξόδων Στρατηγικές Στρουθοκαµηλισµός (ostrich algorithm) Ανίχνευση και αποκατάσταση (detection

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Γραμμικές Δομές Δεδομένων Γραμμικές Δομές Δεδομένων Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή μόνο Στοίβα (stack)

Διαβάστε περισσότερα

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Υπολογιστικό Σύστημα Λειτουργικό Σύστημα Αποτελεί τη διασύνδεση μεταξύ του υλικού ενός υπολογιστή και του χρήστη (προγραμμάτων ή ανθρώπων). Είναι ένα πρόγραμμα (ή ένα σύνολο προγραμμάτων)

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 7 : Αδιέξοδο 2/2 Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

Διαβάστε περισσότερα

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation.

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation. Γραμμικές Δομές Δεδομένων Επισκόπηση Μαθήματος Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή

Διαβάστε περισσότερα

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

Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1 Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1 lalis@inf.uth.gr Μοντέλο δικτύου/επικοινωνίας Αξιοπιστία (δεν χάνονται μηνύματα) Άγνωστη ταχύτητα μετάδοσης

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange,

Διαβάστε περισσότερα

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1 Αµοιβαίοςαποκλεισµός Εισαγωγή Συγκεντρωτική προσέγγιση Κατανεµηµένη προσέγγιση Αλγόριθµος Lamport Αλγόριθµος Ricart-Agrawala Προσέγγιση µεταβίβασης σκυτάλης Αλγόριθµος LeLann Αλγόριθµος Raymond Αλγόριθµος

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 7: Διαγράμματα Καταστάσεων

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 7: Διαγράμματα Καταστάσεων Πληροφοριακά Συστήματα Διοίκησης Ενότητα 7: Διαγράμματα Καταστάσεων Γρηγόριος Μπεληγιάννης Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων και Τροφίμων Σκοποί

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΙΣΤΟΤΟΠΟΣ ΕΡΓΑΣΤΗΡΙΟΥ http://www.mech.upatras.gr/~adamides/dpe ΠΡΟΣΟΜΟΙΩΣΗ Η τεχνική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

Διαβάστε περισσότερα

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις Σειρά Προβλημάτων 4 Λύσεις Άσκηση Θεωρήστε τις πιο κάτω διεργασίες: A....A B....B.... P ( A B \{ P ( A A \{,,, },,, } (α Να κτίσετε τα συστήματα μεταβάσεων που αντιστοιχούν στις διεργασίες P, Ρ. Ακολουθούν

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΙΕΡΓΑΣΙΕΣ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθηµα: Λειτουργικά Συστήµατα Ι ΙΕΡΓΑΣΙΕΣ ιδάσκων: Αναπλ. Καθ. Κ. Λαµπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΙΕΡΓΑΣΙΕΣ ιεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράµµατος

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

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

ΔΙΕΡΓΑΣΙΕΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΕΡΓΑΣΙΕΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΔΙΕΡΓΑΣΙΕΣ Διεργασία (Process) είναι η αφαιρετική θεώρηση ενός προγράμματος

Διαβάστε περισσότερα

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

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1 Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο Κατανεμημένα Συστήματα lalis@inf.uth.gr Μοντέλο δικτύου Το δίκτυο δέχεται και επιστρέφει πακέτα κάθε πακέτο μεταφέρει έναν περιορισμένο αριθμό bytes

Διαβάστε περισσότερα

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω εµπρός Ουρές (Queues) A B C FIFO εµπρός πίσω B C Διαγραφή εµπρός πίσω B C D E Εισαγωγή πίσω Ορισµός Η ουρά είναι µια γραµµική λίστα στην οποία η διαγραφή ενός στοιχείου γίνεται στο ένα άκρο το οποίο καλείται

Διαβάστε περισσότερα

Παραδείγματα Θεμάτων/Ασκήσεων Συστημάτων Ουρών Αναμονής

Παραδείγματα Θεμάτων/Ασκήσεων Συστημάτων Ουρών Αναμονής Παραδείγματα Θεμάτων/Ασκήσεων Συστημάτων Ουρών Αναμονής Γ. Λυμπερόπουλος Ιανουάριος 2012 Θέμα 1 Ένα εργοστάσιο που δουλεύει ασταμάτητα έχει τέσσερις (4) πανομοιότυπες γραμμές παραγωγής. Από αυτές, μπορούν

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Μάθηµα 1 Ο ρόλος του ΛΣ Υλικό Υπολογιστικό σύστηµα Λειτουργικό σύστηµα Λογισµικό Προγράµµατα εφαρµογής Στόχοι του ΛΣ Χρήστες ιευκόλυνση των χρηστών ιευκόλυνση

Διαβάστε περισσότερα

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014 Κεφάλαιο 2 Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Σωρός και Ταξινόμηση

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Αδιέξοδα Βασίλης Σακκάς 22/1/2014 1 Εισαγωγή Πόροι Ένα σύνολο διεργασιών βρίσκεται σε αδιέξοδο (deadlock) αν κάθε διεργασία του συνόλου περιμένει ένα γεγονός που μόνο μια άλλη

Διαβάστε περισσότερα

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

Διαβάστε περισσότερα

Κεφάλαιο 3: Λειτουργικά Συστήµατα

Κεφάλαιο 3: Λειτουργικά Συστήµατα Κεφάλαιο 3: Λειτουργικά Συστήµατα B Μέρος Συντονισµός Δραστηριοτήτων Υπολογιστή Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Εισαγωγή Σήµερα θα περιγράψουµε πως ένα λειτουργικό

Διαβάστε περισσότερα

ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΠΠΑΙΚ ΑΝΑ ΠΟΛΗ ΣΕΙΡΑ ΚΑΤΑΤΑΞΗΣ ΕΙΣΑΓΩΓΗ ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΠΟΛΗ ΕΠΙΛΟΓΗΣ 1 NAI ΔΗΜΗΤΡΙΟΣ ΚΑΡΒΟΥΝΗΣ ΝΙΚΟΛΑΟΣ ΑΘΗΝΑ 2 NAI ΒΑΣΙΛΕΙΟΣ

ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΠΠΑΙΚ ΑΝΑ ΠΟΛΗ ΣΕΙΡΑ ΚΑΤΑΤΑΞΗΣ ΕΙΣΑΓΩΓΗ ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΠΟΛΗ ΕΠΙΛΟΓΗΣ 1 NAI ΔΗΜΗΤΡΙΟΣ ΚΑΡΒΟΥΝΗΣ ΝΙΚΟΛΑΟΣ ΑΘΗΝΑ 2 NAI ΒΑΣΙΛΕΙΟΣ ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΠΠΑΙΚ ΑΝΑ ΠΟΛΗ ΣΕΙΡΑ ΚΑΤΑΤΑΞΗΣ ΕΙΣΑΓΩΓΗ ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΠΟΛΗ ΕΠΙΛΟΓΗΣ 1 NAI ΔΗΜΗΤΡΙΟΣ ΚΑΡΒΟΥΝΗΣ ΝΙΚΟΛΑΟΣ ΑΘΗΝΑ 2 NAI ΒΑΣΙΛΕΙΟΣ ΡΟΥΜΠΙΕΣ ΕΥΑΓΓΕΛΟΣ ΑΘΗΝΑ 3 NAI ΧΡΗΣΤΟΣ ΣΟΥΚΑΣ ΑΛΚΙΝΟΟΣ

Διαβάστε περισσότερα

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Μάθημα 4 ο Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός Εισαγωγή Σκοπός του μαθήματος αυτού είναι να εξηγήσει την έννοια του κρίσιμου τμήματος σε μία διεργασία και να δείξει τη λύση για ένα απλό πρόβλημα

Διαβάστε περισσότερα