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

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα

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

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

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

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

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

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


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

Αδιέξοδα (Deadlocks)

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

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

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

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

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

Συγχρονισµός: Αδιέξοδο & Παρατεταµένη Στέρηση

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Χρονοπρογραμματισμός Εργαστηριακές Ασκήσεις

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

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου

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

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

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

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

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

Λειτουργικά συστήματα πραγματικού χρόνου

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

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

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Μάθημα 7 ο. Αλγόριθμοι Χρονοδρομολόγησης

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

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

3.1 Λειτουργικό Σύστηµα. Λειτουργικό Σύστηµα (2) ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα. Ο υπολογιστής σαν σκέτο hardware έχει περιορισµένη χρησιµότητα

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

Προσπέλαση κοινών πόρων Πρωτόκολλα ελέγχου αμοιβαίου αποκλεισμού

Ενότητα 2 (Κεφάλαιο 3) Περιγραφή και Έλεγχος Διεργασιών. Περιεχόμενα. Ανάγκη ύπαρξης διεργασιών 1

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

Εισαγωγή στην Πληροφορική

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

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

Μάθημα 7: Αλγόριθμοι Χρονοδρομολόγησης

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

Δρομολόγηση σε σύστημα ενός επεξεργαστή

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

Ιδιοκτησία Αντικειµένου

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Μάθημα 6 ο. Χρονοδρομολόγηση (Scheduling)

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Πληροφορική 2. Αλγόριθμοι

Ανάλυση επιδόσεων συστημάτων πραγματικού χρόνου

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Χρονοπρογραμματισμός (ή Χρονοδρομολόγηση ή Δρομολόγηση)

Περιεχόμενα. Αδιέξοδο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Αδιέξοδα Εργαστηριακές Ασκήσεις

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ENOTHTA 4 A IEΞO O. Περιεχόµενα

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

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

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

1. ΑΡΧΕΣ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

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

Χρονοδρομολόγηση Ι Μοντέλα διεργασιών, Προθεσμίες και Αλγόριθμοι

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφάλαιο 4 Διεργασίες Β Τάξη ΕΠΑΛ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

Επιτεύγµατα των Λ.Σ.

Οργάνωση Υπολογιστών (IΙI)

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Υλικό από: Tanenbaum, Modern Operating Systems,Structured Computer Organization Stallings, Operating Systems: Internals and Design Principles. Silberschatz, Galvin and Gange, Operating Systems Concepts. Deitel, Deitel and Choffnes, Operating Systems Λειτουργικά Συστήματα, Γ.Α. Παπαδόπουλος, Πανεπιστήμιο Κύπρου Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Systems Programming in C, A.D. Marshal, University of Cardiff Σύνθεση Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

Πόροι (1) Μονάδες υλικού, συσκευές, δομές δεδομένων που χρησιμοποιούν οι διεργασίες για να εκτελεστούν. Παραδείγματα πόρων: εκτυπωτές δίσκοι διαμοιραζόνενα αρχεία διαμοιραζόμενες μεταβλητές Οι διεργασίες πρέπει να έχουν πρόσβαση στους απαιτούμενους πόρους σε τακτά χρονικά διαστήματα και με συγκεκριμένη σειρά. Αν μια διεργασία κρατά τον πόρο Α και ζητά τον πόρο Β και ταυτόχρονα μια άλλη διεργασία κρατά τον πόρο Β και ζητά τον πόρι Α έχουμε αδιέξοδο.

Πόροι (2) Τα αδιέξοδα συμβαίνουν όταν διεργασίες αποκτούν αποκλειστική πρόσβαση σε κάποιο πόρο. Σε ένα σύστημα πολυπρογραμματισμού η συνολική απαίτηση πόρων από όλες τις συνεξελισσόμενες ενεργές διεργασίες υπερβαίνει κατά πολύ το συνολικό ποσό των διαθέσιμων πόρων. Προεκτοπίσιμοι (Preemptable) πόροι το λ.σ. μπορεί να αφαιρέσει το πόρο από τη διεργασία χωρίς προβλήματα (πχ ένα τμήμα μνήμης). Μη-προεκτοπίσιμοι (Nonpreemptable) πόροι η αφαίρεσή τους θα προκαλέσει αστοχία ή κατάρρευση (πχ ο εκτυπωτής ή η συσκευή CD).

Πόροι (3) Επαναχρησιμοποιήσιμοι (Reusable) πόροι: Χρησιμοποιούνται με ασφάλεια από μια διεργασία σε κάθε χρονική στιγμή και δεν εξαντλούνται από αυτή τη χρήση. Οι διεργασίες αποκτούν πόρους που θα απελευθερώσουν στη συνέχεια ώστε να χρησιμοποιηθούν από άλλες διεργασίες. Τέτοιοι πόροι είναι : επεξεργαστές, I/O κανάλια, κύρια και δευτερεύουσα μνήμη, αρχεία, βάσεις δεδομένων, και σημαφόροι. Το αδιέξοδο προκύπτει όταν μια διεργασία δεσμεύει ένα πόρο και απαιτεί έναν άλλο. Η αιτία αδιεξόδων αυτού του είδους είναι συχνά η πολύπλοκη λογική των προγραμμάτων. Μια στρατηγική αντιμετώπισης είναι η επιβολή περιορισμών που να αφορούν τη σειρά με την οποία ζητούνται οι πόροι.

Πόροι (4) Καταναλώσιμοι (Consumable) πόροι: Δημιουργούνται (παράγονται) και καταστρέφονται (καταναλώνονται) από μια διεργασία Όταν ένας πόρος δεσμεύεται από μια διεργασία παύει να υπάρχει. Τέτοιοι πόροι : Διακοπές (Interrupts), σήματα (signals), μηνύματα και πληροφορίες σε ενταμιευτές (buffers) I/O Το αδιέξοδο μπορεί να συμβεί αν ένα μήνυμα που αποστέλλεται από μια διεργασία δεν παραλαμβάνεται από την άλλη Σπάνιος συνδυασμός γεγονότων μπορεί να οδηγήσει σε αδιέξοδο

Πόροι (3) Ακολουθία γεγονότων για την απόκτηση πόρου: Αίτηση για απόκτηση πόρου Χρήση (κατάληψη) πόρου Απελευθέρωση πόρου Αν η αίτηση δεν γίνει δεκτή η διεργασία πρέπει να περιμένει: Μπορεί να ανασταλεί (ή να μπεί σε ενεργό αναμονή) Μπορεί να αποτύχει παράγοντας κωδικό σφάλματος (αν υπάρχει πχ περιορισμός πραγματικού χρόνου)

Το αδιέξοδο είναι πιθανό 3 4 1 2

Αδιέξοδο

Απόκτηση πόρου (1) Χρήση semaphore για τον έλεγχο προσπέλασης σε πόρους. (a) Ένας πόρος. (b) Δύο πόροι.

Απόκτηση πόρου (2) Κώδικας που μπορεί να προκαλέσει αδιέξοδο. Και οι δύο διεργασίες προσπαθούν πρώτα να καταλάβουν τους δύο πόρους εναλλάξ. Αν η κάθε μια καταλάβει από ένα πόρο καμμιά δε θα μπορέσει να συνεχίσει.

Απόκτηση πόρου (3) Κώδικας που αποφεύγει το αδιέξοδο. Και οι δύο διεργασίες προσπαθούν να καταλάβουν τους δύο πόρους με την ίδια σειρά. Μόνο μια διεργασία θα περάσει στο δεύτερο αίτημα, δηλαδή το πρώτο αίτημα περικλείει το δεύτερο.

Εξάντληση πόρου Ο διαθέσιμος χώρος για κατανομή στην κύρια μνήμη είναι 200Kbytes, και πραγματοποιείται η παρακάτω σειρά αιτημάτων.... P1 Request 80K bytes;... Request 60K bytes;... P2... Request 70K bytes; Request 80K bytes; Το αδιέξοδο προκύπτει αν και οι δύο διεργασίες προχωρήσουν στο 2ο αίτημά τους.

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

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

Συνθήκες αδιεξόδου 1. Συνθήκη αμοιβαίου αποκλεισμού Κάθε πόρος είναι: είτε δεσμευμένος από ακριβώς μία διεργασία είτε ελεύθερος. 2. Συνθήκη δέσμευσης και αναμονής Διεργασίες που ήδη δεσμεύουν πόρους μπορούν να ζητήσουν και νέους πόρους. 3. Συνθήκη μη-προεκτόπισης Πόροι που έχουν εκχωρηθεί σε διεργασίες δε μπορούν να απελευθερωθούν με εξαναγκασμό, πρέπει να τους ελευθερώσουν οι διεργασίες. 4. Συνθήκη κυκλικής αναμονής Πρέπει να υπάρχει κύκλος από δύο ή περισσότερες διεργασίες, με τη κάθε μια να αναμένει για πόρο που είναι δεσμευμένος από επόμενο μέλος του κύκλου.

