<<
>>

Зависание

Проблемой, тесно связанной как с обычной, так и с активной взаимоблокировкой, является зависание. В динамической системе запрос ресурсов происходит постоянно. Для того чтобы принять решение, кто и когда какой ресурс получит, нужна определенная политика.
Эта политика, хотя бы и разумная, может привести к тому, что некоторые процессы никогда не будут обслужены, даже если они не находятся в состоянии взаимоблокировки.

В качестве примера рассмотрим распределение принтера. Представим себе, что система использует некий алгоритм, гарантирующий, что распределение принтера не приводит к взаимоблокировкам. Теперь предположим, что несколько процессов разом захотели получить принтер в свое распоряжение. И кто его получит?

Один из возможных алгоритмов предусматривает передачу принтера тому процессу, у которого самый маленький файл для вывода на печать (предположим, что подобная информация доступна). Такой подход до максимума увеличивает число счастливых клиентов и представляется вполне справедливым.

А теперь посмотрим, что получится на работающей системе, где у одного процесса есть для вывода на печать огромный файл. Как только принтер освободится в очередной раз, система осмотрится и выберет процесс с самым коротким файлом. Если поток процессов с короткими файлами не иссякает, процесс с огромным файлом не получит принтер никогда. Он просто намертво зависнет (будет отложен навсегда, даже если не будет заблокирован).

Зависания можно избежать за счет использования политики распределения ресурсов «первым пришел — первым и обслужен». При таком подходе процесс, ожидающий дольше всех, обслуживается следующим. В конечном итоге любой заданный процесс со временем станет самым старшим в очереди и получит необходимый ему ресурс.

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

6.8.

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

Еще по теме Зависание:

  1. Ключ эффективен с первого применения даже у тех, у кого приемы «не получаются».
  2. Ключ эффективен с первого применения даже у тех, у кого приемы «не получаются».
  3. Походы в кино
  4. Вскрытие механизма, наблюдение
  5. «ЖЕЛАТЕЛЬНО» И «НЕОБХОДИМО»
  6. 9.20. Методика радиэстезического обнаружения энергетических пробок и способы ликвидации их в каналах
  7. Раззеркаливание миров
  8. Нептун
  9. Любая концентрация напрочь выключает внутренний диалог.
  10. Вывод
  11. Глава 3 Каббала — неразбериха или универсальная космическая философия?
  12. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  13. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  14. ПЕРЕДМОВА
  15. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»