
- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
-
Задача предотвращения тупиков. Алгоритм упорядоченных классов.
Пример: SR система – тупиковая ситуация (особенно плохо в системах реального времени и системах упраления).
Причем,
процесс Р1 не освобождает R2,
пока не получит R1;
аналогично с Р2. Попав в такую ситуацию,
процесс уже не может выйти из неё. Это
состояние так же называют: 1.Взаимная
блокировка, 2.Тупик (этот термин
используется чаще всего), 3.Тупиковое
состояние, 4.Клинч, 5.Дедлок (dead lock),
6.Смертельные объятия.
Тупиком называется такое состояние системы, при котором некоторое множество
процессов находятся в бесконечно долгом ожидании требуемых ресурсов, в то же время удерживая некоторое множество ресурсов системы. Из тупика система без вмешательства извне никогда не может выйти.
Тупиковое состояние:
1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
Меры борьбы с тупиками
- Статические (анализ текста программы).
- Динамические
-
Обнаружение с последовательным выходом из тупика
-
Ручной выход
-
Автоматический
-
Перехват ресурсов
-
Прекращение процессов (выход с мин. ценой)
-
-
-
Методы предотвращения
-
Метод упорядоченных классов
-
Алгоритм банкира
-
Методы предотвращения – используются в системах, где недопустимо возникновение тупиковых ситуаций. В настоящее время эти методы представлены в основном методом упорядочивания классов (предварительно распределения всех ресурсов системы по классам). Каждому такому классу ставится в соответствие вес от 1 до N и любой процесс может получить ресурс класса L, только если до этого он получит все ресурсы класса L-1. Процессам навязывается порядок использования ресурсов системы. Это приводит к тому, что в графе состояния системы никогда не может возникнуть цикла, т.е. по теореме о тупике система никогда не войдёт в тупиковое состояние. Недостатки: навязывание процессам жесткого порядка в использовании ресурсов, что снижает эффективность системы в целом. Используется в системах с достаточным количеством ресурсов, в которых допустимо плавное снижение эффективности.
-
Конструктор массивов в языке Фортран 90.
В языке вводятся понятия: Ранг массива – размерность от 1 до 7. Ранг скаляра равен нулю. Конфигурация массива – одномерный массив целого типа, его размер равен рангу исходного массива, а значения элементов равны размерам по каждому направлению исходного массива. Массивы равной конфигурации – согласованные. В согласованных массивах элементы, занимающие одинаковое положение относительно первого элемента, называются соответствующими. Скаляр согласован с массивом любой размерности. Все операции над массивами требуют согласованности операндов.
Конструктор массивов дает возможность построить одномерный массив (вектор), имеющий следующий формат: (/С1, С2, … Сn/) , где Ci – элемент конструктора. Элемент конструктора может иметь один из следующих форматов: 1)скалярное выражение, 2)векторное выражение, 3)неявный цикл.
Пример 1 |
(/2, 1, 1, 3, 1/) |
скалярное выражение |
Пример 2 |
(/A1+A2/) |
векторное выражение |
Пример 3 |
(/(2.9, С(N), N=1,3), 8.2/) эквивалентно: (/2.9, С(1), 2.9, С(2), 2.9, С(3), 8.9/) |
неявный цикл |
Тип конструктора определяется типом входящего в него выражения. Конструктор можно использовать как: 1)операнд в выражении, 2)фактический параметр процедуры, 3)элемент списка вывода. Конструктор не может стоять в левой части оператора «=».
Есть возможность преобразовывать массив в массив другой размерности. Пример |
INTEGER MAT (3,2) INTEGER VEC (G) VEC = (/1,10,100,1000,10000,100000/) MAT = RESHARE (SHARE=(3,2), SOURCE = VEC) |
функция RESHARE преобразует исходный вектор VEC в двумерный массив MAT |
Секция массива – часть элементов исходного массива, выбранная из него по определенному правилу. Формат секции массива: b (i1, i2, … , in) , где b – имя исходного массива; ik - индексы секции. Каждый индекс может быть скалярного типа, векторного типа или индексным триплетом. Скалярный– скалярное выражение целого типа. В секции массива по крайней мере 1 индекс не должен быть скалярным выражением, в противном случае секция вырождается в элемент. Формат индексного триплета: [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) |
Могут возникать секции с повторами, в которых один и тот же элемент исходного массива используется несколько раз. Такие секции не могут использоваться в левой части оператора присваивания.
|