267
Все рассмотренные выше методы используют занятое ожидание: если
процесс не может войти в критическую секцию, он зацикливается на
опросе переменных состояния. Следующие методы используют
блокировку ожидающего процесса – перевод его из списка процессов,
планируемых на выполнение (готовых) в список ожидающих
(заблокированных). Этим экономится процессорное время, в противном
случае попусту растрачиваемое в занятом ожидании, а затраты сводятся
к переключению процессов.
Такая возможность обеспечивается:
• введением специальных целочисленных общих переменных,
которые называются семафорами;
• добавлением к набору элементарных действий, из которых
строятся процессы, операций над семафорами: V-операции и P-
операции.
V-операция есть операция с одним операндом, который должен быть
семафором. Выполнение операции состоит в увеличении значения
аргумента на 1, это действие должно быть атомарным.
P-операция есть операция с одним операндом, который должен быть
семафором. Выполнение операции состоит в уменьшении значения
аргумента на 1, если только это действие не приведет к отрицательному
значению операнда. Выполнение P-операции, т.е. принятие решения о том,
что момент является подходящим для уменьшения аргумента, и
последующее его уменьшение должно быть атомарным.
Атомарность P-операции и является потенциальной задержкой: если
процесс пытается выполнить P-операцию над семафором, значение
которого в данный момент нулевое, данная P-операция не может
завершиться пока другой процесс не выполнит V-операцию над этим
семафором. Несколько процессов могут начать одновременно P-операцию