Введение в архитектуру компьютеров


Основные подходы к проектированию языков параллельного программирования - часть 3


КОС обладает всеми свойствами, присущими объектно-ориентированному подходу:

· инкапсуляция объектных компонент скрывает от пользователя сложности их реализации, делая видимым лишь предоставляемый интерфейс;

· наследование позволяет совершенствовать компоненты, не нарушая целостности объектной оболочки;

· полиморфизм, по сути, позволяет группировать объекты, характеристики которых в некотором плане можно считать сходными.

Что касается языков параллельного программирования, то к ним могут быть предъявлены дополнительные требования. В частности, ЯПП должен:

· иметь средства максимального выражения в программе присущего данной задаче естественного параллелизма;

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

· обладать простотой диспетчеризации параллельных программ, записанных на нем;

· обеспечить простоту записи (преобразования) программ на ЯПП по заданным последовательным алгоритмам.

При расширении последовательных ЯП обычно используются операторы for-join,

parbegin-parend, cobegin-coend – аналог операторных скобок в обычных ЯП, окаймляющих фрагменты параллельного выполнения.

Типичным примером расширения возможностей последовательных ЯП служит дополнение языков АЛГОЛ-60 и ФОРТРАН операторами типа fork< список меток > и join < список меток >. Оператор fork открывает участок параллельности в заданной программе, а оператор

join закрывает его. После выполнения каждой ветви с заданной в операторе fork меткой управление передается оператору join. Последний не передает управление на продолжение программы до тех пор, пока управление от всех сегментов, метки которых указаны в операторе join, ему не переданы.

Чтобы ЯП АЛГОЛ-60 обладал необходимыми свойствами языка параллельного программирования, его можно дополнить (кроме fork и join) операторами типа:

terminate < список меток > – оператор блокировки фрагментов программы (если он предшествует оператору join, то блокируется выполнение фрагментов программы с общими у обоих операторов метками);

obtain < список переменных >, который блокирует использование переменных, участвующих в вычислительном процессе;

release < список переменных >, снимающего блокировку с указанных в нем переменных.

Если, например, нам в программе встретилась запись

k) join S1, S2, S7

k + 1) for i = 1 step

1 until N do,

то управление от оператора k будет передано оператору k + 1 только в том случае, если выполнятся фрагменты с метками S1, S2, S7. Если, например, необходимо одновременно выполнить целый массив параллельных ветвей, то в параллельном ЯП следует организовать некоторый специальный цикл. Синтаксически он напоминает обычный цикл в ЯП.




- Начало -  - Назад -  - Вперед -



Книжный магазин