Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpora_1-10_bez_vosmogo1.docx
Скачиваний:
3
Добавлен:
16.04.2019
Размер:
108.79 Кб
Скачать

44) Поняття синхронізації. Виявлення та запобігання тупиків (блокувань).

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

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

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

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

3 способ: алгоритм аналогичен алгоритму принятия решения по выпуску займа.

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

45) Синхронізація потоків. Функції та використання моніторів.

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

CSBegin()(if(!Busy)Busy = true; else CriticalSection.Wait();)

CSEnd(|(Busy == false; Critical Section.Signed();)

Структура процессов с критическими секциями:

Процесс 1

Процесс 2

CSBegin();

// Критическая секция процесса 1

CSEnd;

CSBegin();

// Критическая секция процесса 2

CSEnd;


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