Рубрики

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

Общая переменная x, инициализированная в ноль, обрабатывается четырьмя одновременными процессами W, X, Y, Z следующим образом. Каждый из процессов W и X читает x из памяти, увеличивает его на единицу, сохраняет в памяти и затем завершает работу. Каждый из процессов Y и Z читает x из памяти, уменьшает на два, сохраняет его в памяти и затем завершает работу. Каждый процесс перед чтением x вызывает операцию P (т. Е. Ждать) на счетном семафоре S и вызывает операцию V (т. Е. Сигнал) на семафоре S после сохранения x в памяти. Семафор S инициализируется до двух. Каково максимально возможное значение x после завершения всех процессов? (GATE CS 2013)

(А) -2
(Б) -1
(С) 1
(D) 2

Ответ: (Д)
Объяснение: процессы могут выполняться разными способами, ниже приведен один из случаев, когда x достигает максимального значения

Semaphore S is initialized to 2

Process W executes S=1, x=1 but it doesn't update the x variable.

Then process Y executes S=0, it decrements x, now x= -2 and 
signal semaphore S=1

Now process Z executes s=0, x=-4, signal semaphore S=1
Now process W updates x=1, S=2

Then process X executes X=2 

Так что правильный вариант — это D

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

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

0.00 (0%) 0 votes