You are on page 1of 22

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

Μάθημα: Λειτουργικά Συστήματα Ι

ΑΔΙΕΞΟΔΑ

Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης


clam@unipi.gr

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 1

ΑΔΙΕΞΟΔΑ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 2

1
ΠΟΡΟΙ

• Υπάρχουν δύο τύποι πόρων σε υπολογιστικά


συστήματα:
– Προεκτοπίσιμοι πόροι (preemptable resources): είναι οι
πόροι που μπορούν να αποδεσμευτούν από τη διεργασία
που τους κατέχει, χωρίς αρνητικές επιπτώσεις στο σύστημα
(π.χ. μνήμη)
– Μη-προεκτοπίσιμοι πόροι (non-preemptable resources):
είναι οι πόροι που δε μπορούν να αποδεσμευτούν από τη
διεργασία που τους κατέχει, χωρίς αρνητικές επιπτώσεις
στο σύστημα (π.χ. εκτυπωτής).
– Αδιέξοδα (deadlocks) συμβαίνουν μεταξύ διεργασιών με
μη προεκτοπίσιμους πόρους, αφού σε αιτήσεις για
προεκτοπίσιμους πόρους το πρόβλημα επιλύεται με
ανακατανομή των πόρων μεταξύ των διεργασιών.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 3

ΑΔΙΕΞΟΔΑ

• Πότε έχουμε αδιέξοδο;

• Ένα σύνολο διεργασιών βρίσκεται σε αδιέξοδο


(deadlock), αν κάθε διεργασία του συνόλου περιμένει
ένα γεγονός που μόνο μια άλλη διεργασία του ίδιου
συνόλου μπορεί να προκαλέσει.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 4

2
ΑΔΙΕΞΟΔΑ

Συνθήκες Αδιεξόδου
• Για να οδηγηθούμε σε αδιέξοδο πρέπει να ικανοποιούνται
οπωσδήποτε και οι τέσσερις ακόλουθες συνθήκες:
– Συνθήκη αμοιβαίου αποκλεισμού: κάθε πόρος είτε είναι δεσμευμένος από
μία διεργασία, είτε είναι διαθέσιμος.
– Συνθήκη δέσμευσης και αναμονής: διεργασίες που δεσμεύουν πόρους που
τους εκχωρήθηκαν νωρίτερα, μπορούν να ζητούν και νέους.
– Συνθήκη μη προεκτόπισης: πόροι που έχουν εκχωρηθεί σε μια διεργασία
μπορούν να απομακρυνθούν από τον έλεγχό της, μόνον αν τους
αποδεσμεύσει αυτή.
– Συνθήκη κυκλικής αναμονής: πρέπει να υπάρχει μια κυκλική αλυσίδα
δύο ή περισσότερων διεργασιών, καθεμία από τις οποίες περιμένει έναν
πόρο που είναι δεσμευμένος από το επόμενο μέλος της αλυσίδας.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 5

ΑΔΙΕΞΟΔΑ

Μοντελοποίηση Αδιεξόδου
– Οι αναγκαίες συνθήκες για την επίτευξη αδιεξόδου μπορούν να
μοντελοποιηθούν με χρήση κατευθυνόμενων γράφων.

• O πόρος R έχει αποδοθεί στην διαδικασία Α


• Διαδικασία B περιμένει για τον πόρο S
• Οι διαδικασίες C και D βρίσκονται σε αδιέξοδο
Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 6

3
ΑΔΙΕΞΟΔΑ

• Οι γράφοι πόρων αποτελούν εργαλείο που μας


επιτρέπει να εξετάσουμε αν μια συγκεκριμένη σειρά
απαιτήσεων και αποδεσμεύσεων οδηγεί σε αδιέξοδο.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 7

ΑΔΙΕΞΟΔΑ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 8

4
ΑΔΙΕΞΟΔΑ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 9

ΑΔΙΕΞΟΔΑ

• Για την αντιμετώπιση του προβλήματος του


αδιεξόδου χρησιμοποιούνται οι ακόλουθες
στρατηγικές:
– Απλή αγνόηση του προβλήματος (ignore the problem)
– Ανίχνευση και επανόρθωση (detection and recovery)
– Δυναμική αποφυγή με προσεκτική κατανομή πόρων
(dynamic avoidance)
– Πρόληψη, με συστηματική αναίρεση μιας από τις τέσσερις
αναγκαίες συνθήκες (prevention).

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 10

5
ΑΛΓΟΡΙΘΜΟΣ ΑΓΝΟΗΣΗΣ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ

