О тупике в Linux и Windows

Предположим, у вас есть два процесса, P1 и P2. P1 имеет высокий приоритет, P2 имеет низкий приоритет. P1 и P2 имеют один общий семафор (т. Е. Оба они ожидают и отправляют сообщения на один и тот же семафор). Процессы могут чередоваться в любом произвольном порядке (например, P2 может быть запущен до P1).

Кратко объясните, могут ли процессы зайти в тупик, когда:

II. оба процесса выполняются в системе Linux как задачи с разделением времени

III. оба процесса работают в системе Windows 7 как переменные задачи

внутривенно Оба процесса выполняются в системе Windows 7 в режиме реального времени.

Я думаю, что P1 и P2 могут привести только к инверсии приоритетов. Согласно одному из требований взаимоблокировки (циклическое ожидание: существует циклическая цепочка из двух или более процессов, ожидающих ресурс, удерживаемый другими процессами), инверсия приоритета не равна взаимоблокировке. Кроме того, P1 и P2 имеют только 1 семафор, что означает, что не будет циклического перехода, поэтому они никогда не вызовут взаимоблокировку. Поэтому всех ответов будет нет. Это верно? Если нет, то каков ответ?

1 ответ

Вы правы, тупик невозможен только с одним семафором.

Тупиковая блокировка для двух процессов может произойти только в том случае, если P1 содержит некоторый ресурс, необходимый для P2, и требует ресурс, удерживаемый P2. Таким образом, P1 не может продолжить работу, пока P2 не освободит ресурс, а P2 не сможет продолжить работу, пока P1 не освободит ресурс. Таким образом, они оба застряли в ожидании друг друга, но не позволяли друг другу двигаться вперед. Как вы уже упоминали, условие кругового ожидания не может быть выполнено с одним семафором.

Кроме того, P1, ожидающий P2 для освобождения ресурса, не является инверсией приоритета. Инверсия приоритета происходит, когда Px имеет приоритет между P1 и P2, и P1 ожидает P2 для освобождения ресурса, в то время как P2 ждет Px, потому что у него более высокий приоритет. Таким образом, P1 ожидает Px с более низким приоритетом, несмотря на то, что он не предназначен (нет общих ресурсов или чего-либо еще).

Другие вопросы по тегам