home   contents  previous      next        up

Каналы ОС PARIX

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

Чтобы создать виртуальный канал, два процесса, которые хотят установить связь с помощью этого канала, должны вызвать функцию:
LinkCB_t *ConnectLink(int Processor, int RequestId, int *Error).
Каждый процесс, используя параметр Processor, должен указать номер процессора, с процессом которого он хочет установить связь. Каналу необходимо сопоставить уникальный идентификатор канала, передаваемый через параметр RequestId. Это значение используется ОС для того, чтобы различать сообщения, передаваемые по разным каналам. Функция возвращает указатель на дескриптор созданного канала.

Функция
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 имеются синхронные и асинхронные операции обмена сообщениями, работающие с понятием виртуальной топологии.


home   contents  previous      next        up