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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

6η Ενότητα:Τρόποι Μεταφοράς Πιάτων
Στο σχολείο Κάθε μέρα στο σχολείο, η δασκάλα ζητάει από τα παιδιά να διαβάσουν από το βιβλίο και να γράψουν στο τετράδιο. Τα παιδιά διαβάζουν από το βιβλίο.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
1 ΥΠΟΛΟΓΙΣΤΙΚΉ ΓΕΩΜΕΤΡΊΑ. 2 Πρόβλημα:  Δυναμική διατήρηση N διαστημάτων με διαφορετικά ανά δύο σημεία αρχής και τέλους (σύνορα) έτσι ώστε να απαντάμε.
Παράδειγμα 2: Φοίτηση στο πανεπιστήμιο Εκφώνηση: Ζητάμε το έτος κάθε φοιτητή κάποιου τμήματος κάποιας σχολής που έχει διαφορετικό αριθμό φοιτητών ανά έτος,
Η επιστήμη των υπολογιστών
Λειτουργικά Συστήματα
Εισαγωγή στο Προγραμματισμό
Λειτουργικό Σύστημα 2ο μέρος.
Αλάτι χοντρό – αλάτι ψιλό
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αδιέξοδα (Deadlocks).
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
6. Αδιέξοδο Ορισμοί – είδη πόρων Γράφοι εκχώρησης πόρων
5. Αμοιβαίος αποκλεισμός
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός.
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Λειτουργικά Συστήματα ΑΔΙΕΞΟΔΑ. 3.1 Εισαγωγή  Αδιέξοδο = ένα σύνολο από διεργασίες που δημιουργούν μια κυκλική αλυσίδα όπου κάθε process στην αλυσίδα.
Αδιέξοδο Μόνιμο μπλοκάρισμα ενός συνόλου διεργασιών που είτε συναγωνίζονται για πόρους του συστήματος είτε επικοινωνούν μεταξύ τους Δεν υπάρχει αποδοτική.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Σχεδίαση αλγορίθμων (2ο μέρος)
ΓΙΑ ΝΑ ΕΙΣΑΙ ΧΑΡΟΥΜΕΝΟΣ, Πρώτα απ΄ όλα:. Βάλε τα δυνατά σου να τελειώνεις με επιτυχία ό,τι ξεκινάς...
Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
Ντίρλης Νίκος- ΕΤΥ 4ο ΦΡΟΝΤΙΣΤΗΡΙΟ Παρασκευή Β4 1.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Δουλεύει για όλους τους αριθμούς! Η δεύτερη ΓΡΑΨΕ δεν θα εκτελεστεί ποτέ!
Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
ΚΕΦΑΛΑΙΟ 1 : ΤΙ ΣΥΜΒΑΙΝΕΙ ΣΤΟ ΜΥΑΛΟ ΤΟΥ ΠΑΙΔΙΟΥ ΜΟΥ;
Ελεύθερη πτώση ΓεωργίαΕιρήνη Δημοτικό Σχολείο Αγίου Αντωνίου.
JAVA: Threads Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
ΑΕΠΠ 3ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1 Ο Λύκειο Ρόδου.
Λειτουργικά Συστήματα
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
1 Κέλυφος Bash – Τι μάθαμε? Μεταξύ άλλων…  Συνθήκες ελέγχου (if, case…) και βρόχοι επανάληψης (for, while)  Πράξεις ακεραίων (let, expr) και δεκαδικών.
Βάσεις Δεδομένων II Περίληψη: Βασικές Αρχές Διαχείρισης Ταυτοχρονισμού Πάνος Βασιλειάδης Οκτώβρης 2002
1 Αδιέξοδα Μοντέλο συστήματος Χαρακτηρισμός αδιεξόδου Μέθοδοι διαχείρισης αδιεξόδων Πρόληψη Αποφυγή Ανίχνευση.
Λειτουργικά Συστήματα
Αυτόνομοι Πράκτορες Ενισχυτική Μάθηση (Q-learning algorithm) in PONG Χανιά, 4/3/2011 Μπαμπαλής Μπάμπης.
Λειτουργικά Συστήματα Ενότητα # 6: Αδιέξοδα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
1 Λειτουργικά Συστήματα Ενότητα 7 : Αδιέξοδο 2/2 Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Τεχνητή Νοημοσύνη Ενότητα 2: ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΩΝ (Problem Solving) Κατερίνα Γεωργούλη ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ TEI ΑΘΗΝΑΣ.
1 Αδιέξοδο 1.Ορισμοί – είδη πόρων 2.Γράφοι εκχώρησης πόρων 3.Συνθήκες αδιεξόδου 4.Προσεγγίσεις αδιεξόδου 1.Πρόληψη 2.Αποφυγή 3.Ανίχνευση 5.Το πρόβλημα.
1 Λειτουργικά Συστήματα Ενότητα 6 : Αδιέξοδο 1/2 Δημήτριος Λιαροκάπης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
ΘΕΑΤΡΟΠΑΙΔΑΓΩΓΙΚΟ ΠΡΟΓΡΑΜΜΑ ΣΕ ΣΥΝΕΡΓΑΣΙΑ ΜΕ ΤΟ ΣΥΛΛΟΓΟ ΑΜΕΑ ΑΡΓΟΛΙΔΑΣ.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Συγχρονισμός Διεργασιών
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Βασικά Μοντέλα και Έννοιες Διεργασιών
Ενισχυτική διδασκαλία
Αµοιβαίος αποκλεισµός
Το μοντέλο πελάτη - εξυπηρετητή
στα προβλήματα με ανάλογα και αντιστρόφως ανάλογα ποσά
Το πρόβλημα του Βαρκάρη
Διεργασίες Διεργασίες Διαδιεργασιακή Επικοινωνία (IPC)
ΔΙΕΡΓΑΣΙΕΣ.
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
Δυναμικός Κατακερματισμός
Λειτουργικά Συστήματα Αμοιβαίος Αποκλεισμός και Λάθη
Μεταγράφημα παρουσίασης:

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

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

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

Πρώτη Λύση # 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)

Άλλες Πιθανές Λύσεις # 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) Εάν δεν υπάρχει ελεύθερο δεξί πιρούνι, τότε αφήνω και το αριστερό και ξαναδοκιμάζω μετά από κάποια τυχαία καθυστέρηση. Πρόβλημα: σε κάποιες εφαρμογές αυτός ο τρόπος μπορεί να μη δουλεύει.

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

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

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

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

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

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

Sleeping Barber Problem

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

Πιθανή Λύση

Do Something Great (DSG) 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); } Πιο πιθανό πρόβλημα έχουν οι πιο πάνω διεργασίες; Αδιέξοδο (Deadlock)!!!