| |
В этом разделе описывается, как используется 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.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |