Большинство задач ОС по согласованию параллельных процессов можно решить либо с помощью этих типовых задач, либо с помощью их модификаций.
Необходимо обеспечить максимально параллельное и правильное развитие процессов.
Каждый из таких процессов может устанавливать не только одностороннюю, но и двухстороннюю связь через одну и ту же обобщенную область или другие области. Области могут хранить не одно, а большее количество сообщений.
В общем случае число, как процессов-производителей, так и процессов - потребителей может быть большим одного.
Задача «читатели-писатели»
В отношении некоторой области внешней памяти, являющейся критическим ресурсом для параллельных процессов, работающих с ней, выделяется два типа процессов:
- Первый тип – процессы-писатели. Они могут записывать информацию в область, и могут это делать, только исключая как друг друга, так и процессов-читателей (на основе решения задачи взаимного исключения)
- Второй тип – процессы-читатели. Считывают информацию из области (могут одновременно, если это допускает соответствующее устройство)
Имеются различные варианты взаимодействия между писателями и читателями:
Устанавливается приоритетность в использовании критического ресурса процессам-читателям. Если хотя бы один процесс-читатель пользуется ресурсом, то он закрыт для всех писателей и доступен всем читателям.
Наоборот, больший приоритет у писателей. При появлении запроса от процесса-писателя ресурс закрывается для всех читателей.
Наиболее характерная область использования этой задачи – при построении файловых систем ОС.
Задача кругового распределения ресурсов (обедающие философы).
Pa, Pb, Pc – параллельные процессы
r1, r2, r3 – ресурсы
Особенность развития процессов такова, что:
- для выполнения процесса Pa ему требуется выделить одновременно ресурсы r1 и r2 ,
- для выполнения процесса Pb ему требуется выделить одновременно ресурсы r2 и r3 ,
- для выполнения процесса Pcему требуется выделить одновременно ресурсы r3 и r1 .
Скорости развития процессов произвольны. Переходы из выполняющегося состояния в другие происходят в непредсказуемые моменты.
Синхронизация в данном случае заключается в определенном упорядочении действий процессов по захвату ресурсов во избежание возможных блокировок одними процессами других.
Две опасности:
- - возникновение тупиковой ситуации при распределении ресурсов
- - возникновение ситуации голодания в отношении некоторого процесса при распределении ресурса
Пример: задача об обедающих философах Э. Дейкстра (Взаимодействие последовательных процессов).
Пример реализации взаимного исключения в операционной системе Windows NT приведен на рис. 4.3.
Рис. 4.3. Реализация взаимного исключения в операционной системе Windows NT