Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 2026.docx
Скачиваний:
0
Добавлен:
31.01.2026
Размер:
140.26 Кб
Скачать

37. Взаимные блокировки. Условия, необходимые для возникновения тупика.

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

Для возникновения тупика необходимы четыре условия одновременно: 1. Взаимное исключение – ресурсы, необходимые процессам, не могут использоваться совместно; в каждый момент ресурс доступен только одному процессу. 2. Удержание и ожидание – процесс удерживает уже выделенные ресурсы и одновременно ожидает новые, занятые другими процессами. 3. Невозможность принудительного изъятия ресурса – ОС не может принудительно забрать ресурс у процесса; процесс освобождает его только добровольно. 4. Циклическое ожидание – существует замкнутый цикл процессов, где каждый процесс ожидает ресурс, занятой следующим в цикле.

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

38. Обнаружение взаимоблокировки при наличии одного ресурса каждого типа.

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

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

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

39. Обнаружение взаимоблокировки при наличии нескольких экземпляров ресурса каждого типа.

Для обнаружения взаимоблокировки при наличии нескольких экземпляров ресурсов каждого типа используют матрицу выделения и запроса ресурсов (Resource Allocation Graph или метод Банковского алгоритма).

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

Если такой последовательности нет, это означает, что возникла или может возникнуть взаимоблокировка, и ОС может предпринять меры: приостановить или прервать один из процессов, либо ждать освобождения ресурсов.

Этот метод позволяет корректно выявлять тупики в системах с множественными экземплярами ресурсов и предотвращать их последствия.

40. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.

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

Для одного вида ресурса используется алгоритм банкира: каждому процессу заранее задаётся максимальное количество ресурсов, которые он может запросить. ОС проверяет каждый новый запрос: если после его удовлетворения система остаётся в безопасном состоянии (то есть все процессы смогут завершить выполнение, получая необходимые ресурсы), запрос удовлетворяется; иначе процесс блокируется до освобождения ресурсов.

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