Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
5
Добавлен:
10.12.2018
Размер:
377.86 Кб
Скачать
  1. Организация ввода и вывода в языке норма.

В программе на языке НОРМА все величины, значения которых задаются из вне, должны быть описаны как входные, а величины, являющиеся результатами работы программы должны быть описаны как выходные. (записываются на внешний носитель)

Пример:

ВХОДНЫЕ x,y,U

ВЫХОДНЫЕ давление, плотность ПО треугольнику

В этом примере описываются входные величины x,y,U как СКАЛЯРНЫЕ. Выходные величины давление и плотность определены по треугольнику.

Так как язык НОРМА является непроцедурным, в программе явно не описываются порядок вычислений, который будет установлен транслятором на основе анализа соотношений между входными и выходными величинами, следовательно в программе на языке НОРМА невозможен потокоориентированный ввод и вывод. И все данные (входные и выходные) на внешнем носителе должны быть представлены в виде <идентификатор> = <значение>.

  1. Понятия критического ресурса и критической секции.

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

Асинхронные процессы не требуют одинаковой скорости работы процессоров и жесткой потактовой синхронизации между ними.

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

Такие ресурсы

- различные устройства

- общая память

- общие структуры данных и процедуры.

Взаимодействие параллельных процессов основано на решении трех проблем:

1. Синхронизация 2-х и более процессов

2. Проблема «производитель - потребитель»

3. Проблема взаимных блокировок

Синхронизация параллельных процессов.

Проблема синхронизации возникает при использовании параллельными процессами общих ресурсов:

- аппаратные ресурсы

- программные ресурсы (структуры данных и процедуры)

- информационные ресурсы

Режимы использования:

- монопольное (ресурсом владеет только один процесс)

- разделяемое (ресурсом владеет любое число процессов)

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

Задача синхронизации – обеспечить вхождение в свою критическую секцию только одного процесса. Могут использоваться как программные, так и аппаратные средства.

Средства синхронизации:

- высокого уровня

- низкого уровня (двоичные семафоры)

  1. Проблема «Производитель-потребитель». Общие семафоры.

Взаимодействие параллельных процессов основано на решении трех проблем:

1. Синхронизация 2-х и более процессов

2. Проблема «производитель - потребитель»

3. Проблема взаимных блокировок

Проблема «производитель - потребитель» возникает при взаимодействии асинхронных параллельных процессов, использующих потребляемые («расходуемые») ресурсы.

Все ресурсы вычислительной системы делятся на 2 типа:

  • SR – повторно используемые (все аппаратный ресурсы (устройства, каналы сязи, память), преоперабельные процедуры, неизменяемые ресурсы структуры данных - после использования возвращаются в систему в неизменном виде).

  • CR потребляемые (изменяемые структуры данных и процедуры, а также все сообщения и сигналы, информационные ресурсы, программные, т.е. не могут возвратиться с систему в неизменном виде).

SR ресурсы: после освобождения процессом возвращаются в систему в неизменном виде для дальнейшего использования.

СR ресурсы: не возвращаются в систему или возвращаются в изменённом виде

Некоторые процессы в системе генерируют потребляемые ресурсы определенного типа, другие их потребляют. Необходима синхронизация процессов производителя и потребителя по каждому из ресурсов CR-типа. Это решается с помощью общих семафоров.

Данная проблема решается с помощью общих семафоров.

Общий семафор – целочисленная переменная, принимающая значения 0 ≤ x ≤ n.

Операции определенные над семафорами.

P(x)

x-1, если x > 0

0, если x = 0 – перевод процесса в режим ожидания (уменьш. на 1)

V(x)

x+1, если x < n (увелич. на 1)

x, если x = n

Процесс-производитель перед генерацией CR-ресурса выполняет над общим семафором V операцию, а процесс-потребитель – P операцию. Т.о. осуществляется их синхронизация. Если семафор закрыт, то процесс производитель приходит в состояние ожидания. Общий семафор имеет физический смысл:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]