Domanda

I Concetti relativi al sistema operativo 6a edizione presentano un algoritmo trival per implementare la sezione ciritica.

do{
  while (turn != i);
    critical section
  trun = j;
    remainder section
} while(1);

Nota , Pi è il processo con identificatore i, Pj è il processo con identificatore j. Per semplificare la domanda, il libro limita i, j a 0 e 1, i due processi ambiente costruttivo.

Domanda1 è, la dose di questo algoritmo annulla il requisito Progresso che è uno dei tre requisiti per la soluzione della sezione ciritica?

Secondo me, quando Pi è nella sua sezione rimanente, non può partecipare alla decisione se Pj può entrare nella sezione critica, quindi è vincolato al requisito.

O la mia comprensione dei requisiti di progresso è totalmente sbagliata, quindi se Pi si ritirava dalla sezione rimanente, non poteva entrare immediatamente nella sezione cirtica, questo alg violava la regola.

Domanda 2 ,

  

Se turn == 0 e P1 è pronto per entrare   nella sua sezione critica, P1 non può farlo   così, anche pensato che P0 potesse essere nel suo   sezione restante

Qual è il significato di questa affermazione? Per quanto potessi pensare, non riuscivo a capire perché turn == 0 e p0 nella sua sezione rimanente potrebbero esistere contemporaneamente ...

Quindi questa affermazione è sbagliata?

È stato utile?

Soluzione

Supponi che turn = 0 inizialmente. P0 fa la sua sezione critica e imposta turn = 1 . Ora, P1 deve eseguire la sua sezione critica prima che P0 possa eseguire di nuovo la sua sezione. Ma solo perché entrambi i thread hanno una sezione critica non significa che vorranno alternare il loro uso in questo modo & # 8212; infatti, P1 potrebbe non fare mai il suo turno. (E nel caso generale, non puoi determinarlo al momento della compilazione .)

Quindi sostanzialmente il problema è che i thread sono costretti ad alternare i loro turni , anche se uno di loro in realtà non vuole entrare nella sua sezione critica per un tempo indefinitamente lungo.

A proposito, la tua risposta alla domanda 1 è corretta. L'algoritmo non fallisce la condizione Progresso , non riesce la condizione Attesa limitata .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top