Читайте также:
|
|
Выполняющийся процесс оказывается в тупике, если он ожидает наступления события, которое никогда не произойдёт. Причины возникновения тупиков многообразны. Решения проблемы в общем случае не существует.
Предположим, что процессам А и Б, работающим в системе, для выполнения своей работы необходимы ресурсы Р1 и Р2, причём каждый из этих ресурсов не может разделяться между процессами и, кроме того, является оперативно неперераспределяемым (Критический пример тупика).
Пусть процесс А запросил и получил в своё распоряжение ресурс Р1. После этого закончился его квант времени, и управление получил процесс Б. Процесс Б запросил и получил в своё распоряжение ресурс Р2. После этого процесс Б запрашивает ресурс Р1, но не может его получить, так как ресурс уже занят процессом А, и должен ожидать освобождения ресурса Р1. Получив управление, процесс А запрашивает ресурс Р2, но не может его получить, так как ресурс уже занят процессом Б.
Оба процесса будут ожидать освобождения необходимых им ресурсов, но это событие никогда не наступит.
Для того, чтобы в системе возник тупик, необходимо выполнение всех следующих условий:
1) Условие взаимоисключения. Одновременно использовать ресурс может только один процесс.
2) Условие ожидания ресурсов. Процессы удерживают выделенные ресурсы, и могут запрашивать другие.
3) Условие неперераспределяемости. Ресурс, выделенный ранее, не может быть принудительно отобран у процесса. Он может быть освобождён только процессом, который его удерживает.
4) Условие кругового ожидания. Существует кольцевая цепь процессов, в которой каждый процесс ждёт доступа к ресурсу, удерживаемому другим процессом цепи.
Соответственно, методы борьбы с тупиками направлены на устранение хотя бы одного из перечисленных условий. Рассматриваются следующие методы:
- игнорирование проблемы в целом;
- предотвращение тупиков;
- обход тупиков;
- обнаружение тупиков;
- восстановление после тупиков.
Метод игнорирования проблемы возникновения тупиков основан на том, что возникновение тупиков — не такое уж частое событие. Игнорирование проблемы возникновения тупиков позволяет создать более производительную, более удобную и комфортную для программистов и пользователей систему. Однако не во всех системах эту проблему можно игнорировать. Например, возникновение тупиков недопустимо в системах РВ.
Дата добавления: 2015-07-20; просмотров: 89 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Реализация взаимоисключения на аппаратном уровне | | | Нарушение принципа отсутствия перераспределения |