Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы.doc
Скачиваний:
45
Добавлен:
01.05.2014
Размер:
888.32 Кб
Скачать

Int BreakLink (LinkCb_t *Link)

удаляет виртуальный канал. Каждый из процессов партнеров должен удалить свою часть канала.

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

Int SendLink (LinkCb_t *Link, void *Buf, int Size), int RecvLink (LinkCb_t *Link, void *Buf, int Size)

Синхронные операции

int SendNode (int Processor, int RequestId, byte *Buffer, int Size) и int RecvNode (int Processor, int RequestId, byte *Buffer, int Size),

используемые в случае нерегулярных обменов данными, позволяют обмениваться сообщениями между процессами без создания виртуальных каналов. Для каждой операции каждый процесс-партнер, используя параметр Processor, должен указать номер процессора, процессу которого он хочет передать сообщение или принять сообщение от него. Операции обмена необходимо сопоставить уникальный идентификатор запроса, передаваемый через параметрRequestId. Значение -1, используемое в качествеProcessorилиRequestId, позволяетRecvNodeполучать сообщения от произвольного процессора или с произвольным идентификатором запроса. Это достаточно дорогие по времени функции, поскольку каждый раз (в случае сообщений размером более 1024 байт) они создают виртуальный канал, а затем удаляют его после передачи лишь одного сообщения.

В ОС PARIX имеются синхронные и асинхронные операции обмена сообщениями, работающие с понятиемвиртуальной топологии.

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

int AInit (int TopId, int Threads, int Size) int ASend (int TopId, int LogLinkId, byte *Data, int Size, int *Result) int ARecv (int TopId, int LogLinkId, byte *Data, int Size, int *Result) int ASync (int TopId, int LogLinkId) int AExit (int TopId)

Асинхронная связь обеспечивает параллельное выполнение вычислений и коммуникаций. Во всех функциях параметр TopIdуказывает топологию (сеть каналов), которая будет использоваться для обмена сообщениями. Перед использованием асинхронной связи, необходимо вызвать функциюAinit, которая инициализирует все структуры данных, используемые операциями обмена сообщениямиASend иArecv. ПараметрыAinitопределяют количественные характеристики асинхронной связи - параметрThreadsзадает максимальное число сопроцессов, которые могут одновременно существовать в процессе асинхронной связи, параметрSize- максимальный размер памяти, который можно использовать для осуществления асинхронной связи. ЕслиSize= 0, то посылаемые данные не будут копироваться во временный буфер. ЕслиAinitвызывается повторно, то она только устанавливает новые значения параметров связи. Для приема и передачи сообщений служат функцииASendиArecv. Завершаться асинхронная связь должна вызовомAExit, которая ждет завершения всех коммуникаций, затем прерывает выполнение сопроцессов, активированных в процессе асинхронной связи, и освобождает память, использовавшуюся при этом. ФункцияASyncтолько ждет завершения всех коммуникаций, но не прерывает выполнение сопроцессов.

Упоминалось еще некое случайное взаимодействие (для сообщений < 1 Кб), осуществляемое функциями:

PutMessage() GetMessage() ExchangeMessage()