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


Программа на языке ОККАМ состоит из объявлений, присваиваний и ввода/вывода последовательного и параллельного.

Для организации последовательных процессов используется ключевое слово SEQ. После 2-х пробелов идет перечисление последовательно выполняемых процессов. Выполнение параллельных процессов – PAR. Еще есть параллельное выполнение процессов – ALT.

Например:

SEQ

a:=1

b:=2

Это означает, что сначало а будет присвоено единица, а только потом b будет присвоено 2.

PAR

a:=1

b:=2

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

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

У нас будет 3 канала:

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

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

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

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

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

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

PAR

edt(in,out)

key.drv(key,in)

scr.drv(out,scr)

Загрузка...