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

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

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


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

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

(150k баллов)