Язык "Occam". Язык "ADA"
Язык "Occam" разработан специально для использования в транспьютерных вычислительных системах, компоненты которых связаны коммуникационной сетью. Основными инструкциями языка являются:
- SEQ – последовательное выполнение блоков инструкций;
- PAR– параллельное выполнение блоков инструкций;
- PRI – выборочное закрепление процесса за некоторым физическим процессором;
- ALT – выбор процесса из множества возможных процессов;
- CHAN – декларирование коммуникационных каналов связи между процессорами;
- PROTOCOL – определение типа данных в канале;
- TIMER – определение временных интервалов передачи данных в сети.
Рассмотрим пример использования языка"Occam" в программе регулирования мощности громкоговорителя (каждый оператор записывается в отдельной строке):
VAL max IS 100 : min IS 0 : BOOL aktiv : INT lautstarke, wert : ("громкость, значение")
SEQ aktiv:= TRUE lautstarke:= min ("громкость") verstarker!lautstarke:= ("усилитель!громкость")
WHILE aktiv ALT (lautstarke<max) & lauter?wert SEQ lautstarke := lautstarke + wert
IF lautstarke>max lautstarke:=max verstarker!lautstarke (lautstarke>min)&leiser?wert
SEQ lautstarke:= lautstarke-wert IF lautstarkePAR verstarker!min aktiv:=FALSE
Инструкции SEQ и PAR вводят соответственно последовательный и параллельный порядок выполнения операций, ALT дает возможность выбрать нужное сообщение, а условие (lautstarke<max) должно быть выполнено, чтоб это сообщение было воспринято. Программа воспринимает от процессов сообщения с именами lauter, leiser aus (громче, тише, выключить), а для определения силы звучания использует числовые значения, которые отсылаются процессу verstarker (усилитель).
Основной проблемой использования языка"Occam" в больших системах и программах является поиск соответствующего отображения процессов на процессоры, который не в полной мере поддерживается языком и операционными системами современных параллельных вычислительных машин.
Язык "ADA". Язык "ADA" появился в результате выполнения проекта Министерства обороны США, в котором была предпринята попытка объединить в одном языке достоинства нескольких языков программирования, существовавших до 1979 года. Для обмена данными между параллельными процессами (tasks) в языке "ADA" принята так называемая "концепция рандеву", т.е. концепция сообщений.
Основными конструкциями языка являются следующие:
- task – параллельный процесс;
- entry – декларирование имен входов-сообщений;
- accept –ожидание вызова процессом процедуры entry;
- select – инструкция выбора сообщений, поступающих из разных входных пунктов;
- when – ограничение возможностей выбора сообщений при выполнении инструкции select.
Рассмотрим предыдущий пример программ регулирования мощности громкоговорителя c использованием языка "ADA" (каждый оператор записывается в отдельной строке):
task regler is entry lauter (wert:in integer); entry leiser (wert:in integer); entry aus ( ); end;
task body regler is max: constant integer := 100; min: constant integer := 0; lautstarke: integer;
begin loop select when lautstarke <max=> accept lauter(wert:in integer)
do lautstarke := lautstarke + wert; if lautstarke > max then = lautstarke:= max end if;
verstarker.eigang(lautstarke); end lauter; or whenlautstarke >min=> acceptleiser (wert:in integer)
do lautstarke := lautstarke + wert; if lautstarke < min then = lautstarke:= min end if;
verstarker.eigang(lautstarke); end leiser; or when .. acceptaus ( ) doverstarker.eigang(min);
end aus; endselect; end loop; end regler;
В данной программе присутствует единый процесс task regler, который запускается автоматически во время инициализации "ADA"-программы. В ней имеется возможность задавать так называемые типы задач и декларировать несколько задач одного типа. Каждая задача автоматически запускается во время инициализации ее декларирования.
В приведенном примере каждая из трех подпрограмм lauter, leiser aus (громче, тише, выключить) вызывается с помощью соответствующего сообщения. При этом процесс, вызывающий сообщение, блокируется во время выполнения подпрограммы. Первые две accept–инструкции защищены when-условием и выбираются для соответствующего сообщения, если переменная величина lautstarke находится в соответствующих пределах. Третья accept–инструкция является безусловной и всегда может быть выполнена.
Дата добавления: 2023-01-28; просмотров: 406;