• Η απλούστερη προσέγγιση είναι η αγνόηση του προβλήματος,


γνωστή ως αλγόριθμος της στρουθοκαμήλου (the ostrich
algorithm).
• Για παράδειγμα, στο σύστημα UNIX, αν μια κλήση FORK
αποτύχει επειδή ο πίνακας διεργασιών είναι πλήρης, το
πρόγραμμα που καλεί τη FORK περιμένει για τυχαίο χρονικό
διάστημα και ξαναπροσπαθεί.
• Εκτιμάται ότι η αγνόηση του προβλήματος και η αποδοχή
περιστασιακού αδιεξόδου είναι προτιμότερη από την ύπαρξη
κανόνα περιορισμού.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 11

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Στα πλαίσια της στρατηγικής αυτής, το σύστημα δε


δρα προληπτικά, αλλά χρησιμοποιεί μηχανισμούς
ανίχνευσης (detection) και ακολούθως επανόρθωσης
(recovery) του προβλήματος.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 12

6
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Ανίχνευση αδιεξόδου με έναν πόρο από κάθε είδος


– Θεωρούμε συστήματα με έναν πόρο από κάθε είδος.
– Παράδειγμα αντίστοιχου πολύπλοκου συστήματος
περιγράφεται στο επόμενο σχήμα με επτά διεργασίες και έξι
πόρους.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 13

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 14

7
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Ο γράφος των πόρων και διεργασιών περιέχει έναν


κύκλο, στον οποίο οπτικά φαίνεται ότι υπάρχει
αδιέξοδο. Απαιτείται όμως τυπικός αλγόριθμος που θα
ελέγχει την ύπαρξη κύκλων σε κατευθυνόμενους
γράφους.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 15

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Ακολούθως περιγράφεται ένας απλός αλγόριθμος που


εξετάζει γράφους και τερματίζεται: είτε όταν
εντοπίσει έναν κύκλο, είτε όταν αποδείξει ότι δεν
υπάρχει κανένας κύκλος.
– [1] Για κάθε κόμβο Κ του γράφου εκτέλεσε τα 5 ακόλουθα
βήματα με τον Κ ως αρχικό κόμβο.
– [2] Αρχικοποίησε τη Λ ως κενή λίστα και όλα τα τόξα ως
ασημάδευτα.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 16

8
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

– [3] Πρόσθεσε τον τρέχοντα κόμβο στο τέλος της Λ. Αν ο κόμβος εμφανίζεται
τώρα στη λίστα δύο φορές, τότε ο γράφος περιέχει έναν κύκλο που περιέχεται
στη Λ και ο αλγόριθμος τερματίζεται.
– [4] Από τον τρέχοντα κόμβο, έλεγξε αν υπάρχουν ασημάδευτα τόξα. Αν
υπάρχουν πήγαινε στο βήμα 5. Αν δεν υπάρχουν, πήγαινε στο βήμα 6.
– [5] Διάλεξε τυχαία ένα ασημάδευτο εξερχόμενο τόξο και σημάδεψέ το.
Ακολούθησέ το στο νέο τρέχοντα κόμβο και πήγαινε στο βήμα 3.
– [6] Τώρα έχουμε φτάσει σε έναν κόμβο χωρίς ασημάδευτα εξερχόμενα τόξα.
Πήγαινε πίσω στον προηγούμενο κόμβο, δηλαδή σε αυτόν που ήταν τρέχων
προηγουμένως, κάνε τον τρέχοντα και πήγαινε στο βήμα 3. Αν ο κόμβος αυτός
είναι ο αρχικός, τότε ο γράφος δεν περιέχει κύκλους και ο αλγόριθμος
τερματίζεται.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 17

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Ανίχνευση αδιεξόδου με πολλούς πόρους από κάθε είδος


• Υποθέτουμε ότι έχουμε:
– ν διεργασίες, Δ1 έως Δν
– μ κατηγορίες πόρων, με E1 πόρους κατηγορίας 1, E2
πόρους κατηγορίας 2 και γενικά Ei πόρους κατηγορίας
i (1<= i <= μ). Το E καλείται διάνυσμα υπαρχόντων
πόρων (existing resource vector) και εκφράζει το
συνολικό αριθμό στιγμιότυπων κάθε πόρου.
• π.χ. αν η κατηγορία 1 είναι οι μονάδες ταινίας, τότε αν το
σύστημα έχει δύο μονάδες ταινίας γράφουμε E1=2.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 18

9
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

