Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών Classical Problems in Interprocess Communication.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών Classical Problems in Interprocess Communication."— Μεταγράφημα παρουσίασης:

1 Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών Classical Problems in Interprocess Communication

2 Περίληψη Producer-Consumer Problem Dinning Philosophers Readers-Writers Problem Sleeping Barber Αυτά είναι κλασσικά προβλήματα τα οποία παρουσιάζονται στη βιβλιογραφία με σκοπό την σύγκριση διαφόρων αλγορίθμων που έχουν προταθεί για το πρόβλημα του συγχρονισμού διεργασιών

3 Dinning Philosophers Problem Πέντε φιλόσοφοι κάθονται γύρω από ένα κυκλικό τραπέζι με πέντε πιάτα μακαρόνια και πέντε πιρούνια. Για να μπορεί να φάει ο κάθε φιλόσοφος πρέπει να κρατά δύο πιρούνια. take_fork()  Ρουτίνα που επιτρέπει στον κάθε φιλόσοφο να πιάσει ένα πιρούνι.  Εάν δεν υπάρχει πιρούνι ελεύθερο περιμένει μέχρι να ελευθερωθεί ένα πιρούνι.

4 # define N 5 /*Number of philosophers*/ void philosopher(int i) { while(true) { think(); take_fork(i); take_fork((i+1)%N); eat(); put_fork(i); put_fork((i+1)%N); } Πρώτη Λύση Προβλήματα;  Αδιέξοδο (deadlock)  Παρατεταμένη στέρηση (starvation)

5 # define N 5 /*Number of philosophers*/ void philosopher(int i) { while(true) { think(); take_fork(i); take_fork((i+1)%N); eat(); put_fork(i); put_fork((i+1)%N); } Άλλες Πιθανές Λύσεις Τυχαία καθυστέρηση (randomization)  Εάν δεν υπάρχει ελεύθερο δεξί πιρούνι, τότε αφήνω και το αριστερό και ξαναδοκιμάζω μετά από κάποια τυχαία καθυστέρηση. Πρόβλημα: σε κάποιες εφαρμογές αυτός ο τρόπος μπορεί να μη δουλεύει. Κρίσιμη Περιοχή Όμως μόνο ένας φιλόσοφος μπορεί να τρώει κάθε φορά.

6 Λύση με Σηματοφόρους (Μέρος 1)

7 Λύση με Σηματοφόρους (Μέρος 2)

8 Readers/Writers Problem Μοντέλο που ισχύει στα προβλήματα με βάσεις δεδομένων. Υποθέτουμε πως υπάρχει κάποιος κοινός χώρος μνήμης (π.χ., ένα αρχείο) Υπάρχουν n διεργασίες οι οποίες μπορούν να διαβάσουν κάποια πληροφορία από το αρχείο. Υπάρχουν m διεργασίες οι οποίες μπορούν να γράψουν κάποια πληροφορία στο αρχείο. Πως διαφέρει αυτό το πρόβλημα από το πρόβλημα παραγωγών / καταναλωτών;  Όταν μια διεργασία διαβάζει τα δεδομένα δεν τα καταναλώνει (άλλες διεργασίες μπορούν να διαβάσουν την ίδια πληροφορία)

9 Readers/Writers Problem Διατύπωση του προβλήματος  Ταυτόχρονα μπορούν να διαβάζούν τα δεδομένα αρκετοί readers.  Μόνο ένας writer μπορεί να γράφει ανά πάσα στιγμή.  Όταν γράφει ένας writer δεν μπορεί κανένας reader να διαβάζει.

10 Πιθανή Λύση με Σηματοφόρους

11 Πια είναι πιθανά προβλήματα της λύσης αυτής; Τι θα συμβεί εάν readers φτάνουν κάθε 3 δευτερόλεπτα και τελειώνουν μετά από 5 δευτερόλεπτα;  Ο writer δεν μπορεί ποτέ να τρέξει!

12 Sleeping Barber Problem

13 Πιθανή Λύση Επίσης υποθέστε πως υπάρχουν οι ρουτίνες cut_hair() και get_haircut().

14 Πιθανή Λύση

15 Do Something Great (DSG) Πιο πιθανό πρόβλημα έχουν οι πιο πάνω διεργασίες; Αδιέξοδο (Deadlock)!!! semaphore s1=1, s2=1; void process1(){ while(true){ down(&s1); down(&s2); DSG(); up(&s2); up(&s1); } void process2(){ while(true){ down(&s2); down(&s1); DSG(); up(&s1); up(&s2); }


Κατέβασμα ppt "Κλασσικά Προβλήματα Επικοινωνίας Σύνδρομων Διεργασιών Classical Problems in Interprocess Communication."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google