τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
2024-07-04: Σημειώσεις μελέτης συγχρονισμού λειτουργικού συστήματος και αμοιβαίου αποκλεισμού
Ταυτόχρονες διεργασίες ή προγράμματα θα χάσουν το κλείσιμό τους όταν εκτελεστούν, δηλαδή, εάν δύο προγράμματα χρησιμοποιούν έναν κοινόχρηστο πόρο σε ξεχωριστές περιοχές, τα αποτελέσματα κάθε εκτέλεσης μπορεί να είναι διαφορετικά.
Ο λόγος είναι ότι δεν προστατεύσαμε τον κοινόχρηστο πόρο x στον οποίο πρέπει να έχουν πρόσβαση τόσο το πρόγραμμα a όσο και το πρόγραμμα β.
Η αμοιβαία περιοριστική σχέση είναι ο συγχρονισμός Μια απλή κατανόηση του συγχρονισμού είναι ότι πρέπει να υπάρχει μια σειρά στην εκτέλεση των διαδικασιών.
Η σχέση που περιορίζει έμμεσα ο ένας τον άλλον ονομάζεται αμοιβαία αποκλειστική σχέση, π.χ
«Μοντέλο Παραγωγού και Καταναλωτή»
μετρητής+ +
首先把变量放到寄存器里面
register1 = counter;
接下来对寄存器进行一个自增
register1 = register1 + 1;
再把结果返回到counter里
counter = register1;
μετρητής- -
首先把变量放到寄存器里面
register2 = counter;
接下来对寄存器进行一个自减
register2 = register2 - 1;
再把结果返回到counter里
counter = register2;
Λύση: αντιμετωπίστε τον μετρητή ως κρίσιμο πόρο και επιτρέψτε στη διαδικασία να αποκτήσει αμοιβαία πρόσβαση στον μετρητή μεταβλητών (θα μάθετε τον μηχανισμό συγχρονισμού αργότερα)
Είτε πρόκειται για έναν κρίσιμο πόρο υλικού είτε για έναν κρίσιμο πόρο λογισμικού, πολλαπλές διεργασίες πρέπει να έχουν αμοιβαία πρόσβαση σε αυτόν.
Αυτές οι περιοχές είναι ουσιαστικά κωδικοί
Όταν καμία διεργασία δεν βρίσκεται στο κρίσιμο τμήμα, υποδεικνύει ότι οι πόροι της κρίσιμης ενότητας είναι αδρανείς.
Όταν μια υπάρχουσα διεργασία εισέρχεται στο κρίσιμο τμήμα, υποδεικνύει ότι γίνεται πρόσβαση στον κρίσιμο πόρο. Επομένως, άλλες διεργασίες που προσπαθούν να εισέλθουν στο κρίσιμο τμήμα πρέπει να περιμένουν για να εξασφαλίσουν αμοιβαία αποκλειστική πρόσβαση στον κρίσιμο πόρο.
Για διαδικασίες που απαιτούν πρόσβαση σε κρίσιμους πόρους, θα πρέπει να διασφαλίσουν ότι μπορούν να εισέλθουν στο δικό τους κρίσιμο τμήμα μέσα σε περιορισμένο χρονικό διάστημα για να αποφύγουν να πέσουν σε κατάσταση "αναμονής για το θάνατο".
Όταν μια διεργασία δεν μπορεί να εισέλθει στο δικό της κρίσιμο τμήμα, ο επεξεργαστής (CPU) θα πρέπει να απελευθερωθεί αμέσως για να αποτραπεί η πτώση της διαδικασίας σε κατάσταση "απασχολημένης αναμονής".
两个进程必须交替进入临界区,若一个进程不再进入临界区,则另一个进程也无法进入临界区,违背了“空闲让进”准则
Η μέθοδος πρώτου ελέγχου με διπλή σημαία ορίζει μια σημαία Boolean array[2] για να επισημάνει την προθυμία κάθε διεργασίας να εισέλθει στο κρίσιμο τμήμα.
- Ο βρόχος while είναι ισοδύναμος με τον μηχανισμό του φαναριού
- Ο καθορισμός της σημαίας του άλλου μέρους ισοδυναμεί με την αλλαγή του φαναριού του άλλου.
- Ωστόσο, δεδομένου ότι και οι δύο διαδικασίες ελέγχουν πρώτα τη σημαία [κοίτα πρώτα το φανάρι] και και οι δύο είναι αρχικά ψευδείς [και τα δύο πράσινα φανάρια], είναι πιθανό οι δύο διαδικασίες να περάσουν το φανάρι ταυτόχρονα και να εισέλθουν στο κρίσιμο τμήμα μαζί .
Η μέθοδος μετά τον έλεγχο με διπλή σημαία θα ελέγξει τη σημαία του άλλου μέρους και στη συνέχεια θα ορίσει τη δική της. Αυτές οι δύο λειτουργίες δεν μπορούν να γίνουν ταυτόχρονα, επομένως οι δύο διεργασίες μπορούν να εισέλθουν στο κρίσιμο τμήμα επινοήθηκε η μέθοδος, η οποία ορίζει πρώτα τη σημαία του άλλου μέρους και στη συνέχεια ελέγχει τη σημαία του άλλου μέρους, περιμένετε διαφορετικά
Ο αλγόριθμος του Peterson συνδυάζειμέθοδος ενιαίας ένδειξηςκαιΔιπλή σήμανση μέθοδος μετά τον έλεγχοΗ ιδέα είναι να χρησιμοποιήσετε το flag[] για να λύσετε το πρόβλημα αμοιβαία αποκλειστικής πρόσβασης και να χρησιμοποιήσετε το turn για να λύσετε το πρόβλημα της λιμοκτονίας.
Εάν και τα δύο μέρη ανταγωνίζονται για την είσοδο στο κρίσιμο τμήμα, η διαδικασία μπορεί να επιτραπεί να δώσει στο άλλο μέρος την ευκαιρία να εισέλθει στο κρίσιμο τμήμα.
Πριν από την είσοδο κάθε διεργασίας στο κρίσιμο τμήμα, ορίζει τη δική της σημαία και ορίζει τη σημαία σειράς που επιτρέπεται να εισέλθει. και τα δύο μέρη ζητούν να εισέλθουν στο κρίσιμο τμήμα ταυτόχρονα.
Αποτυχία παραίτησης από το δικαίωμα αναμονής
Είναι δύσκολο για το λογισμικό να λύσει το πρόβλημα του αμοιβαίου αποκλεισμού κάθε διεργασίας από την είσοδο στην κρίσιμη ενότητα και έχει μεγάλους περιορισμούς, επομένως, ο υπολογιστής παρέχει ορισμένες ειδικές οδηγίες υλικού για την επίλυση του προβλήματος.
Η εντολή TS μπορεί να θεωρηθεί ως μια διεργασία συνάρτησης (πρωταρχική) της οποίας η διαδικασία εκτέλεσης είναι αδιαίρετη.
Χρησιμοποιήστε το TS για να διαχειριστείτε κρίσιμα τμήματα και να ορίσετε ένα κλείδωμα για κάθε κρίσιμο πόρο.
Ονομάζεται εντολή ανταλλαγής και χρησιμοποιείται για την ανταλλαγή του περιεχομένου δύο λέξεων.
Ορίζεται ως ένας ακέραιος αριθμός S που χρησιμοποιείται για την αναπαράσταση του αριθμού των πόρων Υπάρχουν μόνο τρεις λειτουργίες για αυτόν τον ακέραιο σηματοφόρο: αρχικοποίηση (εκχώρηση αρχικής τιμής), αναμονή (μείωση), σήμα (αύξηση).
Μηχανισμός συγχρονισμού διεργασιών χωρίς φαινόμενο «απασχολημένης αναμονής».
- Η λειτουργία αναμονής είναι ισοδύναμη με τη λειτουργία P
- Η λειτουργία του σήματος είναι ισοδύναμη με τη λειτουργία V
- Μόνο δύο διαφορετικά ονόματα, οι λειτουργίες είναι ακριβώς ίδιες
- αναμονή (Α) = Ρ(Α)
- σήμα(B) = V(A)
Ορίστε έναν αμοιβαία αποκλειστικό σηματοφόρο mutex=1 και, στη συνέχεια, τοποθετήστε το κρίσιμο τμήμα για κάθε διεργασία για πρόσβαση σε κρίσιμους πόρους μεταξύ αναμονής (mutex) και σήματος (mutex)
Ορίστε έναν σηματοφόρο συγχρονισμού S=0, έτσι ώστε πρώτα να εκτελεστεί το σήμα της δήλωσης (S) και μετά η αναμονή (S)