В условиях многопроцессной ОС приведён сценарий: три процесса A, B, C и два ресурса R1, R2; A держит R1 и ждёт R2, B держит R2 и ждёт R1, C ждёт R1 — опишите процедуру детектирования и разрешения взаимоблокировки (deadlock), объясните достоинства и недостатки заранее vs динамической стратегии

17 Ноя в 10:02
1 +1
0
Ответы
1
Сценарий: три процесса A,B,CA,B,CA,B,C и два ресурса R1,R2R1,R2R1,R2: AAA держит R1R1R1 и ждёт R2R2R2; BBB держит R2R2R2 и ждёт R1R1R1; CCC ждёт R1R1R1.
Детектирование:
- Построить граф распределения ресурсов: assignment edges R1→AR1 \to AR1A, R2→BR2 \to BR2B; request edges A→R2A \to R2AR2, B→R1B \to R1BR1, C→R1C \to R1CR1.
- Свести к wait‑for‑graph (вершины — процессы): добавить A→BA \to BAB (A ждёт ресурс у B), B→AB \to ABA, C→AC \to ACA.
- Найти циклы (DFS/Tarjan). Сложность поиска цикла: O(n+e)\mathrm{O}(n+e)O(n+e), где nnn — число процессов, eee — число рёбер.
- Интерпретация: найден цикл A↔BA \leftrightarrow BAB — взаимоблокировка между AAA и BBB; CCC блокирован косвенно (ждёт у участника цикла).
Разрешение (варианты и пример):
- Завершение процесса (terminate victim): выбрать жертву по критерию стоимости (мин. работа, мин. удерживаемые ресурсы, приоритет) и убить её. Пример: завершить BBB → освобождён R2R2R2AAA получает R2R2R2, завершает и освобождает R1R1R1CCC продолжает.
- Откат (rollback): вернуть жертву к контрольной точке, освободив ресурсы; требует чекпоинтов.
- Принудительное изъятие ресурсов (preemption): вытребовать ресурсы у владельца и передать другому, с механизмом восстановления состояния.
- Комбинации; следить за возможной голодной смертью жертв (starvation).
Заранее (prevention/avoidance) vs динамическая (detection+recovery)
- Заранее (например, deadlock prevention или Banker's algorithm):
- Достоинства: гарантированно отсутствуют взаимоблокировки; предсказуемость поведения.
- Недостатки: требует заранее известной информации (максимальных потребностей) или строгих ограничений; снижает параллелизм и загрузку ресурсов; сложнее реализовать для динамических систем.
- Динамическая детекция + восстановление:
- Достоинства: большая гибкость и лучшая загрузка ресурсов; не требуется полная предсказуемость потребностей.
- Недостатки: накладные расходы на детекцию (периодические проверки или поддержание графа), стоимость восстановления (убийство/откат процессов), риск голодания и временной нестабильности системы.
Рекомендация: для систем с жёсткими требованиями к надёжности и предсказуемости — стратегии заранее; для общих ОС и систем с динамическими нагрузками — детекция и восстановление, с внимательным выбором политики выбора жертвы и предотвращением голодания.
17 Ноя в 10:50
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир