Атака условия взаимного исключения

Сначала предпримем атаку на условие взаимного исключения. Если в системе нет ресурсов, отданных в единоличное пользование одному процессу, мы никогда не попадем в ситуацию взаимоблокировки. Данные проще всего сделать доступными только для чтения, чтобы процессы могли их использовать одновременно.
Но также понятно, что если позволить двум процессам одновременно печатать данные на принтере, то это приведет к хаосу. За счет использования очереди на печать (спулинга) выдавать свои выходные данные могут сразу несколько процессов. В этой модели единственным процессом, который фактически запрашивает физический принтер, является демон[38] принтера. Так как демон не запрашивает никакие другие ресурсы, взаимоблокировки, связанные с принтером, можно исключить.

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

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

6.6.2.

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

Еще по теме Атака условия взаимного исключения:

  1. § 65 Компания на акциях. – Первоначальное управление. Выбор правления. – Общее собрание акционеров. – Состав его, созыв, предметы обсуждения, порядок решения. – Отчетность и контроль. – Прекращение компании и ликвидация. – Ограничение в устройстве компаний для банковых операций. – Предполагаемые преобразования. – Иностранные компании. – Товарищество взаимного кредита и другие союзы взаимного содействия.
  2. 5.3.2. Мозговая атака
  3. АТАКА МОЗГОВАЯ
  4. Правило "атака – лучшая оборона".
  5. Правило «атака — лучшая оборона».
  6. § 2 Условное обязательство. – Разные виды условий. – Наступление условия и его действие. – Соотношение условий. – Понятие о сроке. – Действие срока.
  7. Исключения
  8. какиe виды тайны влекут исключения из числа свидетелей.
  9. Статья 128. Исключение из состава участников полного общества
  10. ИСКЛЮЧЕНИЯ ПРИ АНАЛИЗЕ ГОЛОСОВОГО КОДА
  11. ИСКЛЮЧЕНИЯ ПРИ АНАЛИЗЕ ГОЛОСОВОГО КОДА
  12. 3. Общества взаимного страхования
  13. ВЗАИМНАЯ РЕЦЕПЦИЯ
  14. Простая и взаимная аппликация или сепарация
  15. Статья 130. Расчеты в случае выхода, исключение и убытие с полного общества
  16. Глава 16 СИТУАЦИИ ВЗАИМНОГО ВАМПИРИЗМА. СТАТИЧЕСКИЕ КОНФЛИКТЫ
  17. ЛЮБОВЬ БЫВАЕТ ТОЛЬКО ВЗАИМНОЙ!
  18. § 66 Об условных назначениях вообще. – Условия невозможные и незаконные. – Условия, стесняющие гражданскую свободу.
  19. § 2. Требования об освобождении имущества от ареста и исключении имущества из описи (п. 2509-2515)
  20. Витамин V мы получаем от эсякого любящего человека, к которому испытываем взаимную привязанность.