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

Var pHandles; // адрес массива объектов

fWaitAll: BOOL; // Задает, требуется ли ожидание всех

// объектов или любого

dwMilliseconds, // Период ожидания

dwWakeMask: DWORD // Тип события, прерывающего ожидание

): DWORD; stdcall;

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

  1. Понятие тупиковой ситуации. Модель Холта и её использование. Пример модели Холта. Средства анализа тупиковых ситуаций от компании Microsoft.

Тупик – такое состояние ВС, при котором 2 или более потоков находятся в заблокированном состоянии, и каждый из них ожидает освобождение ресурса, занятого другими потоками.

Для исследования параллельных процессов и тупиков было разработано несколько моделей. Одной из них является модель повторно используемых ресурсов Холта. Согласно этой модели система представляется как множество процессов и множество ресурсов, причем каждый из ресурсов состоит из фиксированного числа единиц. Любой процесс может изменять состояние системы с помощью запроса, получения или освобождения единицы ресурса. В графической форме процессы представляются квадратами, ресурсы – кружками, каждый кружок содержит некоторое количество точек – единиц этого ресурса. Дуга, указывающая из процесса на ресурс, означает запрос одной единицы ресурса. Дуга, указывающая из ресурса на процесс, представляет выделение ресурса процессу. Число дуг, исходящих из ресурса к различным процессам, не может превышать общего числа единиц ресурса. Такая модель называется графом повторно используемых ресурсов.

Условием тупика является цикл.

Потоки нуждаются в синхронизации. Использование синхронизации приводит к тупикам.(признаки Хавендера)

  1. Условия возникновения тупика. Стратегии Хавендера. Методы борьбы с тупиками.

Четыре необходимых условия возникновения тупика (условия Хавендера): 1.Условие взаимоисключения: процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются;

2.Условие ожидания ресурсов: процесс удерживает за собой ресурсы, уже выделенные им, ожидая в то же время выделения дополнительных ресурсов;

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

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

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

Борьба с тупиками основывается на одной из 3х стратегий: - предотвращение тупика; - обход тупика; - распознавание тупика с последующим восстановлением.

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

Средства обнаружения тупиков в ОС:

  1. Модель Холта (1970г.)

  2. Ф-я WCT (ОС Vista 2006г.)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]