– Ai είναι ο αριθμός των στιγμιότυπων του πόρου i- που


είναι διαθέσιμα την τρέχουσα χρονική στιγμή. Με A
συμβολίζουμε το διάνυσμα διαθέσιμων πόρων (available
resource vector).
• π.χ. αν και οι δύο μονάδες ταινίας έχουν εκχωρηθεί, τότε A1=0.
– C ονομάζεται πίνακας τρέχουσας κατανομής (current
allocation matrix) και η i-γραμμή του δείχνει πόσα
στιγμιότυπα κάθε κατηγορίας πόρων είναι δεσμευμένα
από τη διεργασία Δi τη στιγμή αυτή.
• π.χ. Ciκ είναι ο αριθμός των στιγμιότυπων του κ-πόρου που είναι
δεσμευμένα από τη διεργασία Δi την τρέχουσα χρονική στιγμή.
– R ονομάζεται πίνακας αιτήσεων (request matrix) και η i-
γραμμή του δείχνει πόσα στιγμιότυπα κάθε κατηγορίας
πόρων αιτείται η διεργασία Δi τη στιγμή αυτή.
• π.χ. Riκ είναι ο αριθμός των στιγμιότυπων του κ-πόρου που αιτείται η
Δi την τρέχουσα χρονική στιγμή.
Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 19

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 20

10
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Προφανώς, τα στιγμιότυπα του κ-πόρου που έχουν


εκχωρηθεί, αν προστεθούν στα στιγμιότυπα που είναι
διαθέσιμα, το αποτέλεσμα δίνει τον αριθμό των υπαρχόντων
στιγμιότυπων αυτής της κατηγορίας πόρων.
• Άρα:
ν
Σ ( Ciκ + Aκ ) = Eκ
i=1

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 21

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Όλες οι διεργασίες θεωρούνται αρχικά


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

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 22

11
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Ο αλγόριθμος ανίχνευσης αδιεξόδου διατυπώνεται ως εξής:


– [1] Ψάξε για μία ασημάδευτη διεργασία Δi για την οποία η i-στή γραμμή
του πίνακα R είναι μικρότερη από τον πίνακα A.
– [2] Αν βρεθεί τέτοια διεργασία, πρόσθεσε την i-στή γραμμή του C στον
R, σημάδεψε τη διεργασία και πήγαινε πάλι στο πρώτο βήμα 1.
– [3] Αν δεν υπάρχει τέτοια διεργασία, ο αλγόριθμος τερματίζεται.
• Η ολοκλήρωση του αλγορίθμου αφήνει ασημάδευτες όλες τις
διεργασίες που βρίσκονται σε αδιέξοδο.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 23

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 24

12
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

0 0

Μετά το τέλος της διεργασίας 3:


A = (2 2 2 0)

2 2 0 0

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 25

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Το ερώτημα που παραμένει είναι πότε πρέπει να


γίνεται η ανίχνευση του πιθανού αδιεξόδου.
• Η ανίχνευση θα μπορούσε να γίνεται:
– κάθε φορά που γίνεται αίτηση χρήσης πόρου
– σε τακτά χρονικά διαστήματα
– όταν η αξιοποίηση της CPU ελαττωθεί κάτω από κάποια
τιμή κατωφλίου.
• Σε αδιέξοδο η χρήση της CPU είναι μικρή

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 26

13
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Επανόρθωση από αδιέξοδο

• Επανόρθωση μέσω προεκχώρησης


– Σε μερικές περιπτώσεις είναι δυνατό να απομακρυνθεί
ένας πόρος, προσωρινά, από την κατέχουσα διεργασία
και να εκχωρηθεί σε άλλη.
– Η επανόρθωση με αυτόν τον τρόπο είναι συχνά ανέφικτη
και απαιτεί εξωτερική ανθρώπινη δραστηριότητα.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 27

ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Επανόρθωση μέσω οπισθοδρόμησης


– Αν οι σχεδιαστές γνωρίζουν ότι συμβαίνουν συχνά
αδιέξοδα, τότε αξιοποιούνται περιοδικά σημεία ελέγχου
(checkpoints).
– Αποθήκευση:
• Εικόνα της μνήμης
• Κατάσταση των πόρων
– Επιστροφή της διεργασίας σε προηγούμενο χρονικό
σημείο
• Ο πόρος έχει αποδεσμευτεί και η διεργασία αναμένει μέχρι να
γίνει ξανά διαθέσιμος

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 28

