Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi



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

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

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

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

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

Ενότητα 4 (Κεφάλαιο 5) Συντρέχων Προγραμματισμός

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

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

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

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

ροµολόγηση Επεξεργαστή

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

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

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

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

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

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

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

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

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

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

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

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

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

Αδιέξοδα (Deadlocks)

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

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

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

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

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

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

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

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

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Παράλληλη Επεξεργασία

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

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

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

Σειρά Προβλημάτων 1 Λύσεις

Σειρά Προβλημάτων 1 Λύσεις

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

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

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

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

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή

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

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

Παράλληλη Επεξεργασία

Ο βασικός παράγοντας είναι ο χρόνος αξιοποίησης του επεξεργαστή Ελάχιστος αριθµός πράξεων και όχι µακρόχρονες αιτήσεις Ε/Ε

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

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

Προβλήματα Συγχρονισμού (με ελεγκτή) Ταυτόχρονος Προγραμματισμός 1

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

Δομές ελέγχου ροής προγράμματος

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

Επικοινωνία Διεργασιών (ΙnterProcess Communication, IPC)

Χρονοπρογραµµατισµός ιεργασιών (Process Scheduling)

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Ε-85: Ειδικά Θέµατα Λογισµικού

Ποια ιδιότητα αϖό τις δύο τελευταίες είναι ϖιο ισχυρή;

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Υλοποίηση Σηματοφόρων

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

ENOTHTA 3 ΣYNTPEXΩN ΠPOΓPAMMATIΣMOΣ

Κατανεμημένα Συστήματα

Βασικά Στοιχεία της Java

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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


Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 12 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα ΜηχανικώνΗ/Υ, Τηλεπικοινωνιών και ικτύων

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Εισαγωγή στον Προγραμματισμό

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

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

Transcript:

Προϋποθέσεις για Αµοιβαίο Αποκλεισµό Μόνο µία διεργασία σε κρίσιµο τµήµασεκοινό πόρο Μία διεργασία που σταµατά σε µη κρίσιµο σηµείο δεν πρέπει να επιρεάζει τις υπόλοιπες διεργασίες εν πρέπει να υπάρχει κατάσταση αδιεξόδου ή παρατεταµένης στέρησης για µια διεργασία που θέλει να εισέλθει στο κρίσιµο τµήµα της Μια διεργασία δεν πρέπει να καθυστερείτε να εισέλθει στο κρίσιµο τµήµα της αν δεν βρίσκεται κάποια άλλη διεργασία σε κρίσιµο τµήµα εν πρέπει να γίνονται υποθέσεις για την σχετική ταχύτητα των διεργασιών Μια διεργασία εκτελεί κρίσιµο τµήµαγια ορισµένο χρονικό διάστηµα

Συνρουτίνα(Coroutine) Σχεδιασµένες να ανταλλάσσουν µεταξύ τους τον έλεγχο της εκτέλεσης ενεπαρκούνγιατηνυποστήριξη ταυτόχρονης επεξεργασίας

Ο Αλγόριθµος του Dekker [DJK65] Πρώτη προσπάθεια - Ενεργός Αναµονή (Busy Waiting) Η διεργασία ελέγχει συνεχώς αν µπορεί να εισέλθει στην κρίσιµη περιοχή Η διεργασία δεν µπορεί να κάνει κάτι παραγωγικό µέχρι να της επιτραπεί να εισέλθει στην κρίσιµη περιοχή P0 P1 while (turn!= 0) /**/; while (turn!= 1) /**/; critical section critical section turn = 1; turn = 0;

εύτερη Προσπάθεια Κάθε διεργασία ελέγχει την κατάσταση της άλλη αλλά δεν µπορεί να την αλλάξει Όταν µια διεργασία θέλει να εισέλθει στην κρίσιµη περιοχή ελέγχει την κατάσταση της άλλης Αν καµία άλλη διεργασία δεν είναι σε κρίσιµη περιοχή θέσε την κατάσταση σου για είσοδο στην κρίσιµη περιοχή Προβλήµατα Η µέθοδος δεν εξασφαλίζει αµοιβαίο αποκλεισµό Κάθε διαδικασία µπορεί να ελέγχει και να εισέρχεται στην κρίσιµη περιοχήταυτόχρονα P0 P1 while ( flag[1] ) /**/; while ( flag[0] ) /**/; flag[0] = true; flag[1] = true; Dr. Garmpis critical Aristogiannis section- EPDO critical section flag[0] = false; flag[1] = false;

Τρίτη προσπάθεια Θέσε την κατάσταση σου για είσοδο στην κρίσιµη περιοχή πριν τον έλεγχο των άλλων διεργασιών Αν κάποια άλλη διεργασία είναι σε κρίσιµη περιοχή όταν τεθεί η µεταβλητή ελέγχου, η διεργασία µπλοκάρεται µέχρι η άλλη διεργασία ελευθερώσει την κρίσιµη περιοχή Πρόβληµα Πιθανός αδιέξοδο αν και οι δύο διεργασίες θέσουν την µεταβλητή ελέγχου και εισέλθουν στην κρίσιµη περιοχή, µια και κάθε διεργασία θα περιµένει την άλλη να απελευθερώσει την κρίσιµηπεριοχή P0 P1 flag[0] = true; flag[1] = true; while ( flag[1] ) /**/; while ( flag[0] ) /**/; critical section critical section flag[0] = false; flag[1] = false;

