Барьер — это конструкция синхронизации, в которой набор процессов синхронизируется глобально, т.е. каждый процесс в наборе достигает барьера и ожидает прибытия всех остальных, а затем все процессы покидают барьер. Пусть число процессов в наборе равно трем, а S — двоичный семафор с обычными функциями P и V. Рассмотрим следующую реализацию C барьера с номерами строк, показанными слева.
|
Переменные process_arrived и process_left являются общими для всех процессов и инициализируются нулями. В параллельной программе все три процесса вызывают функцию барьера, когда им требуется глобальная синхронизация.
Что из нижеперечисленного устраняет проблему в реализации?
(A) Строки с 6 по 10 просто заменяются на process_arrived–
(B) В начале барьера ждет первый процесс, чтобы войти в барьер
пока process_arrived не станет равным нулю, прежде чем приступить к выполнению P (S).
(C) Переключение контекста отключено в начале барьера и повторно включено в конце.
(D) переменная process_left делается приватной, а не общей
Ответ: (Б)
Объяснение:
Шаг «2» не должен выполняться, когда процесс входит в барьер второй раз, пока другие два процесса не завершили свой 7-й шаг. Это сделано для того, чтобы переменная process_arrived стала больше 3.
Таким образом, когда переменная process_arrived становится равной нулю, а переменная process_left также становится равной нулю, проблема тупиковой ситуации будет решена.
Таким образом, в начале барьера первый процесс для входа в барьер ждет, пока process_arrived станет равным нулю, прежде чем приступить к выполнению P (S).
Таким образом, вариант (B) является правильным.
Пожалуйста, прокомментируйте ниже, если вы найдете что-то не так в вышеуказанном посте.
Рекомендуемые посты:
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 52
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 65
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 64
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 53
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 54
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 55
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 56
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 57
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 58
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 59
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 60
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 61
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 62
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 63
- ВОРОТА | Sudo GATE 2020 Mock II (10 января 2019 года) | Вопрос 65
0.00 (0%) 0 votes