Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_Параллельное программирование.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
205.31 Кб
Скачать

10.Параллельная обработка информации в транспьютерных системах. Язык оссам как инструментальное средство параллельного программирования транспьютерных систем.

Однородные системы – это совокупность однородных вычислительных устройств или модулей одинаковым образом связанных между собой. Количество таких вычислительных устройств неограниченно может быть сколь угодно большим. Для ОВС характерна избыточность вычислительных устройств и связей между ними, что позволяет обеспечить высокую степень готовности и надежности работы всей системы в целом, легко проводить перестройку в случае решения любой задачи или в случае выхода из строя отдельных элементов системы.

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

1)принцип параллельности операций: ему соответствует аксиома параллельности задач и алгоритма

2)принцип переменности логической структуры

3)принцип конструктивной однородности элементов и связи между ними: ему соответствует аксиома контролируемой однородности элементов

1)устанавливает что любая сложная задача может быть разбита на набор связанных между собой простых подзадач и для получения моделей задачи может быть предложен алгоритм допускающий ее эффективную параллельную реализацию

2)базируется на 1) Процесс решения задачи можно представить некоторой структурной моделью включающей в себя набор подзадач и связей между ними, данной структурной модели можно поставить в соответствие другую структурную модель, представляющую собой совокупность обработанных элементов и связей между ними (процесс решения задачи может быть описан с помощью схемы алгоритма т.е. планарного графа. Существует утверждение, что планарный граф …

Поскольку транспьютерные система – это ОВС, в которой все элементы однородны, равноправны и имеют одинаковое количество связей с другими элементами и эти связи локальны, структурную моделью транспортной системы удобно рассматривать как решетчатый граф:

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

Язык ОССАМ язык назван в честь философа. Основными единицами, из которых строится программа на языке ОССАМ, является простые действия, из которых с помощью управляющих примитивов формируется различного рода процессы:

1)последовательный 2)параллельный 3)альтернативный 4)условие

Операторных скобок в языке нет, поэтому принадлежность какого-либо действия или подпроцесса другому процессу определяется благодаря величине отступа от левого края.

Простые действия в ОССАМ: 1)присваивание 2)ввод 3)вывод 4)SKIP – процесс (пустое действие) 5)STOP – блокировка процесса 1)переменная := выражение 2)канал ? переменная , канал ? переменная 1; переменная 2; переменная 3 …N 3)канал ! выражение

Ввод и вывод данных соответствует операции чтения информации из канала и запись информации в канал.

Каналами называются средства позволяющие передавать данные между процессами.

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

Каналы, константы и переменные являются основными и новыми объектами, которыми оперирует программа на языке ОССАМ

Все эти объекты подлежат обязательному предварительному описанию. Имена объектов могут включать в себя буквы, цифры и символ точка.

Описания завершаются символом двоеточие.

Допустимо описывать несколько объектов одной директивы. В этом случае имена объектов разделяются запятыми.

Константы в ОССАМ называются именованными объектами, которым соответствует состояние неизвестных значений.

Переменными в языке ОССАМ трактуется как обозначения битовых комбинаций фиксированного размера.

Переменные должны быть описаны раньше того процесса, в котором они используются.

Определение происходит иначе:

Var переменная 1,…N

DEF константа 1,..N

CHAN канал 1…N

Как правило, описания каналов располагаются перед управлением инфинитивом PAR. В ОССАМ поддерживается только один структурный тип данных – массивы.

Массивы: 1)один и тот – же массив 2)таблицы 3)обилие массивов- это массивы переменных или каналов.

[var | chan] имя массива [ количество элементов] они используются в составе определения констант DEF

TABLE [ выражение 0…N]

Описание процедуры или именование процесса выглядит следующим образом:

PROC имя [фор-е параметры]=текст процесса

SEQ

Chan |? A

Chan? B

Z:=a+b

Все действия и подпрограммы входящие в его состав.

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

Par

Seq

Рar

Char|?a

Char?b

Z:=a+b

Char 3!z

Seq

Rar

Char |!5

Char|!

Char 3|z

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

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

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

Сторож считается готовым, если логическое выражение истинно и готов охраняющий процесс.

Охраняющий процесс SKIP готов всегда:

(x>y)&char 1?a

res!a

(x<y)&char 2?b

res!b

(x=y)& skip

res !zero.code

Условный процесс или if процесс имеет следующий синтаксис:

Логическое выражение 1

Процесс 1

……………….

Логическое выражение n

Процесс n

If a<b

Char 1! 1

a>b

char 1 !(-1)

a=b

char 1!0

Для организации циклов используется while процесс

While процесс – последовательный цикл с неограниченным количеством повторений.

While логическое выражение и повторяемый процессы

B:=true

While b

Seq

Char 1?a

Char 2!a

If

a>10

b:=false

ОССАМ позволяет задавать такую разновидность циклов, как массивы процессов, при этом указывает, сколько процессов надо повторить, и какими являются эти процессы: 1)последовательными 2)параллельными 3)альтернативными 4)условными

Действия, выражающиеся в повторных процессах должны быть идентичны

[ALT |par |seq|if] имя счетчика = [ for количество]

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

Par:=[0 for 100]

Buffer [:]array[i]

Пример решения задачи выполнения сортировки одномерного массива по не возрастанию. Процедура описывает поведение элемента матричного процессора:

Proc sort (chan in, out; var default)=

Var x,m:

M:=default

Seq:=[0 for]

M?x

Alt

(x>m)&skip

seq

out!m

m:=u

not (u>m)&skip

out!x