The design of the UNIX Operating System 38 страница



 

Нарушение принципа отсутствия перераспределения

 

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

 

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

 

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


Основы операционных систем 69

Hарушение условия кругового ожидания

 

Трудно предложить разумную стратегию, чтобы избежать последнего условия из раздела "Условия воз-никновения тупиков" – циклического ожидания.

 

Один из способов – упорядочить ресурсы. Например, можно присвоить всем ресурсам уникальные номе-ра и потребовать, чтобы процессы запрашивали ресурсы в порядке их возрастания. Тогда круговое ожи-дание возникнуть не может. После последнего запроса и освобождения всех ресурсов можно разрешить процессу опять осуществить первый запрос. Очевидно, что практически невозможно найти порядок, ко-торый удовлетворит всех.

 

Один из немногих примеров упорядочивания ресурсов – создание иерархии спин-блокировок в Windows 2000. Спин- блокировка – простейший способ синхронизации (вопросы синхронизации процессов рас-смотрены в соответствующей лекции). Спин-блокировка может быть захвачена и освобождена процес-сом. Классическая тупиковая ситуация возникает, когда процесс P1 захватывает спин-блокировку S1 и претендует на спин-блокировку S2, а процесс P2, захватывает спин-блокировку S2 и хочет дополнитель-но захватить спин-блокировку S1. Чтобы этого избежать, все спин-блокировки помещаются в упорядо-ченный список. Захват может осуществляться только в порядке, указанном в списке.

 

Другой способ атаки условия кругового ожидания – действовать в соответствии с правилом, согласно ко - торому каждый процесс может иметь только один ресурс в каждый момент времени. Если нужен второй ресурс – освободи первый. Очевидно, что для многих процессов это неприемлемо.

 

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

 

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

 

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

 

Рассмотрим модельную ситуацию.

 

• Процесс P1 ожидает ресурс R1.

 

• Процесс P2 удерживает ресурс R2 и ожидает ресурс R1.

 

• Процесс P3 удерживает ресурс R1 и ожидает ресурс R3.

 

• Процесс P4 ожидает ресурс R2.

• Процесс P5 удерживает ресурс R3 и ожидает ресурс R2.

 

Вопрос состоит в том, является ли данная ситуация тупиковой , и если да, то какие процессы в ней участ-вуют. Для ответа на этот вопрос можно сконструировать граф ресурсов, как показано на рис. 7.3. Из ри-сунка видно, что имеется цикл, моделирующий условие кругового ожидания, и что процессы P2,P3,P5, а может быть, и другие находятся в тупиковой ситуации.


Дата добавления: 2021-01-21; просмотров: 94; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!