Блокирующие переменные

В качестве второй попытки рассмотрим программное решение, в котором используется одна общая (блокирующая) переменная, исходное значение которой равно нулю. Когда процессу требуется войти в свою критическую область, сначала он проверяет значение блокирующей переменной.
Если оно равно 0, процесс устанавливает его в 1 и входит в критическую область. Если значение уже равно 1, процесс просто ждет, пока оно не станет равно нулю. Таким образом, нулевое значение показывает, что ни один из процессов не находится в своей критической области, а единица — что какой-то процесс находится в своей критической области.

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

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

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Блокирующие переменные:

  1. ПЕРЕМЕННАЯ ПРОМЕЖУТОЧНАЯ
  2. ПЕРЕМЕННАЯ
  3. ПЕРЕМЕННАЯ ЗАВИСИМАЯ
  4. ПЕРЕМЕННАЯ НЕЗАВИСИМАЯ
  5. ПЕРЕМЕННАЯ КОНТРОЛИРУЕМАЯ
  6. Пять переменных У. Мичела.
  7. Сопротивление переменам в нас
  8. Теория «типовых переменных» и индивидуального выбора (Т. Парсонс).
  9. Ситуация действия и «Pattern Variables» («типовые переменные»)
  10. Сознание — первый шаг к выздоровлению и переменам
  11. Самоодобрение и самопринятие - ключ к положительным переменам в нашей жизни
  12. III. 1. 6. Лингвистические описания систем.
  13. МЮ-РИТМ
  14. АНАЛИЗ ФАКТОРНЫЙ