Каналы транспьютера


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

· Физические каналы, которые связывают процессы, работающие на разных транспьютерах, и используют линии связи транспьютеров;

· Логические каналы, которые связывают процессы, работающие на одном и том же транспьютере.

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

С каждым каналом связан небольшой участок памяти (дескриптор канала), хранящий дескриптор процесса, адрес и длину сообщения. Физическим каналам соответствуют дескрипторы, имеющие фиксированные адреса памяти, ассоциированные с соответствующими интерфейсами линий связи. Интерфейсы линий связи работают одновременно с процессором и используют данные дескрипторов при осуществлении обмена сообщениями между транспьютерами. Адреса дескрипторов логических каналов задаются либо конфигуратором, либо компилятором. Обмен данными по логическому каналу реализует процессор. После завершения операции, процессор или интерфейс линии связи записывает в дескриптор канала предопределенное значение, указывающее на то, что канал готов для выполнения следующей операции. Один и тот же набор команд используется для работы с обоими видами каналов. Командам приема/передачи сообщений указывается адрес канала с тем, чтобы они могли различать логический и физический каналы.

Каналы реализуют синхронную связь между взаимодействующими процессами – процесс, который первый будет готов к обмену данными, должен ждать, пока второй процесс не будет готов. Если канал не подготовлен к обмену (второй процесс еще не готов) или канал является физическим, то первый процесс помещается в очередь ожидающих процессов, освобождая процессор для других процессов.