The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
next up previous contents
Next: Процессы dipcd Up: DIPC - Распределенные межпроцессные Previous: Ключи DIPC   Contents

Как работает dipcd

В этом разделе описывается, как используется TCP. Для получения дополнительной информации о UDP, пожалуйста, обратитесь к разделу о UDP/IP.

Обычно пользовательские программы DIPC взаимодействуют только с локальным ядром компьютера, на котором выполняются. Запросы пользовательских программ на действия DIPC, либо синхронного типа - подобно системным вызовам, которые предназначены для удаленного исполнения, - либо асинхронного типа - подобно попыткам чтения разделяемой памяти, чьи страницы не доступны на локальном компьютере, - направляются ядру. Все такие запросы помещаются в один связанный список. Идентификатор процесса запрашивающей пользовательской задачи запоминается и используется для поиска данного начального запроса при возвращении результатов. Этим путем результаты могут быть корректно доставлены в пользовательскую программу.

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

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

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

Необходимо создавать условия, чтобы dipcd смог получить доступ к требующейся информации в структурах ядра. Новый системный вызов, перекликающийся с прочими вызовами IPC System V, добавлен в Linux только с этой целью; dipcd и другие ``инструменты'' DIPC (такие как dipcker) используют его для передачи данных в ядро и из него. Этот новый системный вызов (известный в программах DIPC как dipc()) предназначен для использования dipcd и другими связанными с ним программами. Пользовательские программы непосредственно применять его не должны.

Важно помнить, что системные вызовы IPC, инициированные dipcd, всегда исполняются локальным ядром, даже, когда работа происходит с распределенными структурами IPC. Это подпадает в зону действия ``специального соглашения'' о процессах dipcd в ядре с поддержкой DIPC.



Subsections

2004-06-22



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру