
PVM(Parallel Virtual Machine – виртуальная машина параллельного
действия) система с передачей сообщений, изначально разработана для
машин COW с системой UNIX. Позднее она стала применяться в других
машинах, в том числе и в машинах МРР. Это самодостаточная система с
управлением процессами и системой ввода-вывода. PVM состоит из двух
частей: библиотеки, вызываемой пользователем и «сторожевого» процесса,
который работает постоянно на каждой машине в мультикомпьютере. Когда
PVM начинает работу, она определяет, какие машины должны быть часть ее
виртуального мультикомпьютера. Для этого она читает конфигурационный
файл. «Сторожевой» процесс запускается на каждой из этих машин. Машины
можно добавлять и убирать, вводя команды с консоли PVM.Взаимодействие
в машине PVM осуществляется с помощью примитивов для передачи
сообщений таким образом, чтобы взаимодействовать могли машины с
разными системами счисления. Каждый процесс PVM в каждый момент
времени имеет один активный пересылочный буфер и один приемный буфер.
Отправляя сообщение процесс вызывает библиотечные процедуры,
запаковывающие значения с самоописанием в активный пересылочный
буфер, чтобы получатель мог узнать их и преобразовать в исходный формат.
Когда сообщение скомпоновано, отправитель вызывает библиотечную
процедуру
pmv_send , которая представляет собой блокирующий сигнал
send. Получатель может ответить по-разному.
Во-первых, он может вызвать процедуру
pmv_recv, которая блокирует
получателя до тех пор, пока не придет подходящее сообщение. Когда вызов
возвратится, сообщение будет в активном приемном буфере. Оно может быть
распаковано и преобразовано в подходящий формат с помощью набора
распаковывающих процедур.
Во-вторых, получатель может вызвать процедуру pmv_trecv, которая
блоктрует получателя на определенный промежуток времени, и если
подходящего сообщения за это время не пришло, он разблокируется.
Третий вариант – процедура pmv_nrecv, которая сразу же возвращает
значение – это может быть либо сообщение, либо указание на отсутствие
сообщения. Вызов можно повторять, чтобы опрашивать входящие
сообщения.
Помимо рассмотренных примитивов, PVM поддерживает
широковещание (процедура pmv_bcast) и мультивещание (процедура
pmv_mcast). Первая процедура отправляет сообщение всем процессам в
группе, а вторая посылает сообщение только некоторым процессам,
входящих в определенный список.
Синхронизация между процессами осуществляется с помощью
процедуры pmv_barrier. Когда процесс вызывает эту процедуру, он
блокируется до тех пор, пока определенное число других процессор не
достигнет барьера, и они не вызовут ту же процедуру. Существуют другие
процедуры для управления главной вычислительной машиной, группой,
буферами, для передачи сигналов, проверки состояния и т.д. PVM – это
180