Пусть имеются два параллельных процесса. В одном выполняется код P(S1); P(S2) , в другом...

0 голосов
73 просмотров

Пусть имеются два параллельных процесса. В одном выполняется код P(S1); P(S2) , в другом – код P(S2); P(S1) , где S1 и S2 – семафоры. Как будет вести себя программа?


Информатика (29 баллов) | 73 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Все зависит от того, что обеспечивают эти семафоры.
1. Семафоры обеспечивают синхронизацию потоков. Тогда будут выполнены P(S!) в первом потоке и P(S2) во втором, причем более быстрый процесс подождет, а затем работа пойдет одновременно с точки P(S2) в первом потоке и P(S1) во втором.
2. Семафоры захватывают ресурсы. В этом случае произойдет взаимная блокировка. Например, P(S2) в первом потоке будет ждать некоего ресурса, захваченного вторым потоком, а P(S1) во втором потоке - ресурса, захваченного первым потоком.
3. Семафоры запрещают одновременное выполнение некоторого общего участка кода. Также возможна взаимная блокировка по принципу, описанному выше.

БОГ (150k баллов)
10,984,878 вопросов
13,471,016 ответов
8,518,553 комментариев
4,909,216 пользователей