Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указ. по выпон. контр. р. по Опера...doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.66 Mб
Скачать

Распределение ресурсов

Ресурсом называется всякий объект, который может распределяться внутри системы.

Ресурсы могут быть разделяемыми (например,  память, процессор, диски  коллективно используются процессами), когда несколько процессов используют их одно­временно (в один и тот же момент времени), а могут быть и выделенными, например, лентопротяжное устройство, принтер. 

Управление ресурсами включает решение следующих задач:

  • Планирование ресурса – т.е. определение, какому процессу, когда и в каком количестве следует выделить ресурс;

  • Удовлетворение запросов на ресурсы;

  • Отслеживание состояния и учет использования ресурса – т.е. поддержание оперативной информации занят или свободен ресурс и какая доля ресурса уже распределена;

  • Разрешение конфликтов между процессами.

В ОС могут возникнуть тупиковые ситуации. Предположим, что несколько процессов конкурируют за обладание конечным числом ресурсов. Если запрашиваемый процессом ресурс недоступен, процесс переходит в состояние ожидания. В случае если  требуемый ресурс удерживается другим ожидающим процессом, то  первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком.  Говорят, что в мультипрограммной системе процесс находится в состоянии тупика, дедлока (deadlock) или клинча, если он ожидает события, которое никогда не произойдет.  Системная тупиковая ситуация или зависание системы является следствием того, что один или более процессов находятся в состоянии тупика или взаимоблокировки.

Множество процессов находятся в тупиковой ситуации, если каждый процесс ожидает события, которое только другой процесс данного множества может вызвать.

Тупики возникают как в аппаратных, так и в программных ресурсах.

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

Рис. 12. Пример тупиковой ситуации.

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

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

Условия возникновения тупиков

Условия возникновения тупиков были сформировыаны Коффманом, Элкином, Шошани в 1970г.

1.   Условие взаимоисключения (Mutual exclusion).  Каждый ресурс выделен в точности одному процессу или доступен. Процессы требуют предоставления им монопольного управления ресурсами, которые им выделяются.

2.   Условие ожидания ресурсов (Hold and wait). Процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время выделения дополнительных  ресурсов (которые при этом  обычно удерживаются другими процессами).

3.   Условие неперераспределяемости (No preemtion). Ресурс, данный ранее, не может быть принудительно забран у процесса. Освобождены они могут быть только процессом, который их удерживает.

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

Основные направления борьбы с тупиками:

  1. Игнорировать проблему в целом

  2. Предотвращение тупиков

  3. Обнаружение тупиков

  4. Восстановление после тупиков

Игнорирование проблемы тупиков

Подход современных ОС (UNIX, Windows) состоит в том, чтобы игнорировать данную проблему в предположении, что маловероятный тупик предпочтительнее, чем нелепые правила, которые заставят пользователя ограничить число процессов, открытых файлов.

Способы предотвращения тупиков.

  1. Можно избежать взаимоблокировки, если тщательно распределять ресурсы, придерживаясь определенных правил. Алгоритм банкира. Это алгоритм базируется на безопасных и надежных состояниях.

Безопасное состояние – это такое состояние, для которых имеется хотя бы одна последовательность событий, которая не приведет к взаимоблокировке. Модель основана на действиях банкира, имея деньги, выдает кредиты.

Текущее состояние системы называется надежным, если ОС может обеспечить всем процессам их выполнение в течение конечного времени.

2. Можно избежать взаимоблокировки, если нарушить условия возникновения тупиков