Применение алгоритмов шифрования Политики безопасности Протокол аутентификации Безопасность IP (IPSec) Использование сертификатов для обеспечения безопасности

Многопроцессорные вычислительные системы

Системы телеобработки. Уже первоначальное применение СОД для управления производством, транспортом и материально-техническим снабжением показало, что эффективность систем можно значительно повысить, если обеспечить ввод данных в систему непосредственно с мест их появления и выдачу результатов обработки к местам их использования.

Основы вычислительных систем

Однако следует отметить, что проблема удобства и простоты некоторого ЯП для создания программ "с нуля" сегодня менее актуальна. Уже написаны программы для решения такого количества задач (некоторые из них по много раз на различных ЯП и в разных программных средах), что следует только в соответствии с поставленной задачей отобрать необходимые компоненты (программы), настроить их и проинтегрировать, т. е. объединить в одну систему. Такие действия адекватны технологии крупноблочного проектирования, в основе которой лежит понятие компонентной объектной среды (КОС). КОС – это современный фундамент для накопления и использования знаний. Она базируется на компонентной объектной модели и включает готовые компоненты и инструментальное окружение, позволяющее выбирать необходимые компоненты, настраивать их и связывать между собой, создавая необходимое приложение.

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

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

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

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

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

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

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

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

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

При расширении последовательных ЯП обычно используются операторы 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. Если, например, необходимо одновременно выполнить целый массив параллельных ветвей, то в параллельном ЯП следует организовать некоторый специальный цикл. Синтаксически он напоминает обычный цикл в ЯП.

Если, например, в последовательном ЯП определен цикл

for i = L step 1 until N do R(i),

который задает последовательное выполнение вычислений

R(L), R(L + 1), ... , R(N),

то их одновременная обработка требует конфигурации

for i = L step 1 until N do par R(i),

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

for i = < индексное множество > do < тип параллельности >,

где < индексное множество > задает цикл типа арифметической прогрессии, перечисления, логического выражения и т. д., а < тип параллельности > определяет семантику оператора, например ориентацию на асинхронные ВС с общей памятью, с разделенной памятью, ВС с единым потоком команд ОКМД, возможность синхронизации ветвей с обменом или без обмена информации т. д.

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

Информатика, черчение, математика