Презентацию к данной лекции Вы можете скачать здесь.
В данной лекции продолжается изложение темы, начатой в "Тупики (deadlocks), методы предотвращения и обнаружения тупиков" , - методы и алгоритмы борьбы с тупиками при распределении ресурсов операционной системой. Рассмотрены следующие вопросы:
Безопасным состоянием назовем такое состояние, перевод системы в которое не приведет к появлению тупиков.
Общий принцип избежания тупиков состоит в следующем. Когда процесс запрашивает доступный ресурс, система должна определить, приведет ли немедленное выделение данного ресурса к безопасному состоянию системы.
Система находится в безопасном состоянии, если существует безопасная последовательность, состоящая из всех процессов в системе.
Безопасной последовательностью процессов называется последовательность процессов <P1, … Pn>, такая, что для каждого процесса Pi ресурсы, которые он может еще запросить, могут быть выделены из текущих доступных ресурсов и ресурсов, удерживаемых процессами Pj , где j < i.
Если последовательность процессов безопасна, то система может придерживаться следующей безопасной стратегии, с точки зрения распределения ресурсов и исполнения процессов:
Таким образом, справедливы следующие утверждения:
Граф распределения ресурсов рассмотрен в "Тупики (deadlocks), методы предотвращения и обнаружения тупиков" . Для реализации стратегии избежания тупиков к данному графу необходимо добавить информацию не только о фактических, но и о возможных в будущем запросах ресурсов со стороны процессов. Для этого, в дополнение к дугам запросов и присваиваний, введем в рассмотрение дугу потребности (claim edge), которая ведет из вершины-процесса Pi в вершину-ресурс Rj, обозначается пунктирной линией и означает, что процесс Pi может потребовать ресурс Rj.
Когда процесс фактически запрашивает данный ресурс, дуга потребности преобразуется в дугу запроса (пунктирная линия заменяется сплошной).
Когда процесс освобождает ресурс, дуга присваивания преобразуется обратно в дугу потребности.
Цель данной модификации графа – обеспечить, чтобы потребность в ресурсах была априорно известна системе.
Пример графа распределения ресурсов для стратегии избежания тупиков приведен на рис. 14.1.
Легко видеть, что небезопасные состояния системы отображаются циклами в модифицированном графе распределения ресурсов. Пример небезопасного состояния на графе распределения ресурсов приведен на рис. 14.2.
Алгоритм банкира для безопасного распределения ресурсов операционной системой (с избежанием тупиков) был предложен Э. Дейкстрой и впервые реализован в операционной системе THE в конце 1960-х гг. Происхождение названия связано с тем, что поведение алгоритма напоминает осторожную стратегию банкира при проведении банковских операций. Принципы алгоритма банкира следующие.