
- •Конспект лекций модуля № 4 "Целевой курс" дисциплины "Распределенные программные системы и технологии" Тема 11. Системы параллельных вычислений
- •11.1.1. Общие понятия
- •11.1.2. Функции управления задачами
- •11.1.3. Взаимодействие задач
- •11.1.3.1 Типы взаимодействия
- •11.1.3.2 Выполнение взаимодействия
- •11.1.4. Синхронизация работы задач
- •11.2.1. Общие сведения
- •11.2.2. Основные понятия
- •11.2.3. Функции mpi
- •11.2.4. Функции управления процессами
- •11.2.3. Взаимодействие процессов
- •11.2.3.1 Прием/передача сообщений с блокировкой
- •11.2.3.2 Прием/передача сообщений без блокировки
- •11.2.3.3 Объединение запросов на взаимодействие
- •11.2.3.4 Совмещенные прием/передача сообщений
- •11.2.3.5 Коллективные взаимодействия процессов
- •12.1.2. Уровень заглушки и скелета
- •12.1.3. Уровень удаленных ссылок
- •12.1.4. Транспортный уровень
- •12.1.2. Взаимодействие
- •2.1.3 Идентификация объектов
- •2.1.4. Синхронизация вызовов методов
- •2.1.5. Безопасность
- •Тема 13. Сервисно-ориетированные архитектуры
- •13.1.1. Стандарт Web - сервисов
- •13.1.2. Взаимодействие Web-служб
- •13.1.3. Идентификация служб
- •13.1.5. Отказоустойчивость Web-служб
- •13.1.6. Безопасность Web-служб
- •13.2. Сервисно-ориентированная архитектура
- •13.2.1. Концепция soa
- •13.2.2. Характеристики соа
- •13.2.3. Компоненты соа
- •13.3. Оркестровка Web - сервисов
- •13.3.1. Основные понятия
- •13.3.2. Организация основанная на потоках работ
- •13.3.3. Язык bpel
- •Тема 14. Многоагентные системы
- •14.1. Определение агента
- •14.2. Применение агентов
- •14.2. Стандарты технологии мобильных агентов
- •14.2.1. Стандарт masif
- •14.2.2. Стандарт fipa
- •14.3. Языки взаимодействия агентов.
- •Тема 15. Распределенные базы данных
- •15.1. Определение Дэйта.
- •15.2. Свойства распределенных бд
- •15.2.1 Целостность данных
- •15.2.2 Прозрачность расположения
- •15.2.3 Обработка распределенных запросов
- •15.2.4 Межоперабельность
- •15.2.5 Технология тиражирования данных
- •15.2.6 Архитектура "клиент-сервер"
- •15.3.1 Концепция ejb
- •15.3.2. Компоненты ejb
- •15.3.3 Этапы создания ejb-проектов
- •Тема 16. Аппаратное обеспечение распределенных встроенных систем
- •16.1. Перспективы развития и области применения распределенных встроенных систем
- •16.2. Функциональная классификация микропроцессоров
- •16.2.1. Процессоры общего назначения и специализированные процессоры
- •16.2.2. Микроконтроллеры
- •16.2.3. Процессоры цифровой обработки сигналов
- •16.2.4. Конфигурируемые процессоры и перепрограммируемы системы на кристалле
- •16.2.5. Эволюция микропроцессоров
Конспект лекций модуля № 4 "Целевой курс" дисциплины "Распределенные программные системы и технологии" Тема 11. Системы параллельных вычислений
11.1. PVM (Parallel Virtual Machine)
11.1.1. Общие понятия
PVM - это пакет программ, который позволяет использовать неоднородную сеть компьютеров как один большой параллельный компьютер.
PVM можно определить как часть средств реального вычислительного комплекса (процессоры, память, периферийные устройства и т.д.), предназначенную для выполнения множества задач, участвующих в получении общего результата вычислений.
В общем случае число задач может превосходить число процессоров, включенных в PVM. Кроме того, в состав PVM можно включать довольно разнородные вычислительные машины, несовместимые по системам команд и форматам данных.
В системе PVM каждая задача (которой соответствует исполняемый файл), запущенная на некотором процессоре, идентифицируется уникальным целым числом, которое называется идентификатором задачи (далее используется обозначение TID). Копии одного исполняемого файла, запущенные параллельно на N процессорах PVM, создают N задач с разными TID.
11.1.2. Функции управления задачами
PVM включает в себя функции позволяющие управлять задачами: создавать и удалять их. При запуске созается уникальный идентификатор, который используется в дальнейшем, в том числе и при удалении задачи.
int tid = pvm_mytid ( void );
- возвращает идентификатор задачи tid >= 0. Эта функция может вызываться более одного раза, но в первый раз она, как правило, вызывается в самом начале программы, т.к. значением tid может определяться выбор для выполнения той или иной части программы.
int numt = pvm_spawn (
char *task, /* имя исполняемого файла */
char **argv, /* аргументы командной строки */
int flag, /* опции запуска */
char *where, /* указывает место запуска */
int ntask, /* число запускаемых копий программы */
int *tids /* массив значений tid для запущенных задач */
);
- запускает в PVM ntask копий исполняемого файла с именем "task" с одинаковыми аргументами командной строки в массиве argv и возвращает число запущенных задач numt а также последовательность идентификаторов для запущенных задач. Причем, если numt < ntask, то в последних ntask - numt элементах массива tids записаны отрицательные коды ошибок, объясняющие срыв запуска задачи.
При выборе значений параметров flag и "where" пользователю целесообразно проконсультироваться с программистом, которому известны особенности установки системы PVM на используемом вычислительном комплексе.
int info = pvm_kill ( int tid );
- завершает выполнение задачи с идентификатором tid; при ошибке возвращает код ошибки info < 0. Отметим, что задача не может "убить" себя, поэтому один из возможных сценариев завершения многозадачной работы PVM заключается в том, что одна из задач "убивает" все остальные, после чего вызывает функцию
int info = pvm_exit ( void );
которая завершает работу PVM, запущенной пользователем, но при этом сама задача продолжает выполняться уже как объект локальной операционной системы и завершает работу, как обычно.