Что такое блокирующие переменные. Спин блокировка, семафоры, мьютекс.

Блокирующие переменные – способ взаимного исключения, каждому разделяемому ресурсу ставиться соответствующая двоичная переменная(пример: значение 0 – ресурс свободен, значение 1 – ресурс занят).

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

Необходимо блокировать процесс до его входа в критическую область.

Введено понятие семафоров. Семафоры – тип переменных, значение которых может быть нулем или некоторым положительным числом, соответствующим количеству отложенных активизирующих сигналов. У семафоров есть две операции: Up и Down. Если значение семафора равно нулю, процедура Down не возвращает управление процессу, а процесс переводиться в состояние ожидания. Все операции проверки значения семафора, его изменения и перевода процесса в состояние ожидания выполняются, как единое элементарное действие.

Мьютекс – упрощенная версия семафора, не считает сигналы, а лишь управляет взаимным исключением доступа к совместно используемым ресурсам. Две команды: mutecs lock, mutecs unlock. Если мьютекс блокирует несколько процессов, то когда процесс выходит из критической секции, вызывает процедуру mutecs unlock, то из очереди этих за блокируемых процессов, случайным образом для выполнения и доступа к ресурсу выбирается 1.

 

д/з: выяснить что означают операции Up и Down у семафора. Пособие Храпского(стр 26-27)