Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Ετοιμάζομαι για τον τελικό του 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 ότι η ενσωμάτωση της ηλικίας στον αλγόριθμο, για παράδειγμα, θα εξαλείφει την πείνα. Αλλά δεν βλέπω να συμβαίνει αυτό εδώ.

Κάνω λάθος; Υπάρχει κάτι που μου λείπει εδώ; Ευχαριστώ πολύ.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...