Критические области

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

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

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

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

1. Два процесса не могут одновременно находиться в своих критических областях.

2. Не должны выстраиваться никакие предположения по поводу скорости или количества центральных процессоров.

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

4. Процессы не должны находиться в вечном ожидании входа в свои критические


В абстрактном смысле необходимое нам поведение показано на рис. 2.16. Мы видим, что процесс А входит в свою критическую область во время Т1. Чуть позже, когда наступает время Т2, процесс Б пытается войти в свою критическую область, но терпит неудачу, поскольку другой процесс уже находится в своей критической области, а мы допускаем это в каждый момент времени только для одного процесса. Следовательно,

Б временно приостанавливается до наступления времени Т3, когда А покинет свою критическую область, позволяя Б тут же войти в свою критическую область. Со временем (в момент Т4) Б покидает свою критическую область, и мы возвращаемся в исходную ситуацию, когда ни один из процессов не находится в своей критической области.

2.3.2.

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

Еще по теме Критические области:

  1. Критические градусы
  2. ПСИХОЛОГИЯ КРИТИЧЕСКАЯ
  3. 5. Критическая теория и рабочий класс.
  4. Традиционная и критическая теория
  5. Правило критического возвратак исходной точке.
  6. Правило критического возврата к исходной точке.
  7. Критические социальные исследования
  8. 3. Способность к суждению, критическое мышление и открытость новому
  9. Анти-Козлов, или Критическое бурчание
  10. "КРИТИЧЕСКИЕ ДНИ".
  11. Критическое мышление
  12. Критическое мышление
  13. Критическое мышление
  14. Критическое мышление
  15. Критическое мышление
  16. Критическое Приложение
  17. Д) УМЕНИЕ ЧИТАТЬ С ПОНИМАНИЕМ И КРИТИЧЕСКИ
  18. А.И. Богданович. Критические заметки