Рубрики

ВОРОТА | GATE CS 2013 | Вопрос 65

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

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

Ответ: (Д)
Объяснение:
Объяснение фона:

Критическая секция, в которой процесс может изменять общие переменные, обновлять таблицу, писать файл и выполнять другую функцию. Важная проблема заключается в том, что если один процесс выполняется в его критической секции, ни один другой процесс не может быть разрешен для выполнения в его критической секции. Каждый процесс должен запросить разрешение на вход в свой критический раздел. Семафор — это инструмент для синхронизации, и он используется для устранения проблемы критической секции, которая заключается в том, что никакие два процесса не могут выполняться одновременно вместе, поэтому для удаления этих двух сигналов используются операции, называемые ожиданием и сигналом, которые используются для удаления взаимного исключения критический раздел. как беззнаковый один из наиболее важных примитивов синхронизации, потому что вы можете создать множество других декрементов. Семафор называется его получением или блокировкой, а приращение называется освобождением или разблокировкой.

Решение :

Поскольку начальное значение семафора равно 2, два процесса могут одновременно входить в критическую секцию — это плохо, и мы можем понять, почему.
Скажем, X и Y — процессы. X увеличивает x на 1, а Z уменьшает x на 2. Теперь Z сохраняет обратно, а после этого X сохраняет обратно. Итак, конечное значение x равно 1, а не -1, и две операции Signal снова устанавливают значение семафора 2. Таким образом, теперь W и Z также могут выполняться так, и значение x может быть равно 2, что является максимально возможным в любом порядке выполнения процессов. (Если семафор инициализирован в 1, обработанный будет работать правильно, и мы получаем окончательный
значение х как -2.)

Вариант (D) является правильным ответом.

Другое решение:

Процессы могут выполняться разными способами, ниже приведен один из случаев, когда x достигает максимального значения. Семафор S инициализируется значением 2.
Процесс W выполняет S = 1, x = 1, но не обновляет переменную x.
Затем процесс Y выполняет S = 0, он уменьшает x, теперь x = -2 и семафор сигнала S = 1
Теперь процесс Z выполняет s = 0, x = -4, семафор сигнала S = 1
Теперь процесс W обновляет x = 1, S = 2. Затем процесс X выполняет X = 2.
Так что правильный вариант — это D

Другое решение:

S — это счетный семафор, инициализированный 2, т. Е. Два процесса могут войти в критическую секцию, защищенную S. W, X читает переменную, увеличивает на 1 и записывает обратно. Y, Z может прочитать переменную, уменьшить ее на 2 и записать обратно.
Всякий раз, когда выполняется Y или Z, счетчик уменьшается на 2. Таким образом, чтобы получить максимальную сумму, мы должны скопировать переменную в один из процессов, который увеличивает счет, и в то же время обрабатываемый убывающий процесс должен выполняться параллельно, так что все они записывают обратно в память, могут быть переопределены путем увеличения процесса. Таким образом, по сути, снижение никогда не произойдет.

Ссылки по теме:
http://quiz.geeksforgeeks.org/process-synchronization-set-1/
http://geeksquiz.com/operating-systems-process-management-question-11/ для объяснения

Это решение предоставлено Nitika Bansal

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

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

ВОРОТА | GATE CS 2013 | Вопрос 65

0.00 (0%) 0 votes