Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Untitled 1.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
60.93 Кб
Скачать

1Способ. Копирование в порт.

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

В любой момент времени исполнительная система имеет доступ к либо клиентскому адресному пространству либо к серверному,но не одновременно,а при переключении контекста ядра. Однако,как и другие объекты, объекты порты хранятся в системной памяти.(е водят в состав адресного пространства клиента и сервера), поэтому во вряд переключения контекста ядра, ядро не теряет доступа к портам клиента и сервера.

LPC выделяет память для своего процесса из резидентного пула, т.е из неоткачиваемй на диск части системной памяти. Так как системный пул является конечным ресурсом, то количество и размер блоков сообщений в порту являются ограниченными. Размер блока равен 256 байт, что в большинстве случаев является достаточным для обмена между клиентом и сервером. (при вызове клиентом от сервера выполнения сервиса(сервисной процедуры))

2Способ. Через совместно используемую память.

Когда клиенту необходимо передать сообщение, размер которого превышает 256 байт, то они не могут быть скопированы в очередь сообщений сервера(порта связи сервера). Поэтому клиент должен передать такие сообщения через объект совместно используемую память(разделяемую память), чьи и размеры ограничены только ресурсными квотами клиента. Для передачи сообщений через разделяемую память клиент создает этот объект. Он называется объект секция. LPC делает этот объект видимым как для клиента так и для сервера. О виден посредством уникального имени объекта.

Для посылки большого сообщения, клиент помещает его в объект секция, после чего посылает серверу в порт связи меньшее сообщение, которое содержит указатель,адресное про-во и размер основного сообщения

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

Перед установлением канала связи клиент должен определить будут ли его сообщения большими или малыми. Если сообщения будут малыми, то он не запрашивает выделение объекта секции.(создает клиент посредством Диспетчера объектов)

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

Если ответы сервера будут так же большими, то сервер может создать собственную объект секцию, поместить туда сообщение,а информацию об этом сообщении в порт связи клиента(?)

Использование объекта секции требует дополнительной работы, притом LPC не знает какого формата создается объект(в каком виде будет содержать сообщение)

поэтому клиент должен самостоятельно управлять памятью в этом объекте, сообщая серверу о местоположении сообщения в объекте секция. Всё это усложняет процесс обмена между клиетом и сервером и требует дополнительных ресурсов.(инициализация,копирование адресного пространства в выделяемую память,в порт связи сервера, сервер скопировать в сое адресное пр-во, сервер из раздел памяти в свое адресноне пр-во, сформир свой об секции,скопир,послать инф....)из-за закрытых адресов пр-в к и с

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]