Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 6004.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

3.3.Тупики

Говорят, что в мультипрограммной системе процесс находится в состоянии тупика (дедлока, клинча), если он ожидает события, которое никогда не произойдет. "Зависание" системы - это ситуация, когда один или более процессов оказываются в состоянии тупика (рис. 16.).

Рис. 16. Пример тупика - транспортная пробка.

Другой пример. В операционных системах тупики в большинстве случаев возникают в результате обычной конкуренции за обладание выделяемыми или закрепляемыми ресурсами (т.е. ресурсами, которые в каждый момент времени отводятся только одному пользователю и которые поэтому иногда называются ресурсами последовательного использования). Пусть Процесс1 удерживает Ресурс1 и ожидает освобождения Ресурса2. Процесс2 удерживает Ресурс2 и ожидает освобождения Ресурса1. Каждый процесс ждет, чтобы другой процесс освободил нужный ему ресурс, причем каждый не освобождает свой ресурс до тех пор, пока другой не освободит свой ресурс и т.д. Такое состояние кругового ожидания характерно для систем в тупиковом состоянии.

Возможны тупики и в системе спулинга (ввода/вывода с буферизацией). Режим спулинга применяется для повышения производительности системы путем изолирования программ от такого низкоскоростного периферийного оборудования как принтеры. Если, например, программе, выдающей строки данных на принтер, приходится ждать распечатки каждой строки, то такая программа будет выполняться медленно. Чтобы повысить скорость выполнения программы, строки данных, предназначенные для печати, записываются на более высокоскоростное устройство, например дисковый накопитель. В некоторых системах спулинга программа должна сформировать все выходные данные - только после этого начнется реальная распечатка. Система может оказаться в тупике, если дисковый буфер окажется целиком заполненным до завершения задания. Конечно, современные системы являются в этом смысле гораздо более совершенными. Они могут начинать печать до того, как завершится очередное задание, с тем чтобы полный или почти полный дисковый буфер опустошался уже в процессе выполнения задачи: сброс этого буфера на принтер можно поручить специальному системному процессу, независящему от потока пользовательских процессов и задач.

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

3.3.1.Условия возникновения тупика

Можно сформулировать четыре необходимых условия тупика:

1. Условие взаимоисключения: процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются.

2. Условие ожидания ресурсов: процессы удерживают ресурсы, уже выделенные им, ожидая выделения дополнительных ресурсов.

3. Условие неперераспределяемости: ресурсы нельзя отобрать у процессов, удерживающих их, пока эти ресурсы не будут использованы для завершения работы.

4. Условие кругового ожидания: существует кольцевая цепь процессов, удерживающих ресурсы, требующиеся следующему процессу цепи.

В исследованиях по проблеме тупиков можно выделить следующие основные направления:

1. Предотвращение тупиков.

2. Обход тупиков.

3. Обнаружение тупиков

4. Восстановление после тупиков.