- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
 - •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
 - •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
 - •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
 - •Высокопроизводительный Фортран 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. Язык оккам. Общая характеристика. Операторы языка оккам.
 
- 
Программирование пространственно-временных структур на языке оккам.
 
| 
				 Пример 1: Пространственно-временная структура изображается в виде ориентированного графа. 
 CHAN OF INT C: INT A: PAR C ! 1 C ? A «1» передается по каналу С в переменную «а».Транслятор отобразит процессы на транспьютер, а транспьютер на linkи. Данные процессы выполняются параллельно.  | 
			
				 Пример 2: →объединение информации, поступающей по каналам в произвольном порядке. Не заботимся о синхронизации. 
 WHILE TRUE ALT LEFT.CHAN ? X OUTPUT ! X RIGHT.CHAN ? X OUTPUT ! X  | 
		
	П
ример
	3:
[4] CHAN OF INT CHANS :
PAR I=0 FOR 3
PIPE.EL( CHANS[I], CHANS[I+1])
Согласование обеспечивается операторами приема и выдачи из канала. Здесь реализована линейная пространственно-временная структура, включающая в себя три процесса и массив из четырех каналов. Параллельные процессы образуются при обращении к процедуре PIPE.EL, к которой в качестве параметров передаются 2 соседние элементы массива каналов.
Пример 4: реализованы двумерная пространственно-временная структура, в которой два двумерных массива каналов X.CHANS и Y.CHANS, и параллельная вложенная конструкция PAR, в которой процессы создаются при вызове процедуры.
	[
3][2]
	CHAN OF INT       X.CHANS:
[2][3] CHAN OF INT Y.CHANS:
PAR I=0 FOR 2
PAR J=0 FOR 2
GRID.EL (X.CHANS[I,J], Y.CHANS[I,J], X,CHANS[I+1],J, Y.CHANS[I,J+1])
- 
Секции массивов в языке фортран 90.
 
Секция массива - часть элементов исходного массива, выбранная из него по определенному правилу.
Формат секции массива: b (i1, i2, … , in) , где b – имя исходного массива, ik - индексы секции.
Каждый индекс может быть скалярного типа, векторного типа или индексным триплетом. Скалярный индекс – скалярное выражение целого типа.
Замечание: в секции массива по крайней мере один индекс не должен быть скалярным выражением, в противном случае секция вырождается в элемент.
Формат индексного триплета:
[l1] : [l2] : [l3]
где:
l1 – нижняя граница
l2 – верхняя граница
l3 – шаг
Пример использования индексного триплета.
DINSION ROW (N), COL (M)
DINSION Z (M, N)
……………
ROW=Z(3,:)
COL=Z(:,J)
CALL SUB1(Z(M:1:-2,1:N:2))
В этом примере массиву CALL присваивается J-й столбец массива Z. Массиву ROW присваивается 3-я строка массива Z.
Пример использования векторного индекса
INTEGER A(10,10), U(3), U(4)
INTEGER MAT (3,4), VNEW(4)
V=(/1,3,2/)
U=(/2,1,1,3/)
VNEW=A(3,U) à A(3,2), A(3,1), A(3,3)
MAT=A(U,V)
à
A(1,2), A(1,1), A(1,1), A(1,3)
A(3,2), A(3,1), A(3,1), A(3,3)
A(2,2), A(2,1), A(2,1), A(2,3)
Из примера видно, что при использовании векторного индекса могут возникать секции с повторами, в которых один и тот же элемент исходного массива используется несколько раз.
Такие секции не могут использоваться в левой части оператора присваивания.


