Рубрики

ВОРОТА | Gate IT 2007 | Вопрос 10

Процессы P 1 и P 2 используют cris_flag в следующей процедуре для достижения взаимного исключения. Предположим, что crit_flag инициализируется в FALSE в основной программе.

get_exclusive_access ( )
{
if (critical _flag == FALSE) {
critical_flag = TRUE ;
critical_region () ;
critical_flag = FALSE;
}
}

Рассмотрим следующие утверждения.
я. Для P 1 и P 2 возможно одновременное обращение к критической_региону.
II. Это может привести к тупику.

Что из следующего верно?
(A) (I) неверно и (II) верно
(B) Оба (I) и (II) являются ложными
(C) (I) верно и (II) ложно
(D) оба (i) и (ii) верны

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

Скажем, P 1 запускается первым и выполняет оператор 1, после чего системный контекст переключается на P 2 (до выполнения оператора 2) и входит внутрь оператора if, поскольку флаг все еще имеет значение false.
Так что теперь оба процесса находятся в критической секции !! так (я) верно .. (II) ложно
Ни в коем случае не бывает, что флаг равен true, и никакие процессы не находятся внутри предложения if; если кто-то войдет в критическую секцию, он определенно сделает flag = false. Так что тупика нет.

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

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

ВОРОТА | Gate IT 2007 | Вопрос 10

0.00 (0%) 0 votes