Рис. 1. К проблеме взаимного исключения с использованием критических областей.
Во многих операционных системах средства синхронизации процессов относят к средствам межпроцессорного взаимодействия - Inter Process Communications (IPS), в которые входят также средства межпроцессного обмена данными.
Современным низкоуровневым решением проблемы взаимного исключения является использование семафоров Дейкстры (E.W.Dijkstra), 1965г. Семафор (semaphore) – это специальный тип переменных, которые могут принимать только неотрицательные значения, и над которыми определены только три следующие операции (
– переменная типа «семафор»):
·
- операция инициализации семафора;
· операция
- значение переменной
уменьшается на единицу, если это возможно; операция интерпретируется как операция опускания (закрытия) семафора;
· операция
- значение переменной
увеличивается на единицу; операция интерпретируется как операция поднятия (открытия) семафора.
Если семафор закрыт (процессом 1, с помощью операции P(S)), то процесс 2, вызвавший операцию
, ждет, пока семафор откроется (процессом 1, с помощью операции V(S)).
Любые процессы могут изменять состояния семафора только с помощью операций
,
. Выполнение операций
,
не может быть прервано. Во время выполнения операций
,
доступ к семафору
других процессов запрещен.
Если одной и той же критической секции достигли несколько процессов, то они образуют очередь к семафору.
Простейшим семафором является двоичный семафор, который может принимать лишь два состояния – 0 и 1. Иногда двоичный семафор называют мьютексом (mutex – сокращение от mutual exclusion).






