Операционные системы. Процессы и потоки. Илюшкин Б.И. - 54 стр.

UptoLike

Составители: 

P2 и P3 приостановлены. После выхода P1 из критической секции
доступ к ресурсу будет получен одним из процессов P2, P3. Пусть ОС
предоставила доступ к ресурсу R процессу P3. Пока ресурс занят
процессом P3, доступ к ресурсу может снова потребоваться процессу
P1. Может оказаться, что ОС снова предоставит доступ к ресурсу
процессу P1. Пока ресурс занят процессом P1, процессу P3 может
снова потребоваться доступ к ресурсу R. Таким образом, возможна
ситуация, при которой процесс P2 никогда не получит доступ к тре-
буемому ему ресурсу, несмотря на отсутствие взаимной блокировки.
2.5.1. Средства низкоуровневой синхронизации
Программный подход
Программный подход может быть реализован для параллельных
процессов, которые выполняются как в однопроцессорной, так и в
многопроцессорной системе с разделяемой основной памятью [3].
Обычно такой подход предполагает взаимоисключения на уровне
доступа к памяти. Одновременный доступ (чтение и/или запись) к
одной и той же ячейке основной памяти упорядочивается при помо-
щи следующего механизма. Рассмотрим для простоты два процесса
P0 и P1. Пусть зарезервирована глобальная ячейка памяти turn. Перед
выполнением критического участка процесс (P0 или P1) проверяет
содержимое turn. Если значение turn равно номеру процесса, то про-
цесс может войти в критический участок. В противном случае он
должен ждать, постоянно опрашивая значение turn до тех пор, пока
оно не позволит ему войти в критический участок. Пусть также опре-
делен логический вектор flag, в котором flag[0] соответствует процес-
су P0, а flag[1] – процессу P1. Каждый процесс может ознакомиться с
флагом другого процесса, но не может его изменить. Когда процессу
54