Τι είναι ο συγχρονισμός διεργασιών;
Ο συγχρονισμός διεργασιών είναι το έργο του συντονισμού της εκτέλεσης των διεργασιών με τρόπο που καμία διεργασία δεν μπορεί να έχει πρόσβαση στα ίδια κοινόχρηστα δεδομένα και πόρους.
Απαιτείται ειδικά σε ένα σύστημα πολλαπλών διεργασιών όταν εκτελούνται πολλές διαδικασίες μαζί και περισσότερες από μία διαδικασίες προσπαθούν να αποκτήσουν πρόσβαση στον ίδιο κοινόχρηστο πόρο ή δεδομένα ταυτόχρονα.
Αυτό μπορεί να οδηγήσει στην ασυνέπεια των κοινών δεδομένων. Έτσι, η αλλαγή που πραγματοποιήθηκε από μία διαδικασία δεν αντικατοπτρίζεται απαραίτητα όταν άλλες διαδικασίες έχουν πρόσβαση στα ίδια κοινόχρηστα δεδομένα. Για να αποφευχθεί αυτός ο τύπος ασυνέπειας των δεδομένων, οι διαδικασίες πρέπει να συγχρονίζονται μεταξύ τους.
Σε αυτό το σεμινάριο λειτουργικού συστήματος, θα μάθετε:
- Τι είναι ο συγχρονισμός διεργασιών;
- Πώς λειτουργεί ο συγχρονισμός διεργασιών;
- Τμήματα προγράμματος
- Τι είναι το πρόβλημα της κρίσιμης ενότητας;
- Κανόνες για κρίσιμη ενότητα
- Λύσεις στο κρίσιμο τμήμα
Πώς λειτουργεί ο συγχρονισμός διεργασιών;
Για παράδειγμα, η διαδικασία Α αλλάζει τα δεδομένα σε μια θέση μνήμης ενώ μια άλλη διαδικασία Β προσπαθεί να διαβάσει τα δεδομένα από την ίδια θέση μνήμης. Υπάρχει μεγάλη πιθανότητα τα δεδομένα που διαβάζονται από τη δεύτερη διαδικασία να είναι λανθασμένα.
Τμήματα προγράμματος
Εδώ είναι τέσσερα βασικά στοιχεία της κρίσιμης ενότητας:
- Ενότητα εισόδου: Είναι μέρος της διαδικασίας που αποφασίζει την είσοδο μιας συγκεκριμένης διαδικασίας.
- Κρίσιμη ενότητα: Αυτό το μέρος επιτρέπει σε μια διαδικασία να εισέλθει και να τροποποιήσει την κοινόχρηστη μεταβλητή.
- Έξοδος Ενότητα: Η ενότητα Έξοδος επιτρέπει στην άλλη διαδικασία που περιμένει στην Ενότητα Εισόδου, να εισέλθει στις Κρίσιμες Ενότητες. Ελέγχει επίσης ότι μια διαδικασία που ολοκλήρωσε την εκτέλεσή της πρέπει να καταργηθεί μέσω αυτής της Ενότητας.
- Ενότητα υπολειπόμενου: Όλα τα άλλα μέρη του κώδικα, τα οποία δεν βρίσκονται στην ενότητα Κρίσιμο, είσοδος και έξοδος, είναι γνωστά ως ενότητα υπολειπόμενων.
Τι είναι το πρόβλημα της κρίσιμης ενότητας;
Μια κρίσιμη ενότητα είναι ένα τμήμα κώδικα που μπορεί να προσεγγιστεί μέσω μιας διαδικασίας σήματος σε μια συγκεκριμένη χρονική στιγμή. Η ενότητα αποτελείται από κοινόχρηστους πόρους δεδομένων στους οποίους απαιτείται πρόσβαση σε άλλες διαδικασίες.
- Η καταχώρηση στην κρίσιμη ενότητα αντιμετωπίζεται από τη συνάρτηση αναμονής () και αντιπροσωπεύεται ως P ().
- Η έξοδος από ένα κρίσιμο τμήμα ελέγχεται από τη λειτουργία σήματος (), που αντιπροσωπεύεται ως V ().
Στην κρίσιμη ενότητα, μπορεί να εκτελεστεί μόνο μία διαδικασία. Άλλες διεργασίες, που περιμένουν να εκτελέσουν την κρίσιμη ενότητα τους, πρέπει να περιμένουν έως ότου ολοκληρωθεί η εκτέλεση της τρέχουσας διαδικασίας.
Κανόνες για κρίσιμη ενότητα
Η κρίσιμη ενότητα πρέπει να επιβάλει και τους τρεις κανόνες:
- Αμοιβαίος αποκλεισμός: Ο αμοιβαίος αποκλεισμός είναι ένας ειδικός τύπος δυαδικού σηματοδότη που χρησιμοποιείται για τον έλεγχο της πρόσβασης στον κοινόχρηστο πόρο. Περιλαμβάνει έναν μηχανισμό κληρονομιάς προτεραιότητας για την αποφυγή παρατεταμένων προβλημάτων αναστροφής προτεραιότητας Δεν μπορούν να εκτελεστούν περισσότερες από μία διαδικασίες στην κρίσιμη ενότητα ταυτόχρονα.
- Πρόοδος: Αυτή η λύση χρησιμοποιείται όταν κανείς δεν βρίσκεται στην κρίσιμη ενότητα και κάποιος θέλει. Στη συνέχεια, αυτές οι διαδικασίες που δεν βρίσκονται στην ενότητα υπενθύμισης θα πρέπει να αποφασίσουν ποιος πρέπει να μπει, σε μια πεπερασμένη ώρα.
- Bound Waiting: Όταν μια διαδικασία υποβάλλει ένα αίτημα για είσοδο σε κρίσιμη ενότητα, υπάρχει ένα συγκεκριμένο όριο σχετικά με τον αριθμό των διαδικασιών που μπορούν να μπουν στην κρίσιμη ενότητα τους. Έτσι, όταν φτάσει το όριο, το σύστημα πρέπει να επιτρέψει στη διαδικασία να εισέλθει στην κρίσιμη ενότητα του.
Λύσεις στο κρίσιμο τμήμα
Στο Process Synchronization, η κρίσιμη ενότητα παίζει τον κύριο ρόλο, έτσι ώστε το πρόβλημα να επιλυθεί.
Εδώ είναι μερικές ευρέως χρησιμοποιημένες μέθοδοι για την επίλυση του κρίσιμου προβλήματος.
Λύση Peterson
Η λύση Peterson είναι ευρέως χρησιμοποιούμενη λύση σε κρίσιμα προβλήματα της ενότητας. Αυτός ο αλγόριθμος αναπτύχθηκε από έναν επιστήμονα υπολογιστών Peterson και γι 'αυτό ονομάζεται λύση Peterson.
Σε αυτήν τη λύση, όταν μια διαδικασία εκτελείται σε κρίσιμη κατάσταση, τότε η άλλη διαδικασία εκτελεί μόνο τον υπόλοιπο κώδικα, και μπορεί να συμβεί το αντίθετο. Αυτή η μέθοδος βοηθά επίσης να διασφαλιστεί ότι μόνο μία διαδικασία εκτελείται στην κρίσιμη ενότητα σε μια συγκεκριμένη ώρα.
Παράδειγμα
PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
- Ας υποθέσουμε ότι υπάρχουν διεργασίες N (P1, P2,… PN) και κάθε διαδικασία σε κάποια στιγμή απαιτεί να μπείτε στην Κρίσιμη Ενότητα
- Διατηρείται μια συστοιχία FLAG [] μεγέθους Ν που είναι από προεπιλογή ψευδής. Έτσι, κάθε φορά που μια διαδικασία απαιτεί την είσοδο στην κρίσιμη ενότητα, πρέπει να ορίσει τη σημαία της ως αληθινή. Για παράδειγμα, εάν το Pi θέλει να εισέλθει, θα ορίσει FLAG [i] = TRUE.
- Μια άλλη μεταβλητή που ονομάζεται TURN υποδεικνύει τον αριθμό διαδικασίας που επί του παρόντος θέλει να εισέλθει στο CS.
- Η διαδικασία που μπαίνει στο κρίσιμο τμήμα κατά την έξοδο θα αλλάξει το TURN σε άλλο αριθμό από τη λίστα των έτοιμων διαδικασιών.
- Παράδειγμα: η στροφή είναι 2 και μετά το P2 μπαίνει στην κρίσιμη ενότητα και ενώ βγαίνει από τη στροφή = 3 και συνεπώς το P3 ξεσπά από το βρόχο αναμονής.
Υλικό συγχρονισμού
Μερικές φορές τα προβλήματα της κρίσιμης ενότητας επιλύονται επίσης από υλικό. Ορισμένα λειτουργικά συστήματα προσφέρουν μια λειτουργία κλειδώματος όπου μια Διαδικασία αποκτά ένα κλείδωμα κατά την είσοδο στην Κρίσιμη ενότητα και απελευθερώνει την κλειδαριά μετά την έξοδο.
Έτσι, όταν μια άλλη διαδικασία προσπαθεί να εισέλθει στην κρίσιμη ενότητα, δεν θα μπορεί να εισέλθει καθώς είναι κλειδωμένη. Μπορεί να το κάνει μόνο εάν είναι δωρεάν αποκτώντας την ίδια την κλειδαριά.
Κλειδαριές Mutex
Το υλικό συγχρονισμού δεν είναι απλή μέθοδος για εφαρμογή σε όλους, έτσι εισήχθη αυστηρή μέθοδος λογισμικού γνωστή ως Mutex Locks.
Σε αυτήν την προσέγγιση, στην ενότητα εισαγωγής κώδικα, λαμβάνεται ένα ΚΛΕΙΔΩΜΑ πέρα από τους κρίσιμους πόρους που χρησιμοποιούνται στο κρίσιμο τμήμα. Στην ενότητα εξόδου που απελευθερώνεται το κλείδωμα.
Λύση Semaphore
Το Semaphore είναι απλώς μια μεταβλητή που δεν είναι αρνητική και μοιράζεται μεταξύ των νημάτων. Είναι ένας άλλος αλγόριθμος ή λύση στο κρίσιμο πρόβλημα της ενότητας. Είναι ένας μηχανισμός σηματοδότησης και ένα νήμα που περιμένει σε ένα σηματοφόρο, το οποίο μπορεί να σηματοδοτηθεί από ένα άλλο νήμα.
Χρησιμοποιεί δύο ατομικές λειτουργίες, 1) αναμονή και 2) σήμα για τον συγχρονισμό της διαδικασίας.
Παράδειγμα
WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;
Περίληψη:
- Ο συγχρονισμός διεργασιών είναι το έργο του συντονισμού της εκτέλεσης των διεργασιών με τρόπο που καμία διεργασία να μην έχει πρόσβαση στα ίδια κοινόχρηστα δεδομένα και πόρους.
- Τέσσερα στοιχεία κρίσιμης ενότητας είναι 1) Ενότητα εισόδου 2) Κρίσιμη ενότητα 3) Έξοδος ενότητα 4) Ενότητα υπενθύμισης
- Μια κρίσιμη ενότητα είναι ένα τμήμα κώδικα που μπορεί να προσεγγιστεί μέσω μιας διαδικασίας σήματος σε μια συγκεκριμένη χρονική στιγμή.
- Τρεις κανόνες που πρέπει να επιβληθούν από την κρίσιμη ενότητα είναι: 1) Αμοιβαίος αποκλεισμός 2) Λύση διαδικασίας 3) Δεσμευμένη αναμονή
- Το Mutual Exclusion είναι ένας ειδικός τύπος δυαδικού σηματοδότη που χρησιμοποιείται για τον έλεγχο της πρόσβασης στον κοινόχρηστο πόρο.
- Η λύση της διαδικασίας χρησιμοποιείται όταν κανείς δεν βρίσκεται στην κρίσιμη ενότητα και κάποιος θέλει.
- Στη λύση δεσμευμένης αναμονής, αφού μια διαδικασία υποβάλει ένα αίτημα για είσοδο στην κρίσιμη ενότητα της, υπάρχει ένα όριο για το πόσες άλλες διαδικασίες μπορούν να μπουν στην κρίσιμη ενότητα τους.
- Η λύση Peterson είναι ευρέως χρησιμοποιούμενη λύση σε κρίσιμα προβλήματα της ενότητας.
- Τα προβλήματα της κρίσιμης ενότητας επιλύονται επίσης με συγχρονισμό υλικού
- Το υλικό συγχρονισμού δεν είναι μια απλή μέθοδος για εφαρμογή σε όλους, επομένως εισήχθη επίσης η αυστηρή μέθοδος λογισμικού γνωστή ως Mutex Locks.
- Το Semaphore είναι ένας άλλος αλγόριθμος ή λύση στο κρίσιμο πρόβλημα της ενότητας.