Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Svoystva_i_klassifikatsia_protsessov.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
236.54 Кб
Скачать

5. Типовые задачи синхронизации. Взаимное исключение

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

В каждом конкретном случае синхронизация задаётся с помощью синхронных правил. Реализация синхронизирующих правил осуществляется с помощью механизмов синхронизации.

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

Задача взаимного исключения

Необходимо согласовать работу двух или более параллельных процессов при использовании некоторого критического ресурса таким образом, чтобы обеспечить удовлетворённость следующим требованиям:

1) Одновременно внутри критической области должно находиться не более одного процесса

2) Критическая область параллельных процессов не должны иметь приоритетов относительно друг друга

3) Остановка любого процесса вне его критической области не должно влиять на дальнейшее выполнение процесса по использованию критического ресурса.

4) Решение о вхождении процессов в их критическую область при одинаковом времени поступления запросов и равенства приоритетов не должно откладываться и является конечным.

5) Относительная скорость развития процессов независимо от производной

6) Любой процесс может переходить в любое состояние вне пределов своей критической области.

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

Решение задачи взаимного исключения:

В языке предоставлены некоторые вещи для решения задачи взаимного исключения: любой объект, метод или участок кода может быть объявлен со спецификатором synchronized. Участок кода, выделенный таким образом всегда выполняется, по отношению к другим потокам, в режиме взаимного исключения, т. е. Если этот участок вызван потом из потока ни в одном другом потоке этот участок выполняться не будет до момента выхода из него первого потока. Для синхронизации потоков так же можно использовать синхронизирующие операторы, например для метода или объекта можно использовать методы wait() и notify(). Так же могут использоваться семафоры.

6. Типовые задачи синхронизации. Производитель-потребитель

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

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

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