Τέταρτη προσπάθεια Η διεργασία θέτει την µεταβλητή ελέγχου για να δείξει ότι επιθυµεί να εισέλθει στην κρίσιµη περιοχή, αλλά είναι έτοιµη να αναιρέσει Ελέγχονται οι άλλες διεργασίες. Αν βρίσκονται σε κρίσιµη περιοχή η µεταβλητή ελέγχου αναιρείται. Επανατίθεται, µέχρι να εισέλθει στην κρίσιµη περιοχή, όταν επιθυµεί να εισέλθει στην κρίσιµη περιοχή Πρόβληµα??? Μπορεί να υπάρξουν κύκλοι ενεργοποίησης και απενεργοποίησης των µεταβλητών ελέγχου P0 P1 flag[0] = true; flag[1] = true; while ( flag[1] ) while ( flag[0] ) { { flag[0] = false; flag[1] = false; delay delay flag[0] = false; flag[1] = false; } } critical section flag[0] = false; critical section flag[1] = false;

Σωστές Λύσεις Αλγόριθµος Dekker Κάθε διεργασία µπαίνει µε την σειρά της στην κρίσιµη περιοχή Αν µια διεργασία θέλει να εισέλθει στην κρίσιµη περιοχή, θέτει την µεταβλητή ελέγχου και µπορεί να περιµένει την σειρά της για να εισέλθει στην κρίσιµη περιοχή. Αλγόριθµος Peterson P0 P1 flag[0] = true; flag[1] = true; turn = 1; turn = 0; while ( flag[1] && while ( flag[0] && turn == 1 ) /**/; turn == 0 ) /**/; critical section critical section flag[0] = false; flag[1] = false;

Αµοιβαίος Αποκλεισµός: Υποστήριξη από το Υλικό Απενεργοποίηση διακοπών Μια διεργασία εκτελείται µέχρι να κάνει κλήση υπηρεσίας του Λ.Σ. ή να διακοπεί Η απενεργοποίηση των διακοπών εξασφαλίζει αµοιβαίο αποκλισµό Ο επεξεργαστής περιορίζεται στην δυνατότητα εναλλαγής διεργασιών Πολυπεξεργασία εν εξασφαλίζεται αµοιβαίος αποκλεισµός µε την απενεργοποίηση των διακοπών σε ένα επεξεργαστή

Αµοιβαίος Αποκλεισµός: Υποστήριξη από το Υλικό Ειδικές Εντολές Μηχανής Εκτελούνται σε έναν κύκλο εντολών εν επηρεάζονται από άλλες εντολές ιάβασµα και γράψιµο boolean testset (int i) { if (i == 0) {i = 1; return true;} else {return false;} }

Αµοιβαίος Αποκλεισµός: Υποστήριξη από το Υλικό Πλεονεκτήµατα Εφαρµόσιµη σεκάθεαριθµό διεργασιών και επεξεργαστών που µοιράζονται κοινή µνήµη Είναιαπλήκαιάραεύκολαελέγξιµη Μπορεί να υποστηρίξει πολλαπλές κρίσιµες περιοχές Μειονεκτήµατα Busy-waiting καταναλώνει υπολογιστικό χρόνο Υπάρχει πιθανότητα παρατεταµένης στέρησης όταν µία διεργασία βγαίνει από την κρίσιµη περιοχή και περισσότερες από µια διεργασίες περιµένουν να εισέλθουν Αδιέξοδο, αν µια διεργασία µεχαµηλότερη προτεραιότητα έχει την κρίσιµηπεριοχήκαιµία διεργασία µε µεγαλύτερη προτεραιότητα πάρει τον επεξεργαστή και περιµένει να απελευθερωθεί η κρίσιµηπεριοχή

Σηµαφόροι (Semaphores) Ειδικές µεταβλητές που ονοµάζονται σηµαφόροι χρησιµοποιούνται για σήµανση Αν µια διεργασία περιµένει για ένα σήµα, απενεργοποιείται µέχρι να σταλεί το σήµα Ηαναµονήκαιηεντολέςσήµανσης δεν διακόπτονται Χρησιµοποιείται ουρά που κρατά τις διεργασίες που περιµένουν έναν σεµαφόρο Είναι µεταβλητές µεακέραιατιµή Μπορεί να αρχικοποιηθεί σε θετική τιµή Η κατάσταση αναµονής µειώνει την τιµή του σεµαφόρου Εντολή σήµατος αυξάνουν την τιµή τουσεµαφόρου

Το πρόβληµα Παραγωγού - Καταναλωτή Ένας ή περισσότεροι παραγωγοί δηµιουργούν δεδοµένα και τα τοποθετούν σε ένα buffer Ένας καταναλωτής παίρνει δεδοµένα από τον buffer, ένα τη φορά Μόνο ένας παραγωγός ή καταναλωτής µπορεί να έχει πρόσβαση στον buffer κάθε χρονική στιγµή

Το πρόβληµα Παραγωγού - Καταναλωτή producer: while (true) { /*produce item v */ b[in] = v; in++; } consumer: while (true) { while (in <= out) /*do nothing */; w = b[out]; out++; /* consume item w */ }

Το πρόβληµα Παραγωγού Καταναλωτή µεκυκλικόbuffer producer: while (true) { /* produce item v */ while ((in + 1) % n == out) /* do nothing */; b[in] = v; in = (in + 1) % n } consumer: while (true) { while (in == out) /* do nothing */; w = b[out]; out = (out + 1) % n; /* consume item w */ }