Введение в архитектуру компьютеров

Язык OCCAM


Для многотранспьютерных систем английскими учеными был создан специальный язык параллельного программирования OCCAM, детальное описание которого было дано в 1984 г. в книге "INMOS Limitid Occam Programming Manual". В отличие от ЯПП, например, Concurent Fortran или Concurent Pascal, он не построен путем расширения известных последовательных ЯП.

Теоретической основой данного языка является язык CSP (Com-municating Sequential Processes), разработанный Т. Хоаром. Основным понятием языка является процесс (примитивный, составной, именованный), напоминающий процедуры и подпрограммы обычных языков программирования.

Простейшим примитивным процессом является процесс SKIP.

Если именованный процесс имеет список формальных параметров, то они следуют в описании процесса после его имени с указанием ключевых слов VALUE, VAR и CHAN, обозначающих их природу: соответственно значение, переменная или канал.

Процессы взаимодействуют с помощью каналов и могут выполняться как последовательно, так и параллельно. Так как в системе команд транспьютера имеются команды, предназначенные для компиляции примитивных процессов считывания из канала и записи в канал, то эти процессы хорошо согласуются с транспьютерной архитектурой. При этом операции создания процессов, их планирования и синхронизации представляются программисту столь же "примитивными" действиями, как и такие операции, как скажем, вызов процедуры в языках последовательного действия.

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

Для описания параллельного процесса после ключевого слова PAR задаются необходимые составляющие его процессы. Выполнение параллельной композиции (PAR-процесса) состоит в выполнении каждой его компоненты до полного их завершения.

Выбор процесса для исполнения в зависимости от готовности других процессов задается через ALT-процесс.

Все имена в Occam-программе до их использования должны быть опи- саны.


Описания позволяют именовать значения констант (ключевое слово DEF), переменных (ключевое слово VAR) и каналы (ключевое слово CHAN). При этом должны быть определены два параллельных процесса: передача в канал и прием из канала в области действия описания каждого канала.

В языке OССАМ существует только один вид структурированных данных– одномерный массив. В Occam-2 допускается использование двумерных и трехмерных массивов различных объектов: констант, переменных и каналов.Описание массива включает его имя, за которым в квадратных скобках записывается константное выражение:

имя [количество].

Например, выбор символов строки string [ ] через канал output будет иметь вид

PROC write. string (CHAN output, VALUE string []).

Язык OССАМ постоянно развивается в связи с совершенствованием транспьютеров и доведением его до языка высокого уровня с естественным расширением класса решаемых задач. При этом выдерживается основной принцип языка: число сущностей не следует умножать без надобности.

Пока трудно сказать, насколько мы приблизились к созданию качественного и практичного ЯПП. Все зависит от класса решаемых задач, архитектур разрабатываемых компьютеров и, естественно, подвержено фактору времени. Для ВС, содержащих небольшое число процессоров, можно с успехом использовать ЯП АЛГОПП, АДА, МОДУЛА-2, OССАМ, имеющие достаточные средства организации параллельных ветвей, синхронизации управления в параллельных ветвях и средства обмена информацией между ветвями.


Содержание раздела