Рубрики

ВОРОТА | GATE CS 2008 | Вопрос 63

Операции P и V по подсчету семафоров, где s — это подсчитывающий семафор, определяются следующим образом:

P(s) : s =  s - 1;
  if (s  < 0) then wait;
V(s) : s = s + 1;
  if (s <= 0) then wakeup a process waiting on s;

Предположим, что Pb и Vb обеспечивают операции ожидания и сигнала на двоичных семафорах. Два двоичных семафора Xb и Yb используются для реализации операций семафора P (s) и V (s) следующим образом:

P(s) : Pb(Xb);
  s = s - 1;
  if (s < 0) {
   Vb(Xb) ;
   Pb(Yb) ;
  }
  else Vb(Xb); 

V(s) : Pb(Xb) ;
  s = s + 1;
  if (s <= 0) Vb(Yb) ;
  Vb(Xb) ;

Начальные значения Xb и Yb соответственно

Рекомендуемые посты:

ВОРОТА | GATE CS 2008 | Вопрос 63

0.00 (0%) 0 votes