Семафоры. Рис. 1. К проблеме взаимного исключения с использованием критических областей

Рис. 1. К проблеме взаимного исключения с использованием критических областей.

Во многих операционных системах средства синхронизации процессов относят к средствам межпроцессорного взаимодействия - Inter Process Communications (IPS), в которые входят также средства межпроцессного обмена данными.

Современным низкоуровневым решением проблемы взаимного исключения является использование семафоров Дейкстры (E.W.Dijkstra), 1965г. Семафор (semaphore) – это специальный тип переменных, которые могут принимать только неотрицательные значения, и над которыми определены только три следующие операции ( – переменная типа «семафор»):

· - операция инициализации семафора;

· операция - значение переменной уменьшается на единицу, если это возможно; операция интерпретируется как операция опускания (закрытия) семафора;

· операция - значение переменной увеличивается на единицу; операция интерпретируется как операция поднятия (открытия) семафора.

Если семафор закрыт (процессом 1, с помощью операции P(S)), то процесс 2, вызвавший операцию , ждет, пока семафор откроется (процессом 1, с помощью операции V(S)).

Любые процессы могут изменять состояния семафора только с помощью операций , . Выполнение операций , не может быть прервано. Во время выполнения операций , доступ к семафору других процессов запрещен.

Если одной и той же критической секции достигли несколько процессов, то они образуют очередь к семафору.

Простейшим семафором является двоичный семафор, который может принимать лишь два состояния – 0 и 1. Иногда двоичный семафор называют мьютексом (mutex – сокращение от mutual exclusion).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: