- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
ОККАМ относится к языкам с явным описанием параллелизма.
OKKAM – явное описание взаимодействия параллельных процессов.
Транспьютер (Transistor Computer)
Однокристальный компьютер Iumos T9000.
Хоар «Взаимодействие последовательных процессов».
Дэвид Мэт – автор ОККАМ.
Любая программа представляется как совокупность взаимодействующих параллельных процессов. Взаимодействие осуществляется через программные каналы.
При реализации на конкретной вычислительной системе программные каналы отображаются на физические link-и. Это даёт возможность составлять программу без предварительного учёта числа транпьютеров.
Взаимодецствие параллельных процессов через программные каналы осуществляется по принципу РАНДЕВУ.
Принцип Рандеву – процесс, передающий информацию другому процессу, ожидает от последнего сигнала готовности приёма; процесс, принимающий информацию, ожидает от первого сигнала готовности передачи.
Передача при наличии 2-х сигналов.
Процесс – одна из допустимых конструкций. Каждая конструкция состоит их элементарных процессов: 1)присваивание (:=), 2)ввод информации (?), 3)оператор вывода информации (!), 4)фиктивные процессы: SKIP – пустой процесс (ничего не делает, мгновенно начинается и мгновенно заканчивается) и STOP (начинается, ничего не делает, никогда не завершается).
КОНСТРУКЦИИ ОККАМ.
SEQ |
|
Все процессы выполняются последовательно. Работа заканчивается, когда заканчивается последний из процессов. |
||||||||||
PAR |
|
Все процессы начинаются одновременно и выполняются независимо. |
||||||||||
ALT |
|
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, по которому передается массив из целых чисел.