Книга: Основы программирования в Linux
Описание семафора
Описание семафора
Простейший семафор — это переменная, способная принимать только значения 0 и 1, бинарный или двоичный семафор. Это наиболее распространенный вид семафора. Семафоры, принимающие много положительных значений, называют семафорами общего вида. В оставшейся части главы мы сосредоточимся на двоичных семафорах.
Определения операций P и V
удивительно просты. Предположим, что у вас есть переменная-семафор sv
. В этом случае обе операции определяются так, как представлено в табл. 14.1.
Таблица 14.1
Операция | Описание |
---|---|
Р(sv) |
Если sv больше нуля, она уменьшается на единицу. Если sv равна 0, выполнение данного процесса приостанавливается |
V(sv) |
Если какой-то другой процесс был приостановлен в ожидании семафора sv , переменная заставляет его возобновить выполнение. Если ни один процесс не приостановлен в ожидании семафора sv , значение переменной увеличивается на единицу |
Другой способ описания семафора — считать, что переменная sv
, равная true
, когда доступна критическая секция, уменьшается на единицу с помощью P(sv)
и становится равна false
, когда критическая секция занята, и увеличивается на единицу операцией V(sv)
, когда критическая секция снова доступна. Имейте в виду, что обычная переменная, которую вы уменьшаете и увеличиваете на единицу, не годится, т.к. в языках С, С++, C# или практически в любом традиционном языке программирования у вас нет возможности сформировать единую атомарную операцию, проверяющую, равна ли переменная true
, и если это так, изменяющую ее значение на false
. Именно эта функциональная возможность делает операции с семафором особенными.
- Описание работы МП
- Описание разъемов МП
- Описание программы настройки BIOS
- Описание работы ЦПУ
- Описание типов модулей оперативной памяти
- Описание работы накопителя на жестком магнитном диске
- Описание работы CD-DVD-приводов
- Описание видеокарты
- Описание мониторов
- Описание аудиокарт
- Описание акустических систем
- Описание модемов