Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Тупики и методы борьбы с ними



Выполняющийся процесс оказывается в тупике, если он ожидает наступления события, которое никогда не произойдёт.

Причины возникновения тупиков многообразны. Решения про­блемы тупиков в общем случае не существует.

Классическим (но далеко не единственным) примером тупика яв­ляется следующий. Предположим, что процессам А и Б, работающим в системе, для выполнения своей работы необходимы ресурсы Р1 и Р2, причём каждый из этих ресурсов не может разделяться между процессами и, кроме того, является оперативно неперераспределя-емым.

Пусть процесс А запросил и получил в своё распоряжение ресурс Р1. После этого закончился его квант времени, и управление получил процесс Б.

Процесс Б запросил и получил в своё распоряжение ресурс Р2. После этого процесс Б запрашивает ресурс Р1, но не может его по­лучить, так как ресурс уже занят процессом А, и должен ожидать освобождения ресурса Р1.

Получив управление, процесс А запрашивает ресурс Р2, но не может его получить, так как ресурс уже занят процессом Б.

Оба процесса будут ожидать освобождения необходимых им ре­сурсов, но это событие никогда не наступит.

Для того, чтобы в системе возник тупик, необходимо выполнение следующих условий.

1) Условие взаимоисключения. Одновременно использовать ре­сурс может только один процесс.

2) Условие ожидания ресурсов. Процессы удерживают ресурсы, уже выделенные им, и могут запрашивать другие ресурсы.

3) Условие неперераспределяемости. Ресурс, выделенный ранее, не может быть принудительно отобран у процесса. Он может быть освобождён только процессом, который его удерживает.

4) Условие кругового ожидания. Существует кольцевая цепь процессов, в которой каждый процесс ждёт доступа к ресурсу, удер­живаемому другим процессом цепи.

Тупик возникает в системе только при одновременном выполне­нии всех четырёх условий.

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

Рассматриваются следующие методы:

- игнорирование проблемы в целом;

- предотвращение тупиков;

- обход тупиков;

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

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

Метод игнорирования проблемы возникновения тупиков основан на наблюдаемом свойстве многих систем, заключающемся в том, что возникновение тупиков — не такое уж частое событие. Игнорирова­ние проблемы возникновения тупиков позволяет создать более про­изводительную, более удобную и комфортную для программистов и пользователей систему.

Однако не во всех системах эту проблему можно игнорировать. Например, возникновение тупиков недопустимо в системах реального времени.





Дата публикования: 2015-02-03; Прочитано: 1268 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...