Τι είναι το Semaphore; Δυαδικοί, μετρητικοί τύποι με παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι το Semaphore;

Το Semaphore είναι απλώς μια μεταβλητή που δεν είναι αρνητική και μοιράζεται μεταξύ των νημάτων. Ένα σηματοφόρο είναι ένας μηχανισμός σηματοδότησης και ένα νήμα που περιμένει σε ένα σηματοφόρο μπορεί να σηματοδοτηθεί από ένα άλλο νήμα. Χρησιμοποιεί δύο ατομικές λειτουργίες, 1) αναμονή και 2) σήμα για τον συγχρονισμό της διαδικασίας.

Ένα σηματοφόρο επιτρέπει είτε απαγορεύει την πρόσβαση στον πόρο, το οποίο εξαρτάται από τον τρόπο ρύθμισής του.

Σε αυτόν τον οδηγό λειτουργικού συστήματος (OS), θα μάθετε:

  • Χαρακτηριστικό του Semaphore
  • Τι είναι το Semaphore;
  • Τύποι Semaphores
  • Παράδειγμα του Semaphore
  • Περιμένετε και λειτουργίες σημάτων στο Semaphores
  • Μετρώντας Semaphore εναντίον Binary Semaphore
  • Διαφορά μεταξύ Semaphore εναντίον Mutex
  • Πλεονεκτήματα του Semaphores
  • Μειονέκτημα των σημαφοφόρων

Χαρακτηριστικό του Semaphore

Εδώ είναι χαρακτηριστικά ενός σηματοφόρου:

  • Είναι ένας μηχανισμός που μπορεί να χρησιμοποιηθεί για την παροχή συγχρονισμού εργασιών.
  • Είναι ένας μηχανισμός συγχρονισμού χαμηλού επιπέδου.
  • Το Semaphore θα διατηρεί πάντα μια μη αρνητική ακέραια τιμή.
  • Το Semaphore μπορεί να εφαρμοστεί χρησιμοποιώντας δοκιμαστικές λειτουργίες και διακοπές, οι οποίες θα πρέπει να εκτελούνται χρησιμοποιώντας περιγραφείς αρχείων.

Τύποι Semaphores

Τα δύο κοινά είδη σημαφοφόρων είναι

  • Μετρώντας σηματοφόρους
  • Δυαδικοί σημαφοφόροι.

Μετρώντας σηματοφόρους

Αυτός ο τύπος Semaphore χρησιμοποιεί μια μέτρηση που βοηθά στην απόκτηση ή την απελευθέρωση εργασιών πολλές φορές. Εάν η αρχική μέτρηση = 0, η μέτρηση του σηματοφόρου θα πρέπει να δημιουργηθεί στη μη διαθέσιμη κατάσταση.

Ωστόσο, εάν η μέτρηση είναι> 0, το σηματοφόρο δημιουργείται στη διαθέσιμη κατάσταση και ο αριθμός των διακριτικών που έχει ισούται με τον αριθμό του.

Δυαδικές σηματοφόροι

Τα δυαδικά σημαφοφόρα μοιάζουν πολύ με τη μέτρηση των σηματοφόρων, αλλά η τιμή τους περιορίζεται στα 0 και 1. Σε αυτόν τον τύπο σηματοφόρου, η λειτουργία αναμονής λειτουργεί μόνο εάν το σηματοφόρο = 1 και η λειτουργία σήματος επιτυγχάνεται όταν το σηματοφόρο = 0. Είναι εύκολο να εφαρμογή από την καταμέτρηση των σημαφοφόρων.

Παράδειγμα του Semaphore

Το παρακάτω πρόγραμμα είναι μια βήμα προς βήμα εφαρμογή, η οποία περιλαμβάνει τη χρήση και τη δήλωση του semaphore.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Περιμένετε και λειτουργίες σημάτων στο Semaphores

Και οι δύο αυτές λειτουργίες χρησιμοποιούνται για την εφαρμογή συγχρονισμού διεργασιών. Ο στόχος αυτής της λειτουργίας semaphore είναι να αμοιβαίο αποκλεισμό.

Περιμένετε για λειτουργία

Αυτός ο τύπος λειτουργίας semaphore σάς βοηθά να ελέγχετε την είσοδο μιας εργασίας στην κρίσιμη ενότητα. Ωστόσο, εάν η τιμή της αναμονής είναι θετική, τότε η τιμή του ορίσματος αναμονής X μειώνεται. Σε περίπτωση αρνητικής ή μηδενικής τιμής, δεν εκτελείται καμία λειτουργία. Ονομάζεται επίσης λειτουργία P (S).

Αφού μειωθεί η τιμή του σηματοφόρου, η οποία καθίσταται αρνητική, η εντολή διατηρείται μέχρι να ικανοποιηθούν οι απαιτούμενες συνθήκες

Copy CodeP(S){while (S<=0);S--;}

Λειτουργία σήματος

Αυτός ο τύπος λειτουργίας Semaphore χρησιμοποιείται για τον έλεγχο της εξόδου μιας εργασίας από μια κρίσιμη ενότητα. Βοηθά στην αύξηση της τιμής του ορίσματος κατά 1, το οποίο δηλώνεται ως V (S).

Copy CodeP(S){while (S>=0);S++;}

Μετρώντας Semaphore εναντίον Binary Semaphore

Εδώ είναι μερικές σημαντικές διαφορές μεταξύ της μέτρησης και του δυαδικού σηματοδότη:

Μετρώντας το Semaphore Δυαδικό Semaphore
Χωρίς αμοιβαίο αποκλεισμό Αμοιβαίος αποκλεισμός
Οποιαδήποτε ακέραια τιμή Τιμή μόνο 0 και 1
Περισσότερες από μία υποδοχές Μόνο μία υποδοχή
Παρέχετε ένα σύνολο διαδικασιών Διαθέτει μηχανισμό αμοιβαίου αποκλεισμού.

Διαφορά μεταξύ Semaphore εναντίον Mutex

Παράμετροι Σηματοφόρος Σίγαση
Μηχανισμός Είναι ένας τύπος μηχανισμού σηματοδότησης. Είναι ένας μηχανισμός κλειδώματος.
Τύπος δεδομένων Το Semaphore είναι μια ακέραια μεταβλητή. Το Mutex είναι απλώς ένα αντικείμενο.
Τροποποίηση Οι λειτουργίες αναμονής και σήματος μπορούν να τροποποιήσουν ένα σηματοφόρο. Τροποποιείται μόνο από τη διαδικασία που μπορεί να ζητήσει ή να αποδεσμεύσει έναν πόρο.
Διαχείριση πόρων Εάν κανένας πόρος δεν είναι δωρεάν, τότε η διαδικασία απαιτεί έναν πόρο που θα πρέπει να εκτελεί λειτουργία αναμονής. Θα πρέπει να περιμένει έως ότου ο αριθμός των σηματοφόρων να είναι μεγαλύτερος από 0. Εάν είναι κλειδωμένο, η διαδικασία πρέπει να περιμένει. Η διαδικασία πρέπει να διατηρείται σε ουρά. Πρέπει να έχετε πρόσβαση μόνο όταν το mutex είναι ξεκλείδωτο.
Νήμα Μπορείτε να έχετε πολλά νήματα προγράμματος. Μπορείτε να έχετε πολλά νήματα προγραμμάτων στο mutex αλλά όχι ταυτόχρονα.
Ιδιοκτησία Η τιμή μπορεί να αλλάξει με οποιαδήποτε διαδικασία απελευθέρωσης ή απόκτησης του πόρου. Το κλείδωμα αντικειμένου απελευθερώνεται μόνο από τη διαδικασία, η οποία έχει αποκτήσει το κλείδωμα σε αυτό.
Τύποι Οι τύποι Semaphore μετρούν το σηματοφόρο και το δυαδικό σηματοφόρο και Το Mutex δεν έχει δευτερεύοντες τύπους.
Λειτουργία Η τιμή Semaphore τροποποιείται χρησιμοποιώντας τη λειτουργία αναμονής () και σήματος (). Το αντικείμενο Mutex είναι κλειδωμένο ή ξεκλειδωμένο.
Πληρότητα πόρων Απασχολείται εάν χρησιμοποιούνται όλοι οι πόροι και η διαδικασία που ζητά πόρο εκτελεί λειτουργία αναμονής () και μπλοκάρει έως ότου ο αριθμός των σηματοφόρων γίνει> 1. Σε περίπτωση που το αντικείμενο είναι ήδη κλειδωμένο, η διαδικασία που ζητά πόρους περιμένει και βρίσκεται στην ουρά από το σύστημα προτού απελευθερωθεί το κλείδωμα.

