русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Предотвращение взаимоблокировок

Стратегия предотвращения, по сути, представляет собой такую разработку системы, которая позволит исключить саму возможность взаимоблокировок. Методы предотвращения взаимоблокировок можно разбить на два класса. Косвенный метод состоит в предотвращении одного из первых трех условий возникновения взаимоблокировки; прямой метод предотвращает циклическое ожидание (условие 4). Рассмотрим приемы, связанные с каждым из условий, в отдельности.

Взаимоисключения

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

Удержание и ожидание

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


2 Обычно в литературе все четыре условия перечисляются как необходимые для осуществления взаимоблокировки, однако такое изложение скрывает некоторые тонкости данного вопроса [SHUB90]. Условие циклического ожидания кардинально отличается от остальных трех условий. Первые три условия представляют собой, по сути, незыблемые правила, в то время как условие 4 представляет собой ситуацию, которая может осуществиться при определенной последовательности запросов и освобождений ресурсов процессом. Объединение все четырех условий в единый блок методологически приводит к стиранию различий между предотвращением и устранением взаимоблокировок.

Отсутствие перераспределения

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

Циклическое ожидание

Условия циклического ожидания можно избежать путем упорядочения типов ресурсов. При этом если процесс запросил ресурс типа R, то далее он может запросить только ресурсы, следующие согласно указанному упорядочению за R.
Чтобы убедиться в эффективности данной стратегии, свяжем с каждым типом ресурса свой индекс. Тогда ресурс Rt предшествует ресурсу Rj, если ;<;'. Теперь предположим, что два процесса, А и В, взаимно заблокированы, поскольку процесс А захватил ресурс Rt и запрашивает ресурс Rj, а процесс В захватил ресурс Rj и запрашивает ресурс Д. Однако такая ситуация невозможна, в силу того что из нее следует одновременное выполнение условий i < j и j < i.
Как и в случае предотвращения удержания и ожидания, технология предотвращения циклического ожидания может оказаться неэффективной, снижающей скорость работы процесса и закрывающей доступ к ресурсам без особой на то необходимости.

Просмотров:

Вернуться в оглавление:Операционные системы




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.