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