Jump to content

Локальное межпроцессное взаимодействие

Локальное межпроцессное взаимодействие [1] ( LPC , часто также называемый вызовом локальной процедуры или облегченным вызовом процедуры ) — это внутреннее недокументированное средство межпроцессного взаимодействия , предоставляемое ядром Windows NT Microsoft для упрощенного IPC между процессами на одном компьютере. Начиная с Windows Vista , LPC был переписан как асинхронная локальная межпроцессная связь. [1] ( ALPC , часто также расширенный вызов локальных процедур ), чтобы обеспечить высокоскоростной масштабируемый механизм связи, необходимый для эффективной реализации инфраструктуры драйверов пользовательского режима (UMDF), части пользовательского режима которой требуют эффективного канала связи с компонентами UMDF в исполнительной системе. . [2]

Интерфейс (A)LPC является частью недокументированного Native API Windows NT и поэтому недоступен приложениям для прямого использования. Однако его можно использовать косвенно в следующих случаях:

  • при использовании Microsoft RPC API для локального взаимодействия, т. е. между процессами на одном компьютере.
  • путем вызова API-интерфейсов Windows, реализованных с помощью (A)LPC (см. ниже).

Выполнение

[ редактировать ]

(A)LPC реализуется с использованием объектов «порт» ядра, которые защищаются (с помощью списков ACL , позволяя, например, использовать их только определенным SID ) и позволяют идентифицировать процесс на другой стороне соединения. Отдельные сообщения также можно защитить: приложения могут устанавливать SID для каждого сообщения, а также проверять изменения контекста безопасности в токене, связанном с сообщением (A)LPC.

Типичный сценарий связи между сервером и клиентом выглядит следующим образом:

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

(A)LPC поддерживает следующие три режима обмена сообщениями между сервером и клиентом: [3]

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

ALPC имеет преимущество в производительности по сравнению с предыдущим интерфейсом LPC, поскольку его можно настроить на использование портов завершения ввода-вывода вместо синхронного механизма запроса/ответа, который используется исключительно LPC. [4] Это обеспечивает высокоскоростную связь портов ALPC, которая автоматически балансирует количество сообщений и потоков. Кроме того, сообщения ALPC могут быть объединены в пакеты, чтобы минимизировать переключение между пользовательским режимом и режимом ядра.

Известное использование

[ редактировать ]

(A)LPC активно используется для связи между внутренними подсистемами Windows NT. Подсистема Win32 активно использует (A)LPC для связи между клиентом и сервером подсистемы ( CSRSS ). Quick LPC был введен в версии 3.51 Windows NT для ускорения этих вызовов. В версии 4.0 от этого метода практически отказались в пользу перевода критически важных частей сервера в режим ядра (win32k.sys).

Служба подсистемы локального органа безопасности (LSASS), диспетчер сеансов (SMSS) и диспетчер управления службами используют порты (A)LPC напрямую для связи с клиентскими процессами. Winlogon и Security Reference Monitor используют его для связи с процессом LSASS.

Как уже упоминалось, Microsoft RPC может использовать (A)LPC в качестве транспорта, когда клиент и сервер находятся на одном компьютере. Многие службы, предназначенные для взаимодействия только на локальном компьютере, используют (A)LPC в качестве единственного транспорта через RPC. Реализация удаленных OLE и DCOM во многих случаях также использует (A)LPC для локальной связи.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б «LPC (Вызовы локальных процедур). Часть 1. Архитектура» . Документы Майкрософт .
  2. ^ Руссинович, Соломон и Ионеску (2009 : 201)
  3. ^ Руссинович, Соломон и Ионеску (2009 : 203)
  4. ^ Руссинович, Соломон и Ионеску (2009 : 204)
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9ee7db12bd9674b3d801ef0aaaa7ade2__1678574460
URL1:https://arc.ask3.ru/arc/aa/9e/e2/9ee7db12bd9674b3d801ef0aaaa7ade2.html
Заголовок, (Title) документа по адресу, URL1:
Local Inter-Process Communication - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)