Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Προσομοίωση Απλού Μοντέλου Markov σε
Advertisements

ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΕΡΓΑΣΙΩΝ
Προγραμματισμός Ι (αποφύγετέ τον!) 3) Διακοπτόμενος βρόχος: (αποφύγετέ τον!) float energy;......while(TRUE){drink_water(); if(energy
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΥΠΟΡΟΥΤΙΝΕΣ
Αλγόριθμοι Αναζήτησης
Η επιστήμη των υπολογιστών
Λειτουργικά Συστήματα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Λειτουργικό Σύστημα 2ο μέρος.
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
PL/SQL.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
5. Αμοιβαίος αποκλεισμός
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 3: Δείκτες Εαρινό εξάμηνο 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ι. Σαρρής, τηλ.
Λειτουργικά Συστήματα ΑΔΙΕΞΟΔΑ. 3.1 Εισαγωγή  Αδιέξοδο = ένα σύνολο από διεργασίες που δημιουργούν μια κυκλική αλυσίδα όπου κάθε process στην αλυσίδα.
Ενότητα Η Δομή Επανάληψης
Γνωριμία με το Scratch.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
Τυχαιοκρατικοί Αλγόριθμοι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης.
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Σχεδίαση αλγορίθμων (2ο μέρος)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
Κατανεμημένα Συστήματα με Java Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
Αλγόριθμοι 2.1.1,
Το Scratch και ο σχεδιασμός γεωμετρικών σχημάτων
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Το Scratch και ο σχεδιασμός γεωμετρικών σχημάτων
Ελεύθερη πτώση ΓεωργίαΕιρήνη Δημοτικό Σχολείο Αγίου Αντωνίου.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Επαλήθευση Πρωτοκόλλων. Περίληψη Προδιαγραφή και επαλήθευση Πρωτοκόλλων  Μηχανές Πεπερασμένων Καταστάσεων (Finite State Machines)  Petri-Nets.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Λειτουργικά Συστήματα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Εντολές Επιλογής και Αποφάσεων
Οι εντολές επανάληψης Σε πολλά προβλήματα απαιτείται η επανάληψη ενός συνόλου ενεργειών προκειμένου να λυθεί το πρόβλημα. Θα αναφέρουμε δύο χαρακτηριστικά.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Τυπικές Μέθοδοι Ανάλυσης Συστημάτων Ζαγκαρέτος ΛεωνίδαςΑ.Μ. 139 Καραγεώργου ΒασιλικήΑ.Μ. 142 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Πληροφορικής.
1 Αδιέξοδα Μοντέλο συστήματος Χαρακτηρισμός αδιεξόδου Μέθοδοι διαχείρισης αδιεξόδων Πρόληψη Αποφυγή Ανίχνευση.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
1 State Diagrams. 2 Τα διαγράμματα καταστάσεων (State diagrams) χρησιμοποιούνται: Για να βοηθήσουν στην ανάπτυξη ενός συστήματος Για να βοηθήσουν στην.
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη. Αθήνα, 2015.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Συγχρονισμός Διεργασιών
Εφαρμογές Υπολογιστών
Τι είναι διεργασία Ένα πρόγραμμα σε εκτέλεση Η διεργασία περιλαμβάνει:
Ενισχυτική διδασκαλία
Βασικά Μοντέλα και Έννοιες Διεργασιών
Βελτιστοποίηση σε τρίλιζα Καταδίωξη/διαφυγή
Λειτουργικά Συστήματα και Ασφάλεια Πληροφοριακών Συστημάτων ΔΙΕΡΓΑΣΙΕΣ
ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ» Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της.
Αµοιβαίος αποκλεισµός
ΔΙΕΡΓΑΣΙΕΣ.
Άσκηση Pipeline 1 Δεδομένα Έχουμε ένα loop... Rep: lw $2,100($3)
ΗΥ565 Συστήματα Διαχείρισης Διεργασιών
Λειτουργικά Συστήματα Αμοιβαίος Αποκλεισμός και Λάθη
Μεταγράφημα παρουσίασης:

Πρωτόκολλο αμοιβαίου αποκλεισμού (mutual exclusion) για δύο διεργασίες-CPN Tools Νάνος Λέανδρος 156 Τζιαλαμάνη Βιργινία 166

Πρόβλημα  Δύο διεργασίες εκτελούν μέσα σε ένα ατέρμονο βρόχο (loop) μία σειρά εντολών που χωρίζονται σε τμήματα κώδικα: το κρίσιμο τμήμα κώδικα (critical section) το μη κρίσιμο τμήμα (non critical section).  Το πρόγραμμα πρέπει να ικανοποιεί την ιδιότητα του αμοιβαίου αποκλεισμού: οι εντολές των κρίσιμων τμημάτων των διεργασιών δεν πρέπει κατά την εκτέλεση να παρεμβάλλονται μεταξύ τους.

Πρόβλημα loop Non_Critical_Section; Pre_Protocol; Critical_Section; Post_Protocol; end loop;  Οι λύσεις που έχουν προταθεί περιγράφονται με την εισαγωγή στο loop επιπλέον εντολών, που εκτελούνται από την υποκείμενη διεργασία κάθε φορά που αυτή εισέρχεται (Pre_Protocol) ή εξέρχεται από το κρίσιμο τμήμα (Post_Protocol)

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

Απαιτήσεις Προβλήματος  Δεν πρέπει να υπάρχει πιθανότητα «λιμοκτονίας» (starvation) για καμία από τις δύο διεργασίες. Αν μία διεργασία εκδηλώσει την πρόθεσή της να εισέλθει στο κρίσιμο τμήμα ξεκινώντας την εκτέλεση του Pre_Protocol τότε πρέπει τελικά αυτό να επιτυγχάνεται.  Σε περίπτωση που δεν υπάρχει ανταγωνισμός για το κρίσιμο τμήμα, η διεργασία που αιτείται προσπέλαση στο κρίσιμο τμήμα μπορεί να την επιτύχει.

Λύσεις που προτάθηκαν  Κατά καιρούς έχουν προταθεί διάφοροι αλγόριθμοι για την αντιμετώπιση του προβλήματος του αμοιβαίου αποκλεισμού δύο διεργασιών  Σε αυτούς: Η προσπέλαση και αποθήκευση τιμών θεωρούμαι ότι εκτελούνται ατομικά Οι μεταβλητές δηλώνονται ως καθολικές μεταβλητές και για τις 2 διεργασίες Σε περίπτωση προσπέλασης και αποθήκευσης που εκτελούνται ταυτόχρονα το αποτέλεσμα είναι να παρεμβάλλεται η μία με την άλλη σε τυχαία σειρά.

1 ος Αλγόριθμος task body P1 is begin loop Non_Critical_Section_1; loop exit when Turn=1; end loop; Critical_Section_1; Turn:=2; end loop; end P1; task body P2 is begin loop Non_Critical_Section_2; loop exit when Turn=2; end loop; Critical_Section_2; Turn:=1; end loop; end P2;  Εισάγουμε την μεταβλητή Turn (αρχική τιμή 1). Η Turn μπορεί να πάρει τιμές 1 ή 2 που δηλώνουν τον αριθμό της διεργασίας που έχει σειρά να εισέλθει στο κρίσιμο τμήμα  Όταν δεν υπάρχει ανταγωνισμός για το ποια διεργασία θα μπει στο κρίσιμο τμήμα, τότε μια διεργασία που θέλει να μπει μπορεί και να μην το πετύχει

2 ος Αλγόριθμος task body P1 is begin loop Non_Critical_Section_1; loop exit when C2=1; end loop; C1:=0; Critical_Section_1; C1:=1; end loop; end P1; task body P2 is begin loop Non_Critical_Section_2; loop exit when C1=1; end loop; C2:=0; Critical_Section_2; C2:=1; end loop; end P2;  Δηλώνουμε τις καθολικές μεταβλητές C1 και C2 (αρχικές τιμές C1=1 και C2=1). Όταν Ci=0 η διεργασία i αιτείται είσοδο στο κρίσιμο τμήμα  Δεν ικανοποιείται η ιδιότητα του αμοιβαίου αποκλεισμού καθώς και οι δύο διεργασίες μπορούν να εισέλθουν στο κρίσιμο τμήμα μαζί

3 ος Αλγόριθμος task body P1 is begin loop Non_Critical_Section_1; C1:=0; loop exit when C2=1; end loop; Critical_Section_1; C1:=1; end loop; end P1; task body P2 is begin loop Non_Critical_Section_2; C2:=0; loop exit when C1=1; end loop; Critical_Section_2; C2:=1; end loop; end P2;  Η διαφορά με την προηγούμενη περίπτωση είναι ότι η ανάθεση τιμών στις μεταβλητές Ci γίνεται πριν το loop  Αν και ικανοποιείται η ιδιότητα του αμοιβαίου αποκλεισμού, ο αλγόριθμος φτάνει σε αδιέξοδο.

4 ος Αλγόριθμος task body P1 is begin loop Non_Critical_Section_1; C1:=0; loop exit when C2=1; C1:=1; C1:=0; end loop; Critical_Section_1; C1:=1; end loop; end P1; task body P2 is begin loop Non_Critical_Section_2; C2:=0; loop exit when C1=1; C2:=1; C2:=0; end loop; Critical_Section_2; C2:=1; end loop; end P2;  Μεταξύ δύο διαδοχικών εντολών ανάθεσης η άλλη διεργασία μπορεί να εκτελέσει τυχαίο αριθμό εντολών  Η παραπάνω λύση ικανοποιεί την ιδιότητα του αμοιβαίου αποκλεισμού, αλλά υπάρχει ενδεχόμενο μία διεργασία να οδηγείται σε «λιμοκτονία»

Αλγόριθμος Dekker  Συνδυάζει την πρώτη και την τέταρτη περίπτωση λύσης 1 η περίπτωση: κάθε διεργασία φανερά περνάει το δικαίωμα εισόδου στο κρίσιμο τμήμα στην άλλη διεργασία 4 η περίπτωση: κάθε διεργασία διαθέτει τις δικές της μεταβλητές και έτσι δεν δημιουργείται πρόβλημα όταν δεν υπάρχει ανταγωνισμός για προσπέλαση στο κρίσιμο τμήμα  Χρήση καθολικών μεταβλητών C1,C2 και Turn. Αρχικές τιμές Turn=C1=C2=1.

task body P1 is Begin loop Non_Critical_Section_1; C1:=0; loop exit when C2=1; if Turn=2 then C1:=1; loop exit when Turn=1; end loop; C1:=0; end if; end loop; Critical_Section_1; C1:=1; Turn:=2; end loop; end P1; task body P2 is Βegin loop Non_Critical_Section_2; C2:=0; loop exit when C1=1; if Turn=1 then C2:=1; loop exit when Τurn=2; end loop; C2:=0; end if; end loop; Critical_Section_2; C2:=1; Turn:=1; end loop; end P2;

Καταστάσεις Μοντέλου NCS  Non Critical Section : δηλώνει ότι η κατάσταση βρίσκεται στο μη-κρίσιμο τμήμα LOOP  Κυρίως βρόγχος : δηλώνει ότι η διεργασία εισέρχεται στον κυρίως βρόγχο (loop … end loop) CH_LOOP  δηλώνει την κατάσταση μέσα στο LOOP και λίγο πριν το IF_LOOP IF_LOOP  βρόγχος_if : δηλώνει ότι η διεργασία βρίσκεται μέσα στον βρόγχο If (if … end if) INT_LOOP  Internal Loop : δηλώνει ότι η διεργασία έχει μπει στον εσωτερικό βρόγχο IF_LOOP_E  If_loop_Exit : δηλώνει ότι μόλις βγήκαμε από τον βρόγχο if CS  Critical Section : δηλώνει ότι η διεργασία βρίσκεται στο κρίσιμο τμήμα

1 η Διεργασία (P1) NCS1 LOOP1 CS1 CH_LOOP1 IF_LOOP1 INT_LOOP1 IF_LOOP_E1 Turn:=2 C1:=1 C1:=0 If C2:=1 else If Turn:=2 C1:=1 when Turn:=1 C1:=0

2 η Διεργασία (P2) NCS2 LOOP2 CS2 CH_LOOP2 IF_LOOP2 INT_LOOP2 IF_LOOP_E2 Turn:=1 C2:=1 C2:=0 If C1:=1 else If Turn:=1 C2:=1 when Turn:=2 C2:=0

CPN model

Διεργασία P1

Διεργασία P2

Παρατηρήσεις  Οι κοινές μεταβλητές που διαμοιράζονται οι δύο διεργασίες είναι η Turn, C1 και C2. Αναπαρίστανται ως places μέσα στο μοντέλο με αρχικές τιμές Turn=C1=C2=1.  H κατάσταση της κάθε διεργασίας αναπαρίσταται από το place με όνομα P_state. Οι τιμές που παίρνει το συγκεκριμένο place ανήκουν στο παρακάτω σύνολο {NCS, CS, LOOP, CH_LOOP, IF_LOOP, INT_LOOP, IF_LOOP_E}. Αρχική τιμή του P_state είναι το NCS, δηλώνοντας ότι η διεργασία βρίσκεται στο μη- κρίσιμο τμήμα.

Παρατηρήσεις  Σε κάθε διεργασία αντιστοιχούν 7 transitions, τα οποία αλλάζουν την κατάσταση της διεργασίας λαμβάνοντας υπόψη τις τιμές στις 3 διαμοιραζόμενες μεταβλητές( Turn, C1, C2)  Κατά την ενεργοποίηση μιας μετάβασης δύο συμβάντα μπορεί να σχετίζονται με τις τρείς κοινές μεταβλητές: Ενημέρωση των μεταβλητών, αλλάζοντας τις τιμές τους Έλεγχος της τιμής μιας εκ των τριών μεταβλητών

Στατιστικά State Space Nodes: 74 Arcs: 136 Secs: 0 Status: Full Liveness Properties Dead Markings: None Dead Transition Instances: None Live Transition Instances: All Scc Graph Nodes: 1 Arcs: 0 Secs: 0