Μοντελοποίηση αδιεξόδου (1) Γράφοι κατανομής πόρων. (a) Η διεργασία Α κατέχει (δεσμεύει) τον πόρο R. (b) Η διεργασία B ζητά (αναμένει) τον πόρο S. (c) Αδιέξοδο: Η διεργασία C ζητά τον πόρο T που δεσμεύεται από τη διεργασία D που ζητά τον πόρο U που δεσμεύεται από τη διεργασία C.

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

Παράδειγμα (1) (a) (c): ακολουθίες εντολών στους κώδικες των διεργασιών A, B και C. (d): σειρά εκτέλεσης εντολών στο σύστημα. (e) (g): αναπαράσταση των βημάτων 1-3.

Παράδειγμα (2) (d): (e) (j): σειρά εκτέλεσης εντολών στο σύστημα. αναπαράσταση των βημάτων 1-6 και πρόκληση αδιεξόδου.

Παράδειγμα (3) (d): (e) (j): εναλλακτική σειρά εκτέλεσης εντολών στο σύστημα. αναπαράσταση των βημάτων 1-6 και αποφυγή αδιεξόδου.

Αλγόριθμος στρουθοκαμήλου Το πρόβλημα αγνοείται ή θεωρείται οτι τεχνικο-οικονομικά δεν είναι συμφέρουσα η αντιμετώπιση. Λογική αντιμετώπιση αν Τα αδιέξοδα συμβαίνουν πολύ σπάνια Το απαιτούμενο κόστος είναι πολύ ψηλό UNIX και Windows σε μερικές περιπτώσεις προσεγγίζουν το πρόβλημα με αυτό το τρόπο: εξισορρόπηση μεταξύ τεχνικά ορθού και τεχνικά εφικτού. Πχ $ ulimit -a open files, max user processes, pending signals, stack size,...

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

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

Ανίχνευση αδιεξόδου με ένα πόρο από κάθε είδος (2) Αλγόριθμος εντοπισμού: 1. Για κάθε κόμβο Ν στο γράφο, εκτέλεση των επόμενων 5 βημάτων του αλγορίθμου, με σημείο εκκίνησης το N. 2. Αρχικοποίηση της μιας κενής λίστας L, και χαρακτηρισμός όλων των τόξων ως ασημείωτα. 3. Εισαγωγή του τρέχοντα κόμβου στο τέλος της λίστας L, έλεγχος να ο κόμβος εμφανίζεται δύο φορές στη λίστα L. Αν ο κόμβος εμφανίζεται δύο φορές, τερματισμός.

Ανίχνευση αδιεξόδου με ένα πόρο από κάθε είδος (3) 4. Για τον τρέχοντα κόμβο, έλεγχος αν υπάρχουν εξερχόμενα ασημείωτα τόξα. Αν ναι, συνέχεια στο βήμα 5, αλλιώς συνέχεια στο βήμα 6. 5. Επιλογή ενός εξερχόμενου ασημείωτου τόξου και σημείωσή του. Επιλογή του κόμβου που δείχνει το τόξο, συνέχεια στο βήμα 3. 6. Ο κόμβος δεν έχει ασημείωτα εξερχόμενα τόξα. Οπισθοδρόμηση στο προηγούμενο κόμβο και συνέχεια στο βήμα 3. Αν πρόκειται για τον αρχικό κόμβο, ο γράφος δεν περιέχει κύκλους, τερματισμός.

Παράδειγμα Κόμβος Λίστα Βήματα Τόξο R R 1, 2, 3, 4, 5 R->A A R, A 3, 4, 5 A -> S S R, A, S 3, 4, 6 Α R, A 3, 4, 6 R R 3, 4, 6 B B 3, 4, 5 B -> T T B, T 3, 4, 5 T -> E E B, T, E 3, 4, 5 E -> V V B, T, E, V 3, 4, 5 V -> G G B, T, E, V, G 3, 4, 5 G -> U U B, T, E, V, G, U 3, 4, 5 U -> D D B, T, E, V, G, U, D 3, 4, 5 D -> S S B, T, E, V, G, U, D, S 3, 4, 6 D B, T, E, V, G, U, D 3, 4, 5 D -> T T B, T, E, V, G, U, D, T 3, Tερματισμός

Ανίχνευση αδιεξόδου με πολλούς πόρους από κάθε είδος (1) Διάνυσα υπαρχόντων πόρων E, Διάνυσμα διαθέσιμων πόρων A, Μητρώο τρέχουσας κατανομής C, Μητρώο αιτήσεων R. n Σ Cij + Aj = Ej, j = 1, 2,..., m. i=1

