Монитороподобные средства синхронизации

Введение

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

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

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

Механизм типа «критическая область»

Как следует из названия, это механизм, ориентированный на решение задачи взаимного исключения.

Для построения критической области используется две языковые конструкции. Одна из них VAR V: SHARED T; предназначена для описания критического ресурса, и её используют в начале текста программы в области описания типов переменных. Вторая описывает доступ к ресурсу в тексте программы REGION V DO S.

VAR R: SHARED T1;

Q: SHARED T2;

Begin

Parbegin

Процесс 1:... L1: REGION R DO S1;...

Процесс 2:... L2: REGION Q DO S2;...

...........

процесс i:... Li: REGION R DO S3;...

Parend;

End.

Процессы 1-ый и i-ый взаимно разделяют ресурс R и при выполнении программы будет выполнятся только одна из областей.

Описание переменной V: SHARED T означает, что определяется ресурс с именем V, как некоторая переменная, доступная параллельным процессам. Тип ресурса задаётся его описанием T.

Для осуществления доступа к ресурсу V в тексте программы процесса требуется использовать конструкцию вида REGION V DO S. Такая конструкция описывает отдельную критическую область относительно критического ресурса V и определяет действия S, которые будут осуществлены над ресурсом. Такие конструкции при исполнении исключают друг друга относительно критического ресурса.

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

TYPE T = ARRAY 1..100 OF INTEGER;

VAR M: SHARED T;

Begin

Parbegin

Процесс 1: L1: <действие процесса>

REGION M DO <обработка массива M>;

GOTO L1;

..................

Процесс N: Ln: <действие процесса>

REGION M DO <обработка массива M>;

GOTO Ln;

Parend;

End.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: