17. Межпроцессное
взаимодействие. Состояние состязания. Критические области. Взаимное исключение
с активным ожиданием.
Межпроцессное
взаимодействие (англ. Inter-Process Communication, IPC) — набор способов
обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на
одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Методы IPC зависят
от пропускной способности и задержки взаимодействия между потоками и типа
передаваемых данных.
Состояние
состязания
Состояние состязания-это
ситуация в которой два или более процесса считывают или записывают данные
одновременно и конечный результат зависит от того какой из них был первым
Критические
области
Часть программы, в которой происходит обращение к
совместно используемым данным, называется критической областью или критической
секцией.
1. Два процесса не должны одновременно находиться в
критических областях.
2. В программе не должно быть предположений о скорости
или количестве процессоров.
3. Процесс, в состоянии вне критической области, не
может блокировать другие процессы.
4. Недопустима ситуация, в которой процесс вечно ждет
попадания в критическую секцию.
Запрещение прерываний
Заключается в запрещении всех прерываний
при входе процесса в критическую область.
Недостаток этого метода в том, что если
произойдет сбой процесса, то он не сможет снять запрет на прерывания.
Переменные блокировки
Вводится понятие переменной блокировки,
т.е. если значение этой переменной равно, например 1, то ресурс занят другим
процессом, и второй процесс переходит в режим ожидания (блокируется) до тех
пор, пока переменная не примет значение 0.
|