Ανίχνευση αδιεξόδου με πολλούς πόρους Αλγόριθμος εντοπισμού: από κάθε είδος (2) 1. Αναζήτηση για μια ασημείωτη διεργασία, Pi, i=1, 2,..., n για την οποία η γραμμή i του μητρώου R είναι μικρότερη ή ίση του διανύσματος A, δηλαδή Rij <= Aj, j = 1, 2,..., m. 2. Αν βρεθεί μια τέτοια διεργασία τότε η γραμμή i του μητρώου C προστίθεται στο διάνυσμα A, δηλαδή Αj = Aj + Cij, j = 1, 2,..., m. Σημειώνει τη διεργασία και πηγαίνει στο βήμα 1. 3. Αν δεν υπάρχει τέτοια διεργασία ο αλγόριθμος τερματίζει.

Παράδειγμα (1) Processes P1, P2, P3.

Παράδειγμα (2) P1 R1 <= A? [ 2 0 0 1 ] <= [ 2 1 0 0 ] FALSE (1) P2 R2 <= A? [ 1 0 1 0 ] <= [ 2 1 0 0 ] FALSE (1) P3 R3 <= A? [ 2 1 0 0 ] <= [ 2 1 0 0 ] TRUE (1) 'χωραει' Σημείωση P3 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P3 και απελευθέρωση των πόρων της P3 (2) 'αποδεσμεύει' A = A + C3 = [ 2 1 0 0 ] + [ 0 1 2 0 ] = [ 2 2 2 0 ] [ 0 0 1 0 ] [ 2 0 0 1 ] C = [ 2 0 0 1 ] R = [ 1 0 1 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ]

Παράδειγμα (3) P1 R1 < = A? [ 2 0 0 1 ] <= [ 2 2 2 0 ] FALSE R2 < = A? [ 1 0 1 0 ] <= [ 2 2 2 0 ] TRUE Σημείωση P2 προς εκτέλεση (1) 'χωράει' (2) 'εκτελείται' Εκτέλεση P2 και απελευθέρωση των πόρων της P2 (2) 'αποδεσμεύει' Α = Α + C2 = [ 2 2 2 0 ] + [ 2 0 0 1 ] = [ 4 2 2 1 ] [ 0 0 1 0 ] [ 2 0 0 1 ] C = [ 0 0 0 0 ] R = [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ]

Παράδειγμα (4) P1 R1 < = A? [ 2 0 0 2 ] <= [ 4 2 2 1 ] TRUE (1) 'χωράει' Σημείωση P1 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P1 και απελευθέρωση των πόρων της P1 (2) 'αποδεσμεύει' Α = Α + C1 = [ 4 2 2 1 ] + [ 0 0 1 0 ] = [ 4 2 3 1 ] = E [ 0 0 0 0 ] [ 0 0 0 0 ] C = [ 0 0 0 0 ] R = [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ]

Ανάκαμψη από αδιέξοδο (1) Ανάκαμψη μέσω προεκτόπισης Αφαίρεση πόρου από μια διεργασία και προσωρινή εκχώρηση σε άλλη διεργασία Εξαρτάται από τον τύπο του πόρου (προεκτοπίσημος) Ανάκαμψη μέσω επιστροφής (rollback) Περιοδικός έλεγχος διεργασιών σε ειδικά σημεία ελέγχου (checkpoints) Διαδοχικές καταγραφές της εικόνας (image) της διεργασίας, της δέσμευσης πόρων κλπ Αν ανιχνευτεί αδιέξοδο η διεργασία διακόπτεται, οι λειτουργίες μέχρι το τελευταίο checkpoint ακυρώνονται (rollback), οι πόροι αποδεσμεύονται Μετά τη λύση του αδιεξόδου η διεργασία επανέρχεται στη κατάσταση του τελευταίου checkpoint.

Ανάκαμψη από αδιέξοδο (2) Ανάκαμψη μέσω εξάλειψης (kill) Άτσαλος αλλά απλός τρόπος επίλυσης αδιεξόδων Εξάλειψη (kill -9) μιας διεργασίας στο κύκλο του αδιεξόδου, ενώ οι άλλες διεργασίες συνεχίζουν Επιλογή διεργασίας που μπορεί να ξεκινήσει από την αρχή χωρίς πρόβλημα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

Τροχιές και καταστάσεις διεργασιών (1) Εντολές διεργασίας Αμοιβαίος αποκλεισμός λόγω Printer Αμοιβαίος αποκλεισμός λόγω Plotter Εντολές διεργασίας Δύο διεργασίες A, Β εκτελούνται εναλλάξ. Η A στο σημείο r-s (I1), ζητά και δεσμεύει τον Printer. Στη συνέχεια η Β, στο σημείο s-t (I5) ζητά τον Plotter. Το λ.σ. πρέπει να αναστείλει τη Β και να αφήσει πρώτα την Α να φθάσει στο σημείο Ι4.

