Ιδιότητες ζωτικότητας
Η ιδιότητα της ζωτικότητας (liveness) σε μια σειρά από
παράλληλες (concurrent) διεργασίες σχετίζεται με το
ρυθμό της προόδου που επιτυγχάνεται.
Ένα σύνολο διεργασιών βρίσκεται σε
αδιέξοδο (deadlock) αν κάθε διεργασία του
συνόλου περιμένει ένα γεγονός που μόνο μια άλλη διεργασία του συνόλου
μπορεί να προκαλέσει.
(Tanenbaum)
Τα αδιέξοδα δημιουργούνται ως αποτέλεσμα της διαχείρισης των πόρων
από τις διαδικασίες.
Κάθε πόρος (resource) μπορεί να είναι
προεκχωρήσιμος (preemptable) δηλαδή να
αποδεσμευτεί από μια διεργασία που τον κατέχει χωρίς παρενέργιες ή
μη προεκχωρήσιμος (nonpreemptable).
Παραδείγματα της πρώτης κατηγορίας είναι ο δίσκος και η μνήμη.
Παραδείγματα της δεύτερης κατηγορίας είναι ο εκτυπωτής και η μονάδα ταινίας.
Τυπικά μια διεργασία χρησιμοποιεί έναν πόρο ως εξής:
- Ζητά τον πόρο από το λειτουργικό σύστημα (αίτηση χρήσης).
- Χρησιμοποιεί τον πόρο.
- Ενημερώνει το λειτουργικό σύστημα ότι δε χρειάζεται άλλο τον πόρο
(αποδέσμευση).
Οι παρακάτω συνθήκες πρέπει να ικανοποιούνται για να δημιουργηθεί
αδιέξοδο:
- Αμοιβαίος αποκλεισμός
- Κάθε πόρος είναι δεσμευμένος ή διαθέσιμος.
- Δέσμευση και αναμονή
- Διεργασίες που δεσμεύουν πόρους μπορούν να
ζητούν και νέους.
- Μη προεκχώρηση
- Μόνο η διεργασία που έχει δεσμεύσει τους πόρους μπορεί
να τους αποδεσμεύσει.
- Κυκλική αναμονή
- Οι διαδικασίες που ζητούν πόρους πρέπει να σχηματίζουν
κύκλο.
Οι τρόποι με τους οποίους αντιμετωπίζονται τα αδιέξοδα έχουν να
κάνουν με την άρση μιας από τις παραπάνω συνθήκες.