Διαφορά μεταξύ του Semaphore και του Monitor στο λειτουργικό σύστημα

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 1 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 5 Ενδέχεται 2024
Anonim
Διαφορά μεταξύ του Semaphore και του Monitor στο λειτουργικό σύστημα - Τεχνολογία
Διαφορά μεταξύ του Semaphore και του Monitor στο λειτουργικό σύστημα - Τεχνολογία

Περιεχόμενο


Το Σηματοφόρο και η Παρακολούθηση επιτρέπουν και στις δύο διαδικασίες να έχουν πρόσβαση στους κοινόχρηστους πόρους με αμοιβαίο αποκλεισμό. Και τα δύο είναι το εργαλείο συγχρονισμού διεργασίας. Αντ 'αυτού, είναι πολύ διαφορετικές μεταξύ τους. Που Σηματοφόρος είναι μια ακέραια μεταβλητή η οποία μπορεί να λειτουργήσει μόνο με λειτουργία wait () και signal () εκτός από την αρχικοποίηση. Από την άλλη πλευρά, το Οθόνη είναι ένας αφηρημένος τύπος δεδομένων του οποίου η κατασκευή επιτρέπει σε μια διαδικασία να ενεργοποιηθεί ταυτόχρονα. Σε αυτό το άρθρο, θα συζητήσουμε τις διαφορές μεταξύ του σηματοφορέα και της οθόνης με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. συμπέρασμα

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΣηματοφόρος Οθόνη
Βασικός Τα σηματοφόρα είναι μια ακέραια μεταβλητή S.Η οθόνη είναι ένας αφηρημένος τύπος δεδομένων.
ΔράσηΗ αξία του Semaphore S δείχνει τον αριθμό των κοινόχρηστων πόρων που διατίθενται στο σύστημαΟ τύπος οθόνης περιέχει κοινές μεταβλητές και το σύνολο διαδικασιών που λειτουργούν στην κοινόχρηστη μεταβλητή.
ΠρόσβασηΌταν οποιαδήποτε διαδικασία έχει πρόσβαση στους κοινόχρηστους πόρους, εκτελεί λειτουργία wait () στο S και όταν απελευθερώνει τους κοινόχρηστους πόρους, εκτελεί λειτουργία signal () στο S.Όταν οποιαδήποτε διαδικασία θέλει να έχει πρόσβαση στις κοινές μεταβλητές στην οθόνη, πρέπει να την έχει πρόσβαση στις διαδικασίες.
Συνθήκη μεταβλητήςΤο σεματοφόρο δεν έχει μεταβλητές συνθηκών.Η οθόνη έχει μεταβλητές συνθηκών.


Ορισμός του Semaphore

Ως εργαλείο συγχρονισμού διεργασιών, Σηματοφόρος είναι ένα integer variable S. Αυτή η ακέραια μεταβλητή S αρχικοποιείται στο αριθμός πόρων στο σύστημα. Η τιμή του σηματοφορέα S μπορεί να τροποποιηθεί μόνο από δύο λειτουργίες Περίμενε() και σήμα() εκτός από την αρχικοποίηση.

Οι λειτουργίες wait () και signal () τροποποιούν την τιμή του semafor S αδιαίρετα. Αυτό σημαίνει ότι όταν μια διαδικασία τροποποιεί την αξία του σηματοφορέα, καμία άλλη διαδικασία δεν μπορεί ταυτόχρονα να τροποποιήσει την τιμή του σηματοφόρου. Επιπλέον, το λειτουργικό σύστημα διακρίνει το σηματοφόρο σε δύο κατηγορίες Μετρώντας τα σηματοφόρα και το δυαδικό σηματοφόρο.

Σε Μετρώντας το Σηματοφόρο, η αξία του σηματοφόρου S αρχικοποιείται με τον αριθμό των πόρων που υπάρχουν στο σύστημα. Κάθε φορά που μια διαδικασία θέλει να έχει πρόσβαση στους κοινόχρηστους πόρους, εκτελεί Περίμενε() λειτουργία στο σηματοφόρο που μειώσεις η αξία του σημαιριού από ένα. Όταν απελευθερώνει τον κοινόχρηστο πόρο, εκτελεί a σήμα() λειτουργία στο σηματοφόρο που αυξήσεις η αξία του σημαιριού από ένα. Όταν μετράει ο αριθμός των σημαιών 0, σημαίνει όλοι οι πόροι είναι κατειλημμένοι από τις διαδικασίες. Εάν μια διαδικασία χρειάζεται να χρησιμοποιήσει έναν πόρο όταν ο αριθμός θαυμαστών είναι 0, εκτελεί wait () και παίρνει μπλοκαριστεί μέχρις ότου μια διαδικασία που χρησιμοποιεί τους κοινόχρηστους πόρους να την απελευθερώσει και η τιμή του σηματοφόρου να είναι μεγαλύτερη από 0.


Σε Δυαδικό σεματοφόρο, η τιμή του σηματοφόρου κυμαίνεται μεταξύ 0 και 1. Είναι παρόμοια με την κλειδαριά mutex, αλλά το mutex είναι μηχανισμός κλειδώματος, ενώ το σηματοφόρο είναι ένας μηχανισμός σηματοδότησης. Σε δυαδικό σηματοφόρο, εάν μια διαδικασία θέλει να αποκτήσει πρόσβαση στον πόρο, εκτελεί λειτουργία wait () στο σηματοφόρο και μειώσεις η τιμή του σηματοφόρου από το 1 έως το 0. Όταν η διαδικασία απελευθερώνει τον πόρο, εκτελεί α σήμα() λειτουργία στο σηματοφόρο και αυξάνει την τιμή του σε 1. Εάν η τιμή του σηματοφορέα είναι 0 και μια διαδικασία θέλει να έχει πρόσβαση στον πόρο εκτελεί λειτουργία wait () και να μπλοκάρει τον εαυτό του μέχρι την τρέχουσα διαδικασία που χρησιμοποιεί τους πόρους να απελευθερώσει τον πόρο.