Πλεονεκτήματα του Semaphores

Εδώ είναι τα πλεονεκτήματα / οφέλη από τη χρήση του Semaphore:

  • Επιτρέπει σε περισσότερα από ένα νήματα να έχουν πρόσβαση στην κρίσιμη ενότητα
  • Τα Semaphores είναι ανεξάρτητα από τη μηχανή.
  • Τα Semaphores εφαρμόζονται στον ανεξάρτητο από τον κώδικα κώδικα του μικροπυρήνα.
  • Δεν επιτρέπουν την είσοδο πολλαπλών διαδικασιών στην κρίσιμη ενότητα.
  • Καθώς υπάρχει πολυάσχολη αναμονή στο semaphore, δεν υπάρχει ποτέ σπατάλη χρόνου και πόρων της διαδικασίας.
  • Είναι ανεξάρτητες από το μηχάνημα, οι οποίες πρέπει να εκτελούνται στον ανεξάρτητο από τον κώδικα κώδικα του μικροπυρήνα.
  • Επιτρέπουν την ευέλικτη διαχείριση των πόρων.

Μειονέκτημα των σημαφοφόρων

Εδώ είναι τα μειονεκτήματα / μειονέκτημα του σηματοφόρου

  • Ένας από τους μεγαλύτερους περιορισμούς ενός σηματοφόρου είναι η αντιστροφή προτεραιότητας.
  • Το λειτουργικό σύστημα πρέπει να παρακολουθεί όλες τις κλήσεις για αναμονή και να σηματοδοτεί σηματοφόρο.
  • Η χρήση τους δεν επιβάλλεται ποτέ, αλλά γίνεται μόνο βάσει σύμβασης.
  • Προκειμένου να αποφευχθούν τα αδιέξοδα στο σηματοφόρο, οι λειτουργίες Wait και Signal πρέπει να εκτελεστούν με τη σωστή σειρά.
  • Ο προγραμματισμός του Semaphore είναι περίπλοκος, οπότε υπάρχουν πιθανότητες να μην επιτευχθεί αμοιβαίος αποκλεισμός.
  • Επίσης, δεν είναι πρακτική μέθοδος για χρήση σε μεγάλη κλίμακα, καθώς η χρήση τους οδηγεί σε απώλεια αρθρωτότητας.
  • Το Semaphore είναι πιο επιρρεπές σε σφάλματα προγραμματιστή.
  • Μπορεί να προκαλέσει αδιέξοδο ή παραβίαση του αμοιβαίου αποκλεισμού λόγω σφάλματος προγραμματιστή.

Περίληψη:

  • Το Semaphore ορίζεται ως μια μεταβλητή που δεν είναι αρνητική και μοιράζεται μεταξύ των νημάτων.
  • Είναι ένας μηχανισμός που μπορεί να χρησιμοποιηθεί για την παροχή συγχρονισμού εργασιών.
  • Η μέτρηση του semaphore χρησιμοποιεί μια μέτρηση που βοηθά στην απόκτηση ή την απελευθέρωση της εργασίας πολλές φορές.
  • Τα δυαδικά σημαφοφόρα μοιάζουν πολύ με τη μέτρηση των σηματοφόρων, αλλά η τιμή τους περιορίζεται στα 0 και 1.
  • Η λειτουργία Wait σας βοηθά να ελέγχετε την είσοδο μιας εργασίας στην κρίσιμη ενότητα
  • Η λειτουργία σηματοφορέα σημάτων χρησιμοποιείται για τον έλεγχο της εξόδου μιας εργασίας από μια κρίσιμη ενότητα
  • Το Counting Semaphore δεν έχει αμοιβαίο αποκλεισμό, ενώ το Binary Semaphore έχει αμοιβαίο αποκλεισμό
  • Το Semaphore σημαίνει μηχανισμό σηματοδότησης ενώ το Mutex είναι μηχανισμός κλειδώματος
  • Το Semaphore επιτρέπει σε περισσότερα από ένα νήματα να έχουν πρόσβαση στην κρίσιμη ενότητα
  • Ένας από τους μεγαλύτερους περιορισμούς ενός σηματοφόρου είναι η αντιστροφή προτεραιότητας.