Τροχιές και καταστάσεις διεργασιών (2) Progress of Q A Required Release A Release B 1 2 P and Q want A B Required Get A Get B 3 deadlock inevitable 4 P and Q want B 5 6 Get A Get B Release A Release B Progress of P Λύση 1: Επιλογή τροχιάς. A Required B Required

Τροχιές και καταστάσεις διεργασιών (3) Progress of Q 1 2 3 A Required Release A Release B Get A P and Q want A P and Q want B 4 B Required Get B 5 6 Get A Release A Get B Release B Progress of P Λύση 2: Αλλαγή δεσμεύσεων A Required B Required

Ασφαλείς και ανασφαλείς καταστάσεις (1) Τρείς διεργασίες (Α, Β, C) και ένας πόρος ( διαθέσιμος σε 10 αντίγραφα). Εκκίνηση από τη κατάσταση (a) ελεύθεροι 3 πόροι. Σειρά εκτέλεσης: (b) δέσμευση 2 πόρων και εκτέλεση Β (c) αποδέσμευση πόρων από Β (d) δέσμευση 5 πόρων και εκτέλεση C (e) αποδέσμευση πόρων από C (f) δέσμευση 6 πόρων και εκτέλεση Α (g) ελεύθεροι 10 πόροι

Ασφαλείς και ανασφαλείς καταστάσεις (2) Τρείς διεργασίες (Α, Β, C) και ένας πόρος ( διαθέσιμος σε 10 αντίγραφα). Εκκίνηση από τη κατάσταση (a) ελεύθεροι 3 πόροι. Σειρά εκτέλεσης: (b) δέσμευση 1 πόρου από Α (c) δέσμευση 2 πόρων και εκτέλεση Β (d) αποδέσμευση πόρων από Β (e) ελεύθεροι 4 πόροι Δεν μπορεί να εκτελεστεί ούτε η Α ούτε η C.

Αλγόριθμος τραπεζίτη για ένα πόρο Έστω n διεργασίες, Pi, i=1, 2,..., n και 1 πόρος (σε Κ αντίγραφα). Ci οι πόροι που κατέχει κάθε διεργασία Ri οι πόροι που ζητά κάθε διεργασία Ai οι μέγιστοι πόροι που μπορεί να ζητήσει κάθε διεργασία, Ci+Ri <= Ai n Ελεύθεροι πόροι = Κ ΣCi i=1 Για κάθε αίτημα Ai πρέπει: Μετά την εξυπηρέτησή του αιτήματος οι ελεύθεροι πόροι που απομένουν να μπορούν να εξυπηρετήσουν τουλάχιστο μια διεργασία αν αυτή ζητήσει το μέγιστο του υπολοίπου της. Να υπάρχει Pj, j=1, 2,..,, n i!=j ώστε (Ελεύθεροι πόροι + Ri ) <= Aj -Cj

Παράδειγμα (a) Αρχική κατάσταση: 4 διεργασίες, 1 πόρος (10 αντίγραφα), οι πόροι που κατέχουν οι διεργασίες και το μέγιστο αίτημα ανά διεργασία. Η κατάσταση (b) είναι Ασφαλής γιατί η C σίγουρα εξυπηρετείται με τους ελεύθερους 2 πόρους. Η κατάσταση (c) είναι Ανασφαλής γιατί καμμία διεργασία δεν εξυπηρετείται σίγουρα με τον 1 ελεύθερο πόρο που απομένει.

Αλγόριθμος τραπεζίτη για πολλούς πόρους (1) Διάνυσα υπαρχόντων πόρων E, Διάνυσμα κατεχόμενων πόρων P, Διάνυσμα διαθέσιμων πόρων A, Μητρώο τρέχουσας κατανομής C, Μητρώο αιτήσεων R. Ej = Pj + Aj, j= 1, 2,..., m n Σ Cij = Pj, j = 1, 2,..., m. i=1

