Параллельные и последовательные процессы


SEQ – означает секцию последовательных процессов.

PAR – означает секцию параллельных процессов.

Пример:

SEQ

x: = 0

y: = 1 – означает последовательное выполнение процесса

z: = 2 – выход из секции последовательных процессов

PAR

a: = 1

b: = 2

Здесь неизвестно какое присваивание будет первым(может одновременно, может с опозданием), но известно, что тело этого цикла закончится, когда выполнится 2 присвоения.

Пример: драйвер оператора

ALT – данная конструкция используется только при работе канала

Пример:

ALT

WHILE TRUE (скобок никаких нет, но то что имеет отношение к телу WHILE имеет отступ 2 пробела от 1-го знака слова WHILE)

ALT // альтернативное выполнение процессов

left.chan?x // в левый канал вводим число x

output!x // тело процесса left.chan

right.chan?x //

output!x

Эта конструкция непрерывного объединения 2-х потоков данных.

Есть некий процесс alt:

ПАРАЛЛЕЛЬНЫЕ И ПОСЛЕДОВАТЕЛЬНЫЕ ПРОЦЕССЫ

Рис.7.42.

ALT конструкция означает, что войдя в тело этого процесса не ожидает готовности данных, а проверить: есть ли готовность данных – выполняется этот процесс, если нет готовности, то выполняется второй процесс.

Секция или конструкция ALT позволяет выполнять несколько альтернативных процессов в зависимости от готовности того или иного канала.

Пример:

Имеется три процесса функции:

edit(in, out)

kb(in) — процесс ввода данных с клавиатуры

screen(out) — процесс вывода данных на экран

Потребуется три канала (байтовые):

CHAN OF BYTE key // канал, откуда поступают нажатия от клавиш клавиатуры

CHAN OF BYTE scr // канал вывода на экран

CHAN OF BYTE in, out // каналы целых чисел

Нарисуем схему, которую хотим реализовать. Т.е. у нас имеется драйвер клавиатуры, драйвер экрана, как некие процессы и имеется редактор, к-рый вводит с клавиатуры и выводит на экран.

Схема, которая позволит организовать диалог с оператором.

диалог с оператором

Рис.7.43.

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

PAR

edt(in,out)

kb(in)

screen(out)

Загрузка...