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

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;


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