Ορισμός της οθόνης

Για να ξεπεραστούν τα σφάλματα συγχρονισμού που συμβαίνουν κατά τη χρήση του σηματοφόρου για συγχρονισμό διεργασιών, οι ερευνητές έχουν εισαγάγει ένα κατασκεύασμα συγχρονισμού υψηλού επιπέδου, δηλ. τύπος οθόνης. Ένας τύπος οθόνης είναι έναν αφηρημένο τύπο δεδομένων που χρησιμοποιείται για συγχρονισμό διεργασιών.

Ο τύπος οθόνης αφηρημένου τύπου οθόνης περιέχει το κοινές μεταβλητές δεδομένων που πρέπει να μοιραστούν με όλες τις διαδικασίες και με ορισμένους προγραμματιστές λειτουργίες που επιτρέπουν την εκτέλεση διαδικασιών με αμοιβαίο αποκλεισμό εντός της οθόνης. Μια διαδικασία μπορεί δεν έχουν άμεση πρόσβαση τη μεταβλητή κοινών δεδομένων στην οθόνη. η διαδικασία πρέπει να έχει πρόσβαση σε αυτήν μέσω διαδικασιών που καθορίζονται στην οθόνη, οι οποίες επιτρέπουν σε μια μόνο διαδικασία να έχει πρόσβαση στις κοινές μεταβλητές σε μια οθόνη κάθε φορά.

Η σύνταξη της οθόνης έχει ως εξής:

να παρακολουθεί την οθόνη monitor_name {// διαδικασία διαμοιρασμένων δηλώσεων μεταβλητών P1 (...) {} διαδικασία P2 (...) {} διαδικασία Pn (....) {} κωδικός αρχικοποίησης (...)

Μια οθόνη είναι μια κατασκευή όπως μια μόνο διαδικασία είναι ενεργή σε μια στιγμή μέσα στην οθόνη. Εάν άλλη διεργασία προσπαθήσει να αποκτήσει πρόσβαση στην κοινόχρηστη μεταβλητή στην οθόνη, αποκλείεται και παρατάσσεται στην ουρά για να αποκτήσει πρόσβαση σε κοινόχρηστα δεδομένα όταν το προηγουμένως έχει πρόσβαση στη διαδικασία.

Υποχρεωτικές μεταβλητές για πρόσθετο μηχανισμό συγχρονισμού. Η μεταβλητή υπό όρους επιτρέπει μια διαδικασία να περιμένει μέσα στην οθόνη και επιτρέπει να ξαναρχίσει η διαδικασία αναμονής όταν η άλλη διαδικασία εκτοξεύσει τους πόρους.

ο μεταβλητή υπό όρους μπορεί να επικαλεστεί μόνο δύο λειτουργίες Περίμενε() και σήμα(). Πού αν μια διαδικασία P invokes a wait () λειτουργία αναστέλλεται στην οθόνη έως ότου γίνει άλλη διαδικασία Εναρκτήριο σήμα Q () δηλαδή μια λειτουργία σήματος () που ενεργοποιείται από μια διαδικασία επαναλαμβάνει τη διαδικασία αναστολής.

  1. Η βασική διαφορά μεταξύ του σηματοφορέα και της οθόνης είναι ότι το σηματοφόρος είναι ένα ακέραια μεταβλητή S που υποδεικνύουν τον αριθμό των πόρων που διατίθενται στο σύστημα, ενώ, οθόνη είναι το αφηρημένο τύπο δεδομένων που επιτρέπει μόνο μία διαδικασία να εκτελείται σε κρίσιμη ενότητα κάθε φορά.
  2. Η αξία του σηματοφόρου μπορεί να τροποποιηθεί από Περίμενε() και σήμα() λειτουργία μόνο. Από την άλλη πλευρά, μια οθόνη έχει τις κοινές μεταβλητές και τις διαδικασίες μόνο μέσα από τις οποίες οι κοινές μεταβλητές μπορούν να προσεγγιστούν από τις διαδικασίες.
  3. Στο Semaphore, όταν μια διαδικασία θέλει να έχει πρόσβαση σε κοινόχρηστους πόρους, η διαδικασία εκτελείται Περίμενε() λειτουργία και να μπλοκάρει τους πόρους και όταν απελευθερώνει τους πόρους που εκτελεί σήμα() λειτουργία. Σε οθόνες όταν μια διαδικασία χρειάζεται να έχει πρόσβαση σε κοινόχρηστους πόρους, πρέπει να έχει πρόσβαση σε αυτές μέσω των διαδικασιών στην οθόνη.
  4. Ο τύπος οθόνης έχει μεταβλητές συνθηκών η οποία δεν έχει το σηματοφόρο.

Συμπέρασμα:

Οι οθόνες είναι εύκολο να εφαρμοστούν από το σηματοφόρο και υπάρχουν ελάχιστες πιθανότητες λάθους στην οθόνη σε σύγκριση με τα σηματοφόρα.