nemocode Δημοσ. 31 Ιανουαρίου 2023 Δημοσ. 31 Ιανουαρίου 2023 Ετοιμάζομαι για τον τελικό του OS μου. Τώρα εργάζομαι στο κεφάλαιο συγχρονισμού διεργασιών. Για την αντιμετώπιση της Κρίσιμης Ενότητας, το βιβλίο μας παρέχει τον ακόλουθο αλγόριθμο. Ισχυρίζεται ότι η τεχνική εξαλείφει την πείνα και παρέχει πεπερασμένο χρόνο αναμονής. Ο ψευδοκώδικας είναι ο εξής: var flag: array [0..1] of Boolean; Turn: 0..1; Repeat flag[i] := true; turn := j; while (flag[j] and turn=j) do no-op; critical section flag[i] := false; remainder section until false; Αφού διάβασα αυτό το ιστολόγιο από την scaler academy, καταλαβαίνω ότι η πείνα συμβαίνει όταν μια διαδικασία βρίσκεται στο Κρίσιμο Τμήμα της και μια άλλη διαδικασία απαιτεί πρόσβαση σε αυτήν, αλλά η πρώτη διαδικασία δεν μπορεί να ολοκληρωθεί. Ως αποτέλεσμα, η δεύτερη διαδικασία πρέπει να περιμένει επ 'αόριστον. Θυμάμαι από τον προγραμματισμό της CPU ότι η ενσωμάτωση της ηλικίας στον αλγόριθμο, για παράδειγμα, θα εξαλείφει την πείνα. Αλλά δεν βλέπω να συμβαίνει αυτό εδώ. Κάνω λάθος; Υπάρχει κάτι που μου λείπει εδώ; Ευχαριστώ πολύ.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα