Рубрики

ВОРОТА | GATE-IT-2004 | Вопрос 65

Переменные семафора full, empty и mutex инициализируются равными 0, n и 1 соответственно. Процесс P 1 многократно добавляет один элемент за раз в буфер размера n, а процесс P 2 многократно удаляет один элемент за раз из одного и того же буфера, используя программы, приведенные ниже. В программах K, L, M и N являются неопределенными утверждениями. P1

while (1) {

K;

Р (мьютекс);

Добавить элемент в буфер;

В (мьютекс);

L;

}

P2

while (1) {

M;

Р (мьютекс);

Удалить элемент из буфера;

В (мьютекс);

Н;

}

Утверждения K, L, M и N соответственно

(A) P (полный), V (пустой), P (полный), V (пустой)
(B) P (полный), V (пустой), P (пустой), V (полный)
(C) P (пустой), V (полный), P (пустой), V (полный)
(D) P (пустой), V (полный), P (полный), V (пустой)

Ответ: (D)
Объяснение:
Процесс P1 является производителем, а процесс P2 является потребителем.

Семафор «полный» инициализируется как «0». Это означает, что в буфере нет элемента.
Семафор «пустой» инициализируется как «n». Это означает, что в буфере есть место для n элементов.

В процессе P1 ожидание семафора 'empty' означает, что если в буфере нет места, то P1 не может произвести больше элементов. Сигнал семафора «полный» означает, что один элемент был добавлен в буфер.

В процессе P2 ожидание семафора 'full' означает, что если буфер пуст, то потребитель не может использовать ни один элемент. Сигнал семафора 'empty' увеличивает интервал в буфере после использования элемента.

Таким образом, вариант (D) является правильным.

Пожалуйста, прокомментируйте ниже, если вы найдете что-то не так в вышеуказанном посте.

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

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

ВОРОТА | GATE-IT-2004 | Вопрос 65

0.00 (0%) 0 votes