ПВМ   ОКМ   ДМ   экономическая информатика   4GL   Теория и практика обработки информации

Параллельная виртуальная машина, PVM

Контроль процессов

int tid = pvm_mytid(void)

call pvmfmytid (tid)

Подпрограмма pvm_mytid() возвращает TID текущего процесса и может вызываться неограниченное число раз. Она регистрирует данный процесс в ПВМ - если это первый вызов ПВМ. Любой системный вызов ПВМ (не только pvm_mytid) будет регистрировать задачу в ПВМ, если перед этим вызовом задача не зарегистрирована, но общая практика требует для обеспечения регистрации вызова pvm_mytid.

int info = pvm_exit(void)

call pvmfexit(info)

Подпрограмма pvm_exit сообщает локальному pvmd о том, что процесс "покинул" ПВМ. Эта подпрограмма не завершает процесс принудительно - он может продолжать выполнять задачу наряду с другими процессами UNIX. Пользователи обычно вызывают pvm_exit прямо перед выходом - в своих программах на C и прямо перед STOP - в своих программах на Fortran.

int numt = pvm_spawn (char *task, char **argv, int flag,

    char *where, int ntask, int *tids)

call pvmfspawn (task, argv, flag, where, ntask, tids, numt)

Подпрограмма pwm_spawn запускает до ntask копий исполняемого файла task на виртуальной машине. argv - это указатель на массив аргументов для task, причем конец массива указывается с помощью NULL. Если задача не получает аргументы, то argv равняется NULL. Аргумент flag используется для указания опций, которые обобщены в табл. 12.

Табл. 12. Опции порождения потомков в PVM.

Значение Опция Cмысл

Эти имена предопределены в pvm3/include/pvm3.h. На Fortran все имена предопределяются в параметрических конструкциях, которые могут быть найдены в секции include файла pvm3/include/pvm3.h.

PvmTaskTrace - это новая возможность ПВМ версии 3.3. Она заставляет порождаемые задачи генерировать трассировочные события. PvmTaskTrace используется XPVM. Иначе, пользователь должен с помощью pvm_setopt() указать, когда генерировать трассировочные события.

При возврате, numt присваивается количество успешно порожденных задач или код ошибки, если ни одна из задач не смогла стартовать. Если задачи были запущены, то pwn_spawn вернет вектор, состоящий из идентификаторов порожденных задач; если не смогли стартовать лишь некоторые задачи, соответствующие коды ошибок помещаются в последние ntask - numt позиций вектора.

Вызов pvm_spawn() может также запускать задачи и на мультипроцессорах. В случае с Intel iPSC/860 накладываются следующие ограничения. Каждый порождающий вызов получает подкуб размера ntask и загружает программу task во все соответствующие станции. ОС iPSC/860 имеет распределительное ограничение: 10 подкубов для всех пользователей, так что лучше запустить блок из задач в iPSC/860 одним вызовом, чем несколькими. Два самостоятельных блока задач, порожденные в iPSC/860 раздельно, все равно могут взаимодействовать друг с другом так же, как и с другими задачами ПВМ, даже считая, что они существуют в разных подкубах. ОС iPSC/860 имеет еще одно ограничение: сообщения, следующие от станций во "внешний мир" должны быть меньше, чем 256 КБайтов.

int info = pvm_kill (int tid)

call pvmfkill (tid, info)

Подпрограмма pvm_kill() принудительно завершает некоторую задачу ПВМ, идентифицированную TID. Эта подпрограмма разработана для принудительного завершения задач, которые должны завершаться вызовами pvm_exit(), следующими за exit().

int info = pvm_catchout (FILE *ff)

call pvmfcatchout (onoff)

По умолчанию ПВМ записывает stdout и stderr порожденных задач в файл протокола /tmp/pvml.<uid>. Подпрограмма pvm_catchout заставляет вызывающую задачу "захватывать" выходной поток последовательно порожденных задач. Символы, выводимые в stdout или stderr дочерних задач, собираются демонами pvmd и отсылаются в форме сообщений родительской задаче, которая "метит" каждую строку и добавляет ее в указанный файл (для C) или выводит в стандартный поток вывода (для Fortran). Все выводимое на экран предваряется информацией о том, какая из задач сгенерировала вывод на экран, а завершение каждого вывода метится с целью помочь разграничить "перекрывающиеся" выходные потоки нескольких задач.

Если pvm_exit вызывается предком тогда, когда активен сбор выходных потоков, он будет блокироваться до тех пор, пока все выводящие задачи не отработают - в том порядке, в котором они осуществляли весь свой вывод. Во избежание такой ситуации, можно "выключить сбор выходных потоков" вызовом pvm_catchout(0) перед тем, как вызвать pvm_exit.

Новые возможности ПВМ версии 3.3 включают и возможность регистрировать специальные задачи ПВМ для обработки заданий по включению новых хостов, размещению задач на хостах и запуску новых задач. С этой целью создается интерфейс для "продвинутых" пакетных планировщиков (примерами могут быть Condor, DQS и LSF), которые подключаются к ПВМ и позволяют выполнять задания ПВМ в пакетном режиме. Такие регистрирующие подпрограммы также создают интерфейс для разработчиков отладчиков - для стимулирования удовлетворительных разработок сложных отладчиков специально для ПВМ.

Имена таких подпрограмм: pvm_reg_rm(), pvm_reg_hoster() и pvm_reg_tasker(). Эти "продвинутые" функции не имеют значения для среднестатистического пользователя ПВМ и потому здесь подробно не представляются.

ПВМ   ОКМ   ДМ   экономическая информатика   4GL   Теория и практика обработки информации

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

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution