Рубрики

ВОРОТА | GATE-CS-2016 (набор 2) | Вопрос 58

Рассмотрим следующее решение для синхронизации двух процессов.

Process 0                             Process 1                          

Entry: loop while (turn == 1);        Entry: loop while (turn == 0);
       (critical section)                    (critical section)
       Exit: turn = 1;                       Exit turn = 0; 

Общая переменная поворота инициализируется в ноль. Что из следующего является ИСТИННЫМ?
(A) Это правильное решение для синхронизации двух процессов.
(B) Это решение нарушает требование взаимного исключения.
(C) Это решение нарушает требование прогресса.
(D) Это решение нарушает требование ограниченного ожидания.

Ответ: (с)
Объяснение: Взаимное исключающее требование предотвращает одновременный доступ к общему ресурсу. Поскольку поворот семафора инициализируется нулем, и это значение семафора изменяется только после критической секции для заданных процессов. Таким образом, за один раз обеспечивается не более одного процесса в критической секции, т. Е. Выполняется взаимоисключающее требование.

Прогресс означает, что процесс должен в конечном итоге быть в состоянии завершить. Но непосредственно Процесс 1 не может перейти в критическую секцию, поскольку значение семафора изначально равно 0, и этот процесс 1 может перейти в CS только после процесса 0. Таким образом, требование прогресса не выполняется.

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

ВОРОТА | GATE-CS-2016 (набор 2) | Вопрос 58

0.00 (0%) 0 votes