14
ΑΝΙΧΝΕΥΣΗ ΚΑΙ ΕΠΑΝΟΡΘΩΣΗ ΑΔΙΕΞΟΔΟΥ

• Επανόρθωση μέσω εξάλειψης διεργασιών


– Ο κλασικότερος τρόπος είναι η εξάλειψη μιας ή
περισσότερων διεργασιών. Η διεργασία αυτή μπορεί να
είναι είτε εκτός κύκλου, είτε διεργασία του κύκλου.

• Σε κάθε περίπτωση προτιμούνται διεργασίες που


μπορούν να επανεκτελεστούν χωρίς παρενέργειες.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 29

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Τροχιές πόρων
• Μέχρι τώρα έχουμε υποθέσει ότι όταν μια διεργασία ζητάει κάποιους
πόρους τους ζητάει όλους μαζί.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 30

15
ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Ασφαλείς και ανασφαλείς καταστάσεις


– Μια κατάσταση καλείται ασφαλής, αν το σύστημα δε
βρίσκεται σε αδιέξοδο και υπάρχει τρόπος να ικανοποιηθούν
όλες οι εκκρεμείς αιτήσεις με την εκτέλεση όλων των
διεργασιών με κάποια διαδοχή.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 31

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

– Μια ανασφαλής κατάσταση δεν είναι κατάσταση


αδιεξόδου.
– Η διαφορά μεταξύ ασφαλούς και ανασφαλούς
κατάστασης είναι ότι από την ασφαλή κατάσταση το
σύστημα μπορεί εγγυημένα να εκτελέσει όλες τις
διεργασίες μέχρι το τέλος τους, ενώ από την ανασφαλή
κατάσταση δεν μπορεί να υπάρξει τέτοια διασφάλιση.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 32

16
ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Ο Αλγόριθμος του Τραπεζίτη για πόρους ενός


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

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 33

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

Ασφαλής Ασφαλής Ανασφαλής

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 34

17
ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Ο Αλγόριθμος του Τραπεζίτη για πόρους πολλών


ειδών

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 35

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

– Για να αποφασίσει αν μια κατάσταση είναι ασφαλής, ο


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

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 36

18
ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Ο αλγόριθμος που ελέγχει αν μια κατάσταση είναι ασφαλής


είναι ο ακόλουθος:
– [1] Ψάξε για μια γραμμή, R, της οποίας οι επιπλέον απαιτήσεις σε
πόρους είναι μικρότερες ή ίσες από A. Αν δεν υπάρχει τέτοια
γραμμή, τότε το σύστημα θα οδηγηθεί σε αδιέξοδο αφού δεν
υπάρχει διεργασία που να μπορεί να εκτελεστεί μέχρι το τέλος της.
– [2] Θεώρησε ότι η διεργασία της γραμμής που βρέθηκε, ζητά όλους
τους πόρους που χρειάζεται και εκτελείται μέχρι το τέλος της.
Σημάδεψε αυτή τη διεργασία ως τερματισμένη και πρόσθεσε όλους
τους πόρους της στο διάνυσμα Α.
– [3] Επανάλαβε τα βήματα 1 και 2 μέχρι να σημαδευτούν όλες οι
διεργασίες ως τερματισμένες, περίπτωση κατά την οποία η αρχική
κατάσταση θεωρείται ασφαλής, ή μέχρι να εμφανιστεί αδιέξοδο,
οπότε η αρχική κατάσταση θεωρείται ανασφαλής.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 37

ΑΠΟΦΥΓΗ ΑΔΙΕΞΟΔΟΥ

• Στο προηγούμενο παράδειγμα η κατάσταση είναι ???


• Αποδεχόμαστε αίτηση του Β για έναν σαρωτή...
Καταλήγουμε σε ασφαλή κατάσταση ??
• Αποδεχόμαστε επιπλέον αίτηση του Ε για ένα
σαρωτή...Καταλήγουμε σε ασφαλή κατάσταση???
• Ο αλγόριθμος του τραπεζίτη είναι επαρκέστατος θεωρητικά
για την αποφυγή αδιεξόδου. Στην πραγματικότητα δε
χρησιμοποιείται, αφού:
– οι διεργασίες σπανίως γνωρίζουν από πριν τις ανάγκες τους σε
πόρους
– ο αριθμός των διεργασιών είναι μεταβαλλόμενος
– πόροι που θεωρούνται διαθέσιμοι μπορεί ξαφνικά να εξαλειφθούν.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 38

19
ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ

Συνθήκη αμοιβαίου αποκλεισμού:


