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

UptoLike

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

Совместно используемая переменная lock управляет доступом к
общим данным. Если lock=0, любой процесс может изменить зна-
чение lock, т.е. lock:=1 и обратиться к общим данным, а затем из-
менить его обратно, т.е. lock:=0. Прежде чем попасть в критиче-
скую секцию, процесс вызывает процедуру enter_region, которая
выполняет активное ожидание вплоть до снятия блокировки (когда
другой процесс, находившийся в критической секции, вышел из нее),
после чего она устанавливает блокировку и возвращает управление
процессу, который входит в критическую секцию. По выходе из кри-
тической секции процесс вызывает процедуру leave_region, сни-
мающую блокировку.
Взаимное исключение для доступа к общим данным может быть реа-
лизовано аппаратно путем [6]:
запрета прерываний в однопроцессорной системе;
использования аппаратно-поддерживаемой команды.
Запрет прерываний может быть обеспечен использованием примити-
вов, определенных ядром для запрета и разрешения прерываний.
Недостатком аппаратного подхода и алгоритма Петерсона
является наличие цикла активного ожидания входа в крити-
ческую секцию, расходующего процессорное время.
Использование механизмов операционной системы
Фундаментальный принцип взаимодействия двух или несколь-
ких процессов заключается в использовании обмена сигналами [3].
Для сигнализации используются специальные переменные, называе-
мые семафорами. Для передачи сигнала через семафор s процесс вы-
полняет примитив signal(s) , а для получения сигналапримитив
wait(s). В последнем случае процесс приостанавливается до тех
пор, пока не осуществится передача соответствующего сигнала.
58