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

А) Нарушение условия взаимоисключения

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

Б) Hарушение условия ожидания дополнительных ресурсов

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

  • В первой фазе каждый процесс должен запрашивать все требуемые ему ресурсы сразу, причем не может начать выполняться до тех пор, пока все они не будут ему предоставлены.

  • Если же процесс, удерживает определенные ресурсы и получает отказ в выделении ему дополнительных ресурсов, то он должен освободить свои первоначальные ресурсы и, при необходимости, запросить их снова вместе с дополнительными.

в) Нарушение принципа отсутствия перераспределения.

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

С) Нарушение условия кругового ожидания

Решение этой проблемы – упорядочить ресурсы.

Первый способ -  присвоить всем ресурсам  уникальные  номера и потребовать, чтобы процессы запрашивали ресурсы в порядке возрастания номеров. Тогда  круговое ожидание возникнуть не может. Упорядочивание ресурсов в ОС Windows2000 –создание спин – блокировок. Спин–блокировка – способ синхронизации процессов наиболее простой. Спин – блокировка может быть захвачена и освобождена процессом.

Второй способ - каждый процесс может иметь только один ресурс в каждый момент времени. Если нужен второй ресурс - освободи первый.

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

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

Способы вывода из тупика

  1. Завершить выполнение одного или более процессов, чтобы использовать его ресурсы. После каждой ликвидации должен запускаться алгоритм обнаружения тупика.

  2. Временно забрать ресурс у текущего владельца и передать его другому процессу.

Возможность забрать ресурс у процесса, дать его другому процессу и затем вернуть его назад без нанесения ущерба сильно зависит от природы ресурса. Подобное  восстановление часто трудно, если не невозможно.

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

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

Заключение. Борьба с тупиками слишком дорога, поэтому надо бороться только в тех системах, где игнорирование приведет к катастрофе.