αποκλεισμού: κάθε πόρος είτε είναι
δεσμευμένος από μία διεργασία,
διεργασία, είτε είναι διαθέσιμος

• Αναίρεση της συνθήκης αμοιβαίου αποκλεισμού


– Προφανώς δε θα έχουμε ποτέ αδιέξοδο, αν κανένας
πόρος δεν εκχωρηθεί αποκλειστικά σε μία μόνο
διεργασία
– Το παράδειγμα όμως, του ετεροχρονιστή εκτύπωσης, με
τη μόνη διεργασία που ζητά το φυσικό εκτυπωτή να
είναι ο δαίμονας του εκτυπωτή (printer daemon), δεν
είναι εύκολο να ακολουθηθεί και αλλού.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 39

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ

Συνθήκη δέσμευσης και αναμονής:


αναμονής: διεργασίες που δεσμεύουν
πόρους που τους εκχωρήθηκαν νωρίτερα,
νωρίτερα, μπορούν να ζητούν και
νέους
• Αναίρεση της συνθήκης δέσμευσης και αναμονής
– Για να αποτρέψουμε τις διεργασίες από τη δέσμευση των
πόρων που κατέχουν όσο περιμένουν άλλους, θα
μπορούσαμε να υποχρεώνουμε τις διεργασίες να ζητούν
προκαταβολικά όλους τους πόρους που θα θελήσουν.
– Οι διεργασίες όμως δε γνωρίζουν πόσους πόρους θα
χρειασθούν πριν την έναρξη της εκτέλεσής τους.
– Θα μπορούσαμε, βεβαίως, να υποχρεώνουμε τη
διεργασία που ζητά έναν πόρο να απελευθερώνει
προσωρινά όλους τους πόρους που κατέχει και να
προσπαθεί να τους ξαναπάρει όλους μαζί πίσω.
Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 40

20
ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ

Συνθήκη μη προεκχώρησης:
προεκχώρησης: πόροι που έχουν εκχωρηθεί σε μια
διεργασία μπορούν να απομακρυνθούν από τον έλεγχό της,
της,
μόνον αν τους αποδεσμεύσει αυτή.
αυτή.

• Αναίρεση της συνθήκης μη προεκχώρησης


– Είναι περίπτωση συνήθως αδύνατη να υλοποιηθεί.
– Θεωρείστε μια διεργασία που έχει δεσμεύσει τον εκτυπωτή
• Είναι στο ενδιάμεσο της εκτύπωσης
• Τι θα προκαλέσει η αποδέσμευση του εκτυπωτή;

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 41

ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ

Συνθήκη κυκλικής αναμονής:


αναμονής: πρέπει να υπάρχει μια κυκλική αλυσίδα δύο ή
περισσότερων διεργασιών,
διεργασιών, καθεμία από τις οποίες περιμένει έναν πόρο που
είναι δεσμευμένος από το επόμενο μέλος της αλυσίδας.
αλυσίδας.
• Αναίρεση της συνθήκης κυκλικής αναμονής
• Θα μπορούσαμε να πετύχουμε αναίρεση της κυκλικής αναμονής με τους
εξής τρόπους:
– Με την ύπαρξη κανόνα που να υποχρεώνει τις διεργασίες στη
δέσμευση ενός μόνον πόρου κάθε χρονική στιγμή, οπότε αν
χρειασθεί και δεύτερο θα πρέπει να αποδεσμεύει τον πρώτο (δεν
είναι πάντα εφικτό)
– Με τη γενική απαρίθμηση όλων των πόρων. Στην περίπτωση αυτή
ο κανόνας είναι: οι διεργασίες μπορούν να ζητούν πόρους όποτε
επιθυμούν, αλλά όλες οι αιτήσεις πρέπει να γίνονται με
συγκεκριμένη αριθμητική σειρά.

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 42

21
ΠΡΟΛΗΨΗ ΑΔΙΕΞΟΔΟΥ

• Συνοπτικά, οι προσεγγίσεις πρόληψης αδιεξόδων


περιγράφεται στο ακόλουθο σχήμα

Συνθήκη Προσέγγιση

Αμοιβαίος Αποκλεισμός Ετεροχρονισμός

Δέσμευση & Αναμονή Αρχική ζήτηση όλων των


πόρων
Μη προεκχώρηση Απομάκρυνση των πόρων

Κυκλική Αναμονή Απαρίθμηση των πόρων

Λειτουργικά Συστήματα Ι – Επ. Καθ. Κ. Λαμπρινουδάκης 43

22

You might also like