Рубрики

Операционные системы | Управление процессами | Вопрос 6

Определенное вычисление генерирует два массива a и b, таких что a [i] = f (i) для 0 ≤ i <n и b [i] = g (a [i]) для 0 ≤ i <n. Предположим, что это вычисление разбито на два параллельных процесса X и Y, так что X вычисляет массив a, а Y вычисляет массив b. В этих процессах используются два двоичных семафора R и S, оба инициализированы нулем. Массив a совместно используется двумя процессами. Структура процессов показана ниже.

Process X:                         Process Y:
private i;                         private i;
for (i=0; i < n; i++) {            for (i=0; i < n; i++) {
   a[i] = f(i);                       EntryY(R, S);
   ExitX(R, S);                       b[i]=g(a[i]);
}                                 }

Что из следующего представляет ПРАВИЛЬНЫЕ реализации ExitX и EntryY?

(А)

ExitX(R, S) {
  P(R);
  V(S);
}

EntryY (R, S) {
  P(S);
  V(R);
}

(В)

ExitX(R, S) {
  V(R);
  V(S);
}

EntryY(R, S) {
  P(R);
  P(S);
}

(С)

ExitX(R, S) {
  P(S);
  V(R);
}
EntryY(R, S) {
  V(S);
  P(R);
}

(D)

ExitX(R, S) {
  V(R);
  P(S);
}
EntryY(R, S) {
  V(S);
  P(R);
}

(А) А
(Б) Б
(С) С
(D) D

Ответ: (с)
Объяснение:

The purpose here is neither the deadlock should occur
nor the binary semaphores be assigned value greater 
than one.
A leads to deadlock
B can increase value of semaphores b/w 1 to n
D may increase the value of semaphore R and S to
 2 in some cases

Тест на этот вопрос

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

Операционные системы | Управление процессами | Вопрос 6

0.00 (0%) 0 votes