152
Переходя от философов к вычислительным системам, мы можем
проиллюстрировать тупик таким примером. Процесс A использует
магнитную ленту, но для завершения ему нужен еще и принтер. В это
время процесс B удерживает за собой принтер, но ему нужна еще
магнитная лента. Процессы A и B блокируют друг друга, то есть находятся
в тупике. В системах с множественными ресурсами и с высоким уровнем
мультипрограммирования тупиковые ситуации могут быть и не столь
очевидными. Тупики могут быть локальными и глобальными. Так, если в
приведенном выше примере уровень мультипрограммирования выше 2, то
процессы A и B находятся в локальном тупике, другие процессы, которым
не требуются ресурсы, занятые процессами A и B, могут выполняться.
Философы же на рисунке 5.1 находятся в глобальном тупике.
Бесконечное откладывание – ситуация даже более общая,
свойственная управлению любыми ресурсами, а не только монопольными.
Так, при планировании процессорного времени по статическим
приоритетам низкоприоритетный процесс может откладываться до
бесконечности, если в систему постоянно поступают процессы с более
высокими приоритетами.
Тупик представляет собой ситуацию более опасную, чем
бесконечное откладывание: процессы, попавшие в тупик, удерживают при
этом системные ресурсы. Даже если тупик не глобальный, система
продолжает работать с уменьшенным объемом ресурсов, следовательно, с
пониженной производительностью. Бесконечное же откладывание одного
или нескольких процессов может и не повлиять на среднюю пропускную
способность системы, но, конечно же, влияет на показатели
справедливости обслуживания.
5.3. Тупики: предупреждение, обнаружение, развязка