СПОСОБ ПЕРЕДАЧИ ДАННЫХ МЕЖДУ ПРОЦЕССАМИ

1. Способ передачи данных между процессами в вычислительном средстве, снабженном запоминающим средством, содержащий этапы, на которых:
- заранее выделяют в памяти упомянутого запоминающего средства непрерывную область ввода-вывода;
- разделяют упомянутую область ввода-вывода на сегменты, каждый из которых относится к единственному из упомянутых процессов и к каждому из которых имеет доступ на запись только тот процесс, к которому относится данный сегмент, а доступ на чтение имеют все упомянутые процессы;
- формируют в упомянутой области ввода-вывода каналы для передачи данных между парами соответствующих процессов, именуемых далее в каждом упомянутом канале процессом-отправителем и процессом-получателем, причем каждый из упомянутых каналов включает в себя совокупность размещенных в сегменте процесса-отправителя данного канала буферов записи для размещения в них сообщений, а также очередь сообщений и очередь свободных буферов;
- при необходимости отправки сообщения конкретным процессом-отправителем конкретному процессу-получателю по каналу между ними упомянутый процесс-отправитель записывает это сообщение в свободный буфер записи и помещает этот буфер записи в очередь сообщений;
- при необходимости получения сообщения конкретным процессом-получателем от конкретного процесса-отправителя по каналу между ними упомянутый процесс-получатель считывает это сообщение из буфера записи, помещенного в очередь сообщений, и помещает этот буфер записи в очередь свободных буферов.
2. Способ по п. 1, в котором:
- при приостановке потока управления ввиду отсутствия сообщений для конкретного процесса-получателя или свободных буферов для конкретного процесса-отправителя выставляют в описателе соответствующего канала, соответственно, запрос на уведомление о появлении сообщения или запрос на уведомление о появлении свободного буфера;
- при помещении буфера записи с записанным сообщением в очередь сообщений конкретного канала и при наличии упомянутого запроса на уведомление о появлении сообщения отправляют упомянутому процессу-получателю уведомление о появлении сообщения в упомянутом канале;
- при помещении свободного буфера в очередь свободных буферов конкретного канала и при наличии упомянутого запроса на уведомление о появлении свободного буфера отправляют упомянутому процессу-отправителю уведомление о появлении свободного буфера в упомянутом канале;
- при поступлении упомянутого уведомления о появлении сообщения объявляют поток управления упомянутого процесса-получателя, ждущий сообщения, работоспособным и считывают очередное сообщение из соответствующего буфера записи из очереди сообщений;
- при поступлении упомянутого уведомления о появлении свободного буфера объявляют поток управления упомянутого процесса-отправителя, ждущий свободного буфера, работоспособным, записывают сообщение в упомянутый свободный буфер и помещают упомянутый буфер с записанным сообщением в очередь сообщений данного канала.
3. Способ по п. 1 или 2, в котором:
- упомянутую очередь сообщений формируют в виде кольцевого буфера, предназначенного для записи идентификаторов тех из упомянутых буферов записи, в которые последовательно записывают сообщения соответственного процесса-отправителя, а упомянутую очередь свободных буферов формируют в виде кольцевого буфера, предназначенного для записи идентификаторов тех из упомянутых буферов записи, которые освобождаются после считывания соответственным процессом-получателем;
- размещают упомянутый кольцевой буфер очереди сообщений в сегменте процесса-отправителя вместе с указателем на начало свободного места в этом кольцевом буфере очереди сообщений и указателем на начало занятого места в кольцевом буфере очереди свободных буферов;
- размещают упомянутый кольцевой буфер очереди свободных буферов в сегменте процесса-получателя вместе с указателем на начало свободного места в этом кольцевом буфере очереди свободных буферов и указателем на начало занятого места в кольцевом буфере очереди сообщений.