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