Semafori

enigmagame
Ciao a tutti :-D
qualcuno ha seguito un corso di Sistemi Operativi? O comunque conosce i semafori per la sincronizzazione dei processi? Se si fatamelo sapere cosi posto un esercizio d'esame che ho provato a risolvere.
Grazie :D

Risposte
TheWiz@rd
posta pure... :)

enigmagame
Ciao, ok provo a postare un esercizio.
Si considerino i segneti processi (eseguiti sulla stessa CPU) in cui S, T e U sono semafori binari mentre x è una variabile intera condivisa tra P1, P2 e P3 inizializzata a 100.

Processo P1
{
   P(S);
   if(x=0) then
      V(T);
      P(U);
   else
      V(U);
   endif;
   P(S);
   write(x);
}

Processo P2
{
   P(T);
   x:=x-1;
   V(S);
}

Processo P3
{
   P(U);
   x:=x+1;
   V(S);
}


Quale è l'output del processo P1 se i semafori sono inizializzati come segue?
(a) S=1; T=0; U=0;
(b) S=0; T=1; U=1;
(c) S=1; T=1; U=1;

Nel caso (a) l'output dovrebbe essere 101. Negli altri casi non cabisco bene come procedere, in quanto bisogna consideare vari casi, ovvero quale processo parte prima...?
Che ne dite?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.