Αλγόριθμος τραπεζίτη για πολλούς πόρους (2) Έλεγχος ασφαλούς κατάστασης: 1. Αναζήτηση για μια ασημείωτη διεργασία, Pi, i=1, 2,..., n για την οποία η γραμμή i του μητρώου R είναι μικρότερη ή ίση του διανύσματος A, δηλαδή Rij <= Aj, j = 1, 2,..., m. Αν δεν υπάρχει τέτοια διεργασία είμαστε σε ανασφαλή κατάσταση και το σύστημα θα οδηγηθεί σε αδιέξοδο. 2. Δέσμευση των πόρων της διεργασίας που επιλέχθηκε, εκτέλεση της διεργασίας, σημείωση της διεργασίας ως εκτελεσθείσας. Οι πόροι της προστίθενται στο διάνυσμα Α. 3. Επανάληψη των βημάτων 1 και 2 έως να σημειωθούν όλες οι διεργασίες (ασφαλής αρχική κατάσταση) ή να μην υπάρχει επιλογή στο βήμα 1 (ανασφαλής αρχική κατάσταση που οδηγεί σε αδιέξοδο).

Παράδειγμα (1) P1 R1 <= A? [ 1 1 0 0 ] <= [ 1 0 2 0 ] FALSE (1) P2 R2 <= A? [ 0 1 1 2 ] <= [ 1 0 2 0 ] FALSE (1) P3 R3 <= A? [ 3 1 0 0 ] <= [ 1 0 2 0 ] FALSE (1) P4 R4 <= A? [ 0 0 1 0 ] <= [ 1 0 2 0 ] TRUE (1) 'χωράει' Σημείωση P4 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P4 και απελευθέρωση των πόρων της P4 (2) 'αποδεσμεύει' A = A + C4 = [ 1 0 2 0 ] + [ 1 1 0 1 ] = [ 2 1 2 1 ] [ 3 0 1 1 ] [ 1 1 0 0 ] C = [ 0 1 0 0 ] R = [ 0 1 1 2 ] [ 1 1 1 0 ] [ 3 1 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 2 1 1 0 ]

Παράδειγμα (2) P1 R1 <= A? [ 1 1 0 0 ] <= [ 2 1 2 1 ] TRUE (1) 'χωράει' Σημείωση P1 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P1 και απελευθέρωση των πόρων της P1 (2) 'αποδεσμεύει' A = A + C1 = [ 2 1 2 1 ] + [ 3 0 1 1 ] = [ 5 1 3 2 ] [ 0 0 0 0 ] [ 0 0 0 0 ] C = [ 0 1 0 0 ] R = [ 0 1 1 2 ] [ 1 1 1 0 ] [ 3 1 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 2 1 1 0 ]

Παράδειγμα (3) P2 R2 <= A? [ 0 1 1 2 ] <= [ 5 1 3 2 ] TRUE (1) 'χωράει' Σημείωση P2 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P2 και απελευθέρωση των πόρων της P2 (2) 'αποδεσμεύει' A = A + C2 = [ 5 1 3 2 ] + [ 0 1 0 0 ] = [ 5 2 3 2 ] [ 0 0 0 0 ] [ 0 0 0 0 ] C = [ 0 0 0 0 ] R = [ 0 0 0 0 ] [ 1 1 1 0 ] [ 3 1 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 2 1 1 0 ]

Παράδειγμα (4) P3 R2 <= A? [ 3 1 0 0 ] <= [ 5 1 3 2 ] TRUE (1) 'χωράει' Σημείωση P3 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P3 και απελευθέρωση των πόρων της P3 (2) 'αποδεσμεύει' A = A + C3 = [ 5 2 3 2 ] + [ 1 1 1 0 ] = [ 6 3 4 2 ] [ 0 0 0 0 ] [ 0 0 0 0 ] C = [ 0 0 0 0 ] R = [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 2 1 1 0 ]

Παράδειγμα (5) P5 R2 <= A? [ 2 1 1 0 ] <= [ 6 3 4 2 ] TRUE (1) 'χωράει' Σημείωση P5 προς εκτέλεση (2) 'εκτελείται' Εκτέλεση P5 και απελευθέρωση των πόρων της P5 (2) 'αποδεσμεύει' A = A + C5 = [ 6 3 4 2 ] + [ 0 0 0 0 ] = [ 6 3 4 2 ] [ 0 0 0 0 ] [ 0 0 0 0 ] C = [ 0 0 0 0 ] R = [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ]

