Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεἈβειρὼν Καζαντζής Τροποποιήθηκε πριν 9 χρόνια
1
1 Αδιέξοδα Μοντέλο συστήματος Χαρακτηρισμός αδιεξόδου Μέθοδοι διαχείρισης αδιεξόδων Πρόληψη Αποφυγή Ανίχνευση
2
2 Το πρόβλημα του αδιεξόδου Ένα σύνολο blocked διεργασιών καθεμία από τις οποίες κρατάει ένα πόρο και περιμένει να δεσμεύσει ένα νέο πόρο που έχει εκχωρηθεί σε άλλη διεργασία στο σύνολο. Παράδειγμα Το σύστημα έχει 2 tape drives. Οι P 1 και P 2 κρατούν, η καθεμία, από ένα tape drive και χρειάζονται, η καθεμία, από ένα drive ακόμη. Παράδειγμα semaphores A και B, που έχουν αρχικοποιηθεί στο 1. P 0 P 1 down(A);down(B) down(B);down(A)
3
3 Παράδειγμα διέλευσης γέφυρας Κίνηση μόνο προς μία κατεύθυνση. Η γέφυρα μπορεί να θεωρηθεί ώς πόρος. Εάν συμβεί αδιέξοδο, μπορεί να επιλυθεί εάν το ένα από τα αυτοκίνητα που εμπλέκονται κάνει όπισθεν (αποδόσει τους πόρους στο σύστημα και κάνει rollback). Εάν συμβεί αδιέξοδο μπορεί να επηρρεάσει περισσότερα του ενός αυτοκίνητα. Υπάρχει το ενδεχόμενο λιμοκτονίας.
4
4 Μοντέλο συστήματος Τύποι πόρων R 1, R 2,..., R m Χρόνος CPU, χώρος μνήμης, I/O συσκευές Ο κάθε τύπος πόρου R i έχει W i στιγμιότυπα. Η κάθε διεργασία χρησιμοποιεί ένα στιγμιότυπου πόρου ως εξής: Αίτηση εκχώρησης χρήση αποδέσμευση
5
5 Χαρακτηρισμός Αμοιβαίος αποκλεισμός: μόνο μία διεργασία μπορεί να χρησιμοποιεί ένα πόρο κάθε χρονική στιγμή. Δέσμευση και αναμονή: μία διεργασία που κατέχει ένα, τουλάχιστον, πόρο αναμένει και άλλους οι οποίοι βρίσκονται υπό τον έλεγχο άλλων διεργασιών. Μη προεκτόπιση: ένας πόρος μπορεί να αποδεσμευτεί μόνο εθελοντικά από την κατέχουσα διεργασία, μετά την ολοκλήρωση της εργασίας της. Κυκλική αναμονή: υπάρχει ένα σύνολο {P 0, P 1, …, P 0 } διεργασιών σε αναμονή τέτοιο ώστε η P 0 περιμένει για ένα πόρο της P 1, η P 1 περιμένει για ένα πόρο της P 2, …, η P n–1 περιμένει για ένα πόρο της P n, και η P 0 περιμένει για ένα πόρο της P 0. Μπορεί να εμφανιστεί αδιέξοδο εάν ισχύουν ταυτοχρόνως και οι 4 συνθήκες
6
6 Γράφος εκχώρησης πόρων Το V αποτελείται από δύο υποσύνολα: P = {P 1, P 2, …, P n }, το σύνολο των διεργασιών στο σύστημα. R = {R 1, R 2, …, R m }, το σύνολο των (τύπων) πόρων στο σύστημα. Ακμή αίτησης (request) – κατευθυνόμενη ακμή P 1 R j Ακμή ανάθεσης (assignment) – κατευθυνόμενη ακμή R j P i Σύνολο κορυφών V και ακμών E.
7
7 Γράφος εκχώρησης πόρων Διεργασία Πόρος με 4 στιγμιότυπα Η P i αιτείται στιγμιότυπο του R j Η P i έχει δεσμεύσει ένα στιγμιότυπο του R j PiPi PiPi RjRj RjRj
8
8 Παράδειγμα γράφου εκχώρησης πόρων
9
9 Γράφος εκχώρησης πόρων με Αδιέξοδο
10
10 Γράφος εκχώρησης πόρων με κύκλωμα αλλά χωρίς Αδιέξοδο
11
11 Συζήτηση Εάν ο γράφος δεν περιέχει κυκλώματα δεν υπάρχει αδιέξοδο. Εάν ο γράφος περιέχει κύκλωμα Εάν υπάρχει μόνο ένα στιγμιότυπο από κάθε πόρο τότε έχουμε αδιέξοδο. Εάν υπάρχον περισσότερα του ενός στιγμιότυπα σε κάθε πόρο τότε υπάρχει η πιθανότητα αδιεξόδου.
12
12 Μέθοδοι διαχείρισης αδιεξόδων Εξασφάλιση ότι το σύστημα δεν θα εισέλθει ποτέ σε κατάσταση αδιεξόδου. Επιτρέπεται στο σύστημα να εισέλθει σε κατάσταση αδιεξόδου και στην συνέχεια ακολουθούνται βήματα ανάκαμψης. Αδιαφορία για το πρόβλημα. Υπόθεση ότι δεν θα συμβεί το αδιέξοδο στο σύστημα; Στρατηγική που υιοθετείται από τα περισσότερα σύγχρονα συστήματα (π.χ., το UNIX).
13
13 Πρόληψη Αδιεξόδου Αμοιβαίος αποκλεισμός– δεν απαιτείται για διαμοιράσιμους (sharable) πόρους not required for resources; Θα πρέπει να ισχύσει για μη διαμοιράσιμους πόρους. Δέσμευση και αναμονή– θα πρέπει να υπάρξουν εγγυήσεις ότι όταν μία διεργασία αιτηθεί ένα πόρο, δεν θα πρέπει να έχει δεσμευσει άλλους πόρους. Απαίτηση από την διεργασία να αιτηθεί και να της εκχωρηθούν όλοι οι απαιτούμενοι πόροι πριν να ξεκινήσει την εκτέλεσή της, ή να επιτρέπεται στις διεργασίες να ζητούν πόρους μόνο όταν δεν έχουν ήδη δεσμεύσει άλλους. Χαμηλή εκμετάλλευση των πόρων; Πιθανή η λιμοκτονία. Περιορισμός των τρόπων με τους οποίους οι διεργασίες αιτούνται για πόρους.
14
14 Πρόληψη Αδιεξόδου Μη προεκτόπιση – Εάν μία διεργασία που διαθέτει ορισμένους πόρους αιτηθεί ένα άλλο πόρο που δεν μπορεί να εκχωρηθεί άμεσα σε αυτή, τότε όλοι οι ήδη δεσμευμένοι πόροι αποδεσμεύονται. Οι πόροι που έχουν προεκτοπιστεί προστίθενται σε μία λίστα πόρων για τους οποίους περιμένει η διεργασία. Η διεργασία θα επανεκκινηθεί όταν μπορεί να δεσμεύσει τους παλιούς της πόρους αλλά και τους πόρους που πρόσφατα ζήτησε. Κυκλική αναμονή– επιβολή μίας συνολικής διάταξης ολων των τύπων πόρων. Οι διεργασίες έχουν δικαίωμα να αιτούνται πόρους μόνο σε αύξουσα σειρά.
15
15 Αποφυγή αδιεξόδου Η κάθε διεργασία θα πρέπει να δηλώσει τον μέγιστο αριθμό πόρων από κάθε τύπο που πρόκειται να χρειαστεί. Ο αλγόριθμος αποφυγής αδιεξόδου εξετάζει δυναμικά την κατάσταση εκχώρησης πόρων για να διαπιστώσει εάν ισχύει η συνθηκη κυκλικής αναμονής. Η κατάσταση εκχώρησης πόρων καθορίζεται από τον αριθμό των διαθέσιμων και εκχωρηθέντων πόρων, καθώς και τις μέγιστες απαιτήσεις της διεργασίας. Απαιτεί την διαθεσιμότητα a priori πληροφορίας στο σύστημα:
16
16 Ασφαλής Κατάσταση Όταν μία διεργασία αιτείται ένα διαθέσιμο πόρο, το σύστημα θα πρέπει να αποφασίσει εάν η άμεση εκχώρηση αυτού αφήνει το σύστημα σε ασφαλή κατάσταση. Το σύστημα βρίσκεται σε ασφαλή κατάσταση εάν υπάρχει μία ασφαλής διαδοχή για όλες τις διεργασίες. Η διαδοχή ειναι ασφαλής εάν για κάθε P i, οι πόροι τους οποίους μπορεί συμπληρωματικά η Pi να αιτηθεί μπορούν να εκχωρηθθούν με τους διαθέσιμους πόρους καθώς και τους πόρους που χρησιμοποιούνται από όλες τις P j, j<i. Εάν οι ανάγκες σε πόρους της P i δεν είναι άμεσα διαθέσιμες, τότε η P i μπορεί να περιμένει μέχρι όλες οι P j να ολοκληρώσουν. Οταν ολοκληρώσει η P j, η P i μπορεί να δεσμεύσει τους αναγκαίους πόρους, να συνεχίσει την εκτέλεση, να επιστρέψει τους εκχωρημένους πόρους, και να ολοκληρώσει. Οταν ολοκληρώσει η P i, η P i+1 μπορεί να λάβει τους απαιτούμενους πόρους και.....
17
17 Ασφαλείς Καταστάσεις Εάν το σύστημα είναι σε ασφαλή κατάσταση δεν υπάρχει αδιέξοδο. Εάν το σύστημα δεν βρίσκεται σε ασφαλή κατάσταση υπάρχει η πιθανότητα αδιεξόδου. Αποφυγή πρέπει να διασφαλιστεί ότι το σύστημα δεν θα μπεί ποτέ σε μη ασφαλή κατάσταση.
18
18 Αλγόριθμος γράφου εκχώρησης πόρων Ακμή διεκδίκησης (Claim) P i R j δεικνύει ότι η P j μπορεί να αιτηθεί τον πόρο R j ; Εμφανίζεται με μία διακεκομμένη γραμμή. Η ακμή διεκδίκησης μετατρέπεται σε ακμή αίτησης όταν η διεργασία ζητάει τον πόρο. Οταν ο πόρος αποδεσμεύεται από μία διεργασία, η ακμή ανάθεσης (assignment) γίνεται ακμή διεκδίκησης. Οι πόροι θα πρέπει να ζητηθούν εκ των προτέρων (a priori) από το σύστημα.
19
19 Αποφυγή αδιεξόδου μέσω γράφου εκχώρησης πόρων
20
20 Μη ασφαλής κατάσταση σε γράφο εκχώρησης πόρων
21
21 Αλγόριθμος του τραπεζίτη Πολλαπλά στιγμιότυπα πόρων. Η κάθε διεργασία θα πρέπει να προσδιορίσει (διεκδικήσει) εκ των προτέρων (a priori) το μέγιστο των πόρων που χρειάζεται. Οταν μία διεργασία αιτείται κάποιο πόρο μπορεί να πρέπει να περιμένει. Οταν μία διεργασία λάβει όλους τους πόρους θα πρέπει να τους επιστρέψει σε πεπερασμένο χρόνο.
22
22 Δομές δεδομένων για τον Αλγόριθμο Τραπεζίτη Available: διάνυσμα μήκους m. Εάν available [j] = k, υπάρχουν k στιγμιότυπα από το είδος πόρου R j διαθέσιμα. Max: πίνακας n x m. Εάν Max [i,j] = k, τότε η διεργασία P i μπορεί να ζητήσει κατά μέγιστο k στιγμιότυπα του τύπου R j. Allocation: πίνακας n x m. Εάν Allocation[i,j] = k τότε η P i έχει ήδη δεσμεύσει k στιγμιότυπα του R j. Need: πίνακας n x m. Εάν Need[i,j] = k, τότε η P i μπορεί να χρειαστεί ακόμη k στιγμιότυπα R j για να ολοκληρώσει. Need [i,j] = Max[i,j] – Allocation [i,j]. n = πλήθος διεργασιών, m = είδη πόρων.
23
23 Αλγόριθμος ελέγχου ασφαλούς κατάστασης 1.Τα Work & Finish είναι διανύσματα μήκους m & n, αντίστοιχα. Αρχικοποιούνται: Work = Available Finish [i] = false για i=1,2,3, …, n. 2.Βρές i τέτοιο ώστε να ισχυουν και οι δύο παρακάτω συνθήκες: (a) Finish [i] = false (b) Need i Work Εάν δεν υπάρχει τέτοιο i, πήγαινε στο βήμα 4. 3.Work = Work + Allocation i Finish[i] = true πήγαινε στο βήμα 2. 4.Εάν Finish [i] == true για όλα τα i, τότε το σύστημα είναι σε ασφαλή κατάσταση.
24
24 Αλγόριθμος διαχείρισης αίτησης πόρων από την διεργασίαP i Request = διάνυσμα αιτήσεων για την διεργασία P i. Εάν Request i [j] = k η διεργασία P i αιτείται k στιγμιότυπα από τον πόρο R j. 1.Εάν Request i Need i πήγαινε στο βήμα 2. Διαφορετικά, υπάρχει σφάλμα εφόσον η διεργασία ξεπέρασε το μέγιστο επιτρεπτό όριο διεκδίκησης πόρων. 2.Εάν Request i Available, πήγαινε στο βήμα 3. Διαφορετικά η P i θα πρέπει να περιμένει, εφόσον δεν υπάρχουν διαθέσιμοι πόροι. 3.Υποθέτουμε ότι οι πόροι εκχωρούνται στην P i. Η συνολική εικόνα τροποποείται ως εξής: Available = Available = Request i ; Allocation i = Allocation i + Request i ; Need i = Need i – Request i;; Εάν η κατάσταση είναι ασφαλής οι πόροι ανατίθενται στην P i. Εάν η κατάσταση δεν είναι ασφαλής η P i πρέπει να περιμένει και η αποκαθίστατι η προηγούμενη κατάσταση.
25
25 Παράδειγμα του αλγορίθμου Τραπεζίτη 5 διεργασίες P 0... P 4 ; 3 τύποι πόρων A (10 στιγμιότυπα), B (5 στιγμιότυπα), και C (7 στιγμιότυπα). Εικόνα του συστήματος σε χρόνο T 0 : AllocationMaxAvailable A B CA B C A B C P 0 0 1 07 5 3 3 3 2 P 1 2 0 0 3 2 2 P 2 3 0 2 9 0 2 P 3 2 1 1 2 2 2 P 4 0 0 24 3 3
26
26 Παράδειγμα του αλγορίθμου Τραπεζίτη Το περιεχόμενο του πίνακα Need είναι Max – Allocation. Need A B C P 0 7 4 3 P 1 1 2 2 P 2 6 0 0 P 3 0 1 1 P 4 4 3 1 Το συστημα βρίσκεται σε ασφαλή κατάσταση εφόσον η ακολουθία εκτέλεσης ικανοποιεί τα σχετικά κριτήρια.
27
27 Η P 1 αιτείται (1,0,2) Ελέγχουμε εάν Request Available (δηλαδή, (1,0,2) (3,3,2) true. AllocationNeedAvailable A B CA B CA B C P 0 0 1 0 7 4 3 2 3 0 P 1 3 0 20 2 0 P 2 3 0 1 6 0 0 P 3 2 1 1 0 1 1 P 4 0 0 2 4 3 1 Η εκτέλεση του αλγορίθμου ελέγχου ασφαλούς κατάστασης δείχνει ότι η ακολουθία εκτέλεσης ικανοποιεί τις απαιτήσεις ασφαλείας. Μπορεί να ζητήσει η P 4 το διάνυσμα (3,3,0)? Μπορεί να ζητήσει η P 0 το διάνυσμα (0,2,0)?
28
28 Ανίχνευση αδιεξόδου Επιτρέπουμε στο σύστημα να μπεί σε κατάσταση αδιεξόδου Αλγόριθμος ανίχνευσης Σχήμα ανάκαμψης
29
29 Εάν στιγμότυπο από κάθε είδος πόρου Διαμόρφωση ενός wait-for γράφου (γράφος αναμονής) Οι κορυφές είναι διεργασίες. P i P j εάν η P i περιμένει την P j. Περιοδικά εκτελείται ένας αλγόριθμος που ελέγχει αν υπάρχει κύκλωμα στο γράφο. Ο αλγόριθμος για την ανίχνευση κυκλώματος απαιτεί n 2 βήματα, όπου n ο αριθμός των κορυφών στο γράφημα.
30
30 Γράφος εκχώρησης πόρων και γράφος αναμονής Γράφος εκχώρησης πόρων Αντίστοιχος γράφος αναμονής
31
31 Πολλαπλά στιγμιότυπα πόρων Available: διάνυσμα μήκους m που δείχνει τον αριθμό των διαθέσιμων πόρων κάθε τύπου. Allocation: Πίνακας n x m που καθορίζει τον αριθμό των πόρων κάθε τύπου που έχουν ήδη εκχωρηθεί σε κάθε διεργασία. Request: Πινακας n x m που δείχνει την τρέχουσα αίτηση της κάθε διεργασίας. Εάν Request [i j ] = k, τότε η διεργασία P i ζητάει k επιπλέον στιγμιότυπα από το είδος πόρου R j.
32
32 Αλγόριθμος ανίχνευσης 1.Τα Work και Finish είναι διανύσματα μήκους m και n, αντίστοιχα. Αρχικοποίηση: (a) Work = Available (b)For i = 1,2, …, n, if Allocation i 0, then Finish[i] = false; otherwise, Finish[i] = true. 2.Βρές i τέτοιο ώστε να ισχύουν και οι δύο παρακάτω συνθήκες: (a)Finish[i] == false (b)Request i Work Εάν δεν υπάρχει τέτοιο i, πήγαινε στο βήμα 4.
33
33 Αλγόριθμος ανίχνευσης 3.Work = Work + Allocation i Finish[i] = true πήγαινε στο βήμα 2. 4.Εάν Finish[i] == false, για κάποιο i, 1 i n, τότε το σύστημα είναι σε αδιέξοδο. Επίσης, εάν Finish[i] == false, τότε η P i είναι σε αδιέξοδο. Ο αλγόριθμος ανίχνευσης έχει πολυπλοκότητα τάξης O(m x n 2 ).
34
34 Παράδειγμα αλγορίθμου ανίχνευσης Πέντε διεργασίες P 0.... P 4 ; 3 τύποι πόρων: A (7 στιγμιότυπα), B (2 στιγμιότυπα), και C (6 στιγμιότυπα). Κατάσταση συστήματος σε χρόνο T 0 : AllocationRequestAvailable A B C A B C A B C P 0 0 1 0 0 0 0 0 0 0 P 1 2 0 0 2 0 2 P 2 3 0 30 0 0 P 3 2 1 1 1 0 0 P 4 0 0 2 0 0 2 Η ακολουθία θα καταλήξει σε Finish[i] = true για όλα τα i.
35
35 Παράδειγμα Εάν η P 2 ζητήσει ένα ακόμη στιγμιότυπο τύπου C. Request A B C P 0 0 0 0 P 1 2 0 1 P 2 0 0 1 P 3 1 0 0 P 4 0 0 2 Ποια είναι η κατάσταση του συστήματος? Υπάρχει αδιέξοδο που εμπλέκει τις διεργασίες P 1, P 2, P 3, και P 4.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.