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

25,26. Язык оккам. Общая характеристика. Операторы языка оккам.

ОККАМ относится к языкам с явным описанием параллелизма.

OKKAM – явное описание взаимодействия параллельных процессов.

Транспьютер (Transistor Computer)

Однокристальный компьютер Iumos T9000.

Хоар «Взаимодействие последовательных процессов».

Дэвид Мэт – автор ОККАМ.

Любая программа представляется как совокупность взаимодействующих параллельных процессов. Взаимодействие осуществляется через программные каналы.

При реализации на конкретной вычислительной системе программные каналы отображаются на физические link-и. Это даёт возможность составлять программу без предварительного учёта числа транпьютеров.

Взаимодецствие параллельных процессов через программные каналы осуществляется по принципу РАНДЕВУ.

Принцип Рандеву – процесс, передающий информацию другому процессу, ожидает от последнего сигнала готовности приёма; процесс, принимающий информацию, ожидает от первого сигнала готовности передачи.

Передача при наличии 2-х сигналов.

Процесс – одна из допустимых конструкций. Каждая конструкция состоит их элементарных процессов: 1)присваивание (:=), 2)ввод информации (?), 3)оператор вывода информации (!), 4)фиктивные процессы: SKIP – пустой процесс (ничего не делает, мгновенно начинается и мгновенно заканчивается) и STOP (начинается, ничего не делает, никогда не завершается).

КОНСТРУКЦИИ ОККАМ.

SEQ

--

процесс 1

…………

процесс n

Все процессы выполняются последовательно. Работа заканчивается, когда заканчивается последний из процессов.

PAR

--

процесс 1

…………

процесс n

Все процессы начинаются одновременно и выполняются независимо.

ALT

--

input 1

process 1

…………

input n

process n

input 1…n – сторожа (охрана). Каждый сторож – процесс ввода. Сторож открыт, если в соответствующий канал уже передано сообщение. Перед началом работы ALT проверяется соответствие всех сторожей. Если все сторожа закрыты – ожидание открытия какого-либо из них. Если открыты несколько сторожей, то выбирается произвольный процесс и затем работа завершается.

Замечание: имеется возможность управлять порядком выбора процесса при нескольких открытых сторожах. Способы:

1. вычисляется логическое выражение перед сторожем

2. указывается приоритет PRI <число>

Типы данных: BYTE, INT 16, INT 32, INT 64, INT, REAL 32, REAL 64, BOOL.

Запись чисел: 11.273, 1.3E3, #FC.

В ОККАМ имеется возможность преобразовывать литеральные константы к указанному типу:

Epsilon := 1.0E-6 (REAL 64)

Double := 1.0 (REAL 32) + single

Описание констант. VAL <тип> <константа> IS <константное выражение> :

Пример: VAL BYTE Limit IS 255 (BYTE) :

Описание переменных. <тип> <переменная> :

Пример: BYTE char :

Описание каналов. СHAN OF <тип> <имя> :

Пример: CHAN OF BYTE chan:

C каждым каналом связан определенный тип данных, которые могут вводиться/выводиться в определённых направлениях (протоколы канала). Протоколы могут быть простые и сложные.

Операции в языке ОККАМ. + - * /

REM – остаток от деления на целое число.

Операции по модулю, PLUS, MINUS, TIMES.

Замечания:

1) В языке ОККАМ нет старшинства операций. Порядок следования явно определяется круглыми скобками (): ( А + В ) + С, но А+В+С – не верно.

2) При каждом операнде можно задавать явное преобразование типа.

Логические операции: AND, OR, NOT, что соответствует (= <> ≤ ≥ < >)

Операции над битами: BIT AND, BIT OR, >< (исключающее «или»), BITNOT, << (сдвиг влево), >> (сдвиг вправо).

Операция сдвига: <операнд> << <число сдвигов>

МАССИВЫ.

[размер] <тип> <имя> :

Пример: [50] REAL 32 Reading :

Число размерностей не ограничено, индексы нумеруются с «0».

Описание массивов – каналов.

Пример:

[10] CHAN OF INT CHAN1:

CHAN OF [10] INT CHAN2:

В этом примере описаны:

- массив каналов с именем CHAN1 из 10 элементов

- один канал CHAN2, по которому передается массив из целых чисел.

1

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