Παραδοχές Πολλαπλά στιγμιότυπα των πόρων Κάθε διεργασία πρέπει εκ των προτέρων να διεκδικεί τη μέγιστη χρήση των πόρων Όταν μια διεργασία απαιτεί έναν πόρο ίσως χρειαστεί να περιμένει Όταν μια διεργασία λάβει όλους τους πόρους πρέπει να τους επιστρέψει σε πεπερασμένο χρονικό διάστημα. Η μέγιστη απαίτηση για πόρους πρέπει να δηλώνεται εκ των προτέρων Οι σημαντικές διεργασίες πρέπει να είναι ανεξάρτητες και δεν υπόκεινται σε απαιτήσεις συγχρονισμού Πρέπει να υπάρχει ένας σταθερός αριθμός πόρων προς ανάθεση Καμιά διεργασία δεν μπορεί να περιέλθει σε κατάσταση εξόδου (exit) ενώ δεσμεύει πόρους Συντηρητικός αλγόριθμος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

Πρόληψη αδιεξόδου Προσβολή της συνθήκης αμοιβαίου αποκλεισμού Προσβολή της συνθήκης δέσμευσης και ανμονής Προσβολή της συνθήκης μη προ-εκτόπισης Προσβολή της συνθήκης κυκλικής αναμονής

Προσβολή της συνθήκης αμοιβαίου αποκλεισμού Μερικές συσκευές (όπως οι εκτυπωτές) μπορούν λειτουργήσουν με παροχέτευση (spooling), δηλαδή σειριοποίηση των αιτήσεων χρήσσης του πόρου. Η μόνη διεργασία που δεσμεύει τον πόρο είναι ο spooler. 'Ετσι τα πιθανά αδιέξοδα εξαλείφονται αφού ο spooler δεν ζητά άλλους πόρους. Πρόβλημα: Δεν είναι δυνατή η σειριοποίηση όλων των αιτημάτων: ακύρωση χωρικής και χρονικής πολυπλεξίας. Γενικές αρχές: Αποφεύγουμε την δέσμευση πόρου παρά μόνο αν είναι απολύτως απαραίτητη. Ελαχιστοποιούμε τους πόρους που μπορεί να δεσμεύσουν ένα πόρο.

Προσβολή της συνθήκης δέσμευσης και αναμονής Οι διεργασίες επιβάλλεται να ζητούν και να δεσμεύουν εξ' αρχής όλους τους πόρους που χρειάζονται προκειμένου να εκτελεστούν πλήρως. Έτσι εξαλείφεται η αναμονή για πόρους κατά την εκτέλεση. Προβλήματα: Εφαρμογή μόνο αν οι πόροι είναι γνωστοί εκ των προτέρων (πχ σε συστήματα δέσμης). Οι πόροι δεσμεύονται για διάστημα μεγαλύτερο από αυτό που πραγματικά απαιτείται: σπατάλη πόρων, μείωση της χρονικής πολυπλεξίας (concurrency). Τροποποίηση: Μια διεργασία που ζητά πόρους υποχρεώνεται να αποδεσμεύσει όλους τους πόρους της και στη συνέχεια ζητά όλους τους πόρους μαζί.

Προσβολή της συνθήκης μη-προεκτόπισης Περιορισμένη εφαρμογή: απαιτεί αφαίρεση πόρου από διεργασία. Πχ αφαίρεση εκτυπωτή από διεργασία που έχει ξεκινήσει εκτύπωση!!?? Έχει εφαρμογή μόνο σε προεκτοπίσιμους πόρους (πχ μνήμη).

Προσβολή της συνθήκης κυκλικής αναμονής (1) Εκδοχή 1η: Οι διεργασίες επιβάλλεται να δεσμεύουν μόνο ένα πόρο κάθε φορά. Απαλείφει τους κύκλους αλλά δεν είναι γενικά εφαρμόσιμη (πχ μεταφορά αρχείου στο spooler για εκτύπωση). Εκδοχή 2η: Γενική αρίθμηση πόρων. Οι διεργασίες δεσμεύουν όσους πόρους θέλουν αλλά με τη σειρά αρίθμησης. Έτσι αποτρέπονται οι κύκλοι. (a) Αρίθμηση πόρων. (b) Η διεργασία A μπορεί να ζητήσει τον πόρο j αλλά η διεργασία Β δεν μπορεί να ζητήσει τον πόρο i.

Προσβολή της συνθήκης κυκλικής αναμονής (2) Εκδοχή 2η (συνέχεια): Επιβάλλει σειρά στην εκτέλεση των διεργασιών: σε περίπτωση κοινού αιτήματος πρώτες θα εκτελεστούν αυτές που κατέχουν πόρους με μεγαλύτερο αριθμό. Eκδοχή 3η: Γενική αρίθμηση πόρων. Οι διεργασίες δεσμεύουν όσους πόρους θέλουν αλλά με αριθμό μεγαλύτερο από αυτό που ήδη κατέχουν. Προβλήματα: Η γενική αρίθμηση πόρων δεν είναι πάντα εύκολη.

Σύνοψη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Αδιέξοδα Πόροι Εισαγωγή στα αδιέξοδα Ανίχνευση και ανάκαμψη από αδιέξοδα Αποφυγή αδιεξόδου Πρόληψη αδιεξόδου 'Αλλα θέματα

Άλλα θέματα Κλείδωμα δύο φάσεων Ενεργό αδιέξοδο (Livelock) Λιμοκτονία (Starvation) Γευματίζοντες φιλόσοφοι (ξανά)

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

Ενεργό αδιέξοδο (1) Δυο διεργασίες μπορεί να βρεθούν σε αδιέξοδο αναμένοντας η μία την άλλη να εκτελέσει κάποια εργασία. Μπορεί να συμβεί σε συνθήκες ανταγωνισμού, όπου ο πόρος είναι μια κρίσιμη περιοχή και χρησιμοποιούνται Ενεργός αναμονή Σηματοφόροι Συνήθως οφείλεται σε λανθασμένη τοποθέτηση των λειτουργιών αποδέσμευσης μιας κρίσιμης περιοχής (signal(), down() κλπ).

Ενεργό αδιέξοδο (2) Παράδειγμα σφάλματος λόγω κακής τοποθέτησης εντολών ελέγχου κρίσιμης περιοχής.

Λιμοκτονία Ακραίες περιπτώσεις (worst case scenarios) στην εφαρμογή αλγορίθμων εκχώρησης πόρου (ακόμη και CPU). Πχ αλγόριθμος χρονοπρογραμματισμού Shortest Job First Preemptive (SJFP): δουλεύει καλά όσο ο αριθμός (και ρυθμός εισόδου) των διεργασιών σε ένα σύστημα είναι φραγμένος άνω. Όμως αν ο αριθμός εργασιών είναι πολύ μεγάλος τότε μια CPU-bound διεργασία μπορεί να αναμένει πολύ ακόμη και αν δεν είναι σε αναστολή. Λύσεις: Εφαρμογή χρονικά μεταβαλλόμενων προτεραιοτήτων ή εφαρμογή αλγορίθμου First-come, first-serve (FCFS) μετά από κάποιο χρονικό όριο.

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

Γευματίζοντεςφιλοσόφοι (2) Το πρόβλημα αυτό είναι ένα πρότυπο που χρησιμοποιείται για την αποτίμηση μεθόδων σχετικών με το συγχρονισμό ταυτόχρονων διεργασιών. Καταδεικνύει τη δυσκολία της εκχώρησης πόρων μεταξύ διεργασιών χωρίς αδιέξοδα και παρατεταμένες στερήσεις. Στόχος είναι η ανάπτυξη ενός πρωτοκόλλου απόκτησης των πηρουνιών που θα εξασφαλίζει την απαλλαγή από αδιέξοδα τη δικαιοσύνη: κανένας φιλόσοφος δεν πρέπει να υποφέρει από παρατεταμένη στέρηση το μέγιστο δυνατό συγχρονισμό

Η προφανής λύση (1) think for a while pick up left fork Μπορεί να συμβεί αδιέξοδο pick up right fork eat for a while return left fork return right fork

Η προφανής λύση (2) think for a while pick up left fork pick up right fork eat for a while Η παρατεταμένη στέρηση είναι πρόβλημα return left fork return right fork

Δεν υπάρχει συμμετρική λύση Λύσεις Προσθήκη ενός ακόμη πηρουνιού Λύση Μέγιστος αριθμός 4 φιλοσόφων στο τραπέζι (κυκλική αναμονή) Να εκτελείται διαφορετική αλληλουχία ενεργειών για τους φιλοσόφους με άρτιο και περιττό αύξοντα αριθμό δηλαδή δημιουργία δύο ομάδων φιλοσόφων. Η μία ομάδα (περιττός α/α) θα αποκτά πρώτα το δεξιό και μετά το αριστερό πηρούνι και η άλλη ομάδα (άρτιος α/α) πρώτα το αριστερό και μετά το δεξιό πηρούνι. Ένας φιλόσοφος επιτρέπεται να αποκτήσει τα πηρούνια μόνον όταν και τα δύο είναι διαθέσιμα (κρίσιμο τμήμα) - (κατοχή και αναμονή) Σχεδιασμός του συστήματος έτσι ώστε ένας φιλόσοφος να «κλέψει» ένα πηρούνι που δεν είναι γειτονικό του. Αλγόριθμος Lehmann-Rabin (non deterministic) Δες λύσεις στη Διαδιεργασιακή Επικοινωνία.