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

12. Программная модель parix: статические и динамические возможности.

См. вопрос 10.

Принята следующая модель работы PARIX-приложения:

  • при запуске на каждом узле стартует одна и та же программа

  • затем она определяет свое положение в решетке раздела и

  • организует обмен данными с другими своими копиями.

Это и есть статические свойста. По другом они звучат так:

  • идентичные программы запускаются на всех процессорах

  • обеспечивается идентификация всех процессоров в сети

  • предопределенная топлогия

Динамические свойства:

  • возможность создания потоков (threads) на одном процессоре

  • возможность создания виртуальных линков между любыми процессорами

  • синхронная и асинхронная коммутация

  • возможность создания виртуальных топологий

  • загрузка и выполнение дополнительных кодов

13. Основные средства взаимодействия процессов в среде parix. Синхронное и асинхронное взаимодействие процессов. Каналы

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

Итак, канал - это однонаправленная двухточечная (соединяющая только два процесса) «коммуникационная линия», позволяющая процессам обмениваться данными. Операции обмена сообщениями достаточно продолжительные по времени операции, поэтому в разных моделях, системах используются разные типы поведения операций приема/передачи сообщений. Различают следующие виды каналов:

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

  • Асинхронно/синхронные.Операция передачи сообщения асинхронная - она завершается сразу (сообщение копируется в некоторый буфер, а затем пересылается одновременно с работой процесса-отправителя), не ожидая того, когда данные будут получены приемником. Операция приема сообщения синхронная: она блокирует процесс до момента поступления сообщения.

  • Асинхронные. Обе операция асинхронные, то есть они завершаются сразу. Операция передачи сообщения работает, как и в предыдущем случае. Операция приема сообщения, обычно, возвращает некоторые значения, указывающие на то, как завершилась операция - было или нет принято сообщение. В некоторых реализациях операции обмена сообщениями активируют сопроцессы, которые принимают/отправляют сообщения, используя временные буфера и соответствующие синхронные операции. В этом случае имеется ещ§ синхронизирующая операции, которая блокирует процесс до тех пор, пока не завершатся все инициированные операции канала.

При работе с каналами необходимо следить за тем, чтобы не случилась блокировкавзаимодействующих процессов (deadlock). Например, процессAне может передать сообщение процессуB, поскольку процессBждет, когда процессAпримет сообщение от него. Это одна из простейших ситуаций, в более сложных случаях циклические зависимости могут охватывать много процессов, причем появление дедлока может завесить от данных.

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

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

LinkCB_t *ConnectLink(int Processor, int RequestId, int *Error).

Или функции:

MakeLink() GetLink()

которые вызываются на обоих процессорах одновременно.

Каждый процесс, используя параметр Processor, должен указать номер процессора, с процессом которого он хочет установить связь. Каналу необходимо сопоставить уникальный идентификатор канала, передаваемый через параметрRequestId. Это значение используется ОС для того, чтобы различать сообщения, передаваемые по разным каналам. Функция возвращает указатель на дескриптор созданного канала.

Функция