Распознавание дедлоков

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

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

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

Стоимость стратегии распознавания дедлока зависит от того, насколько часто выполняется алгоритм распознавания. Основная “цена” восстановления от дедлока - это потерн времени, которые могут быть существенными.

Далее...

   Обложка   Учебник   Экзамен   Глоссарий   Информация 
Hosted by uCoz