stringtranslate.com

Comunicación local entre procesos

La comunicación local entre procesos [1] ( LPC , a menudo también denominada llamada a procedimiento local o llamada a procedimiento ligero ) es una función de comunicación entre procesos interna e indocumentada proporcionada por el kernel de Microsoft Windows NT para IPC ligera entre procesos en el mismo computadora. A partir de Windows Vista , LPC se ha reescrito como comunicación local entre procesos asincrónica [1] ( ALPC , a menudo también llamada a procedimiento local avanzado ) para proporcionar un mecanismo de comunicación escalable de alta velocidad necesario para implementar de manera eficiente el marco del controlador en modo de usuario ( UMDF), cuyas partes en modo de usuario requieren un canal de comunicación eficiente con los componentes de UMDF en el ejecutivo . [2]

La interfaz (A)LPC es parte de la API nativa no documentada de Windows NT y, como tal, no está disponible para aplicaciones para uso directo. Sin embargo, se puede utilizar indirectamente en los siguientes casos:

Implementación

(A)LPC se implementa utilizando objetos de "puerto" del núcleo, que son asegurables (con ACL , permitiendo, por ejemplo, que sólo SID específicos los utilicen) y permiten la identificación del proceso en el otro lado de la conexión. Los mensajes individuales también son asegurables: las aplicaciones pueden establecer SID por mensaje y también probar cambios en el contexto de seguridad en el token asociado con el mensaje (A)LPC.

El escenario de comunicación típico entre el servidor y el cliente es el siguiente:

  1. Un proceso de servidor primero crea un objeto de puerto de conexión de servidor con nombre y espera a que los clientes se conecten.
  2. Un cliente solicita una conexión a ese puerto designado enviando un mensaje de conexión.
  3. Si el servidor acepta la conexión, se crean dos puertos sin nombre :
    • Puerto de comunicación del cliente : utilizado por los subprocesos del cliente para comunicarse con un servidor en particular.
    • puerto de comunicación del servidor : utilizado por el servidor para comunicarse con un cliente en particular; Se crea uno de esos puertos por cliente.
  4. El cliente recibe un identificador para el puerto de comunicación del cliente y el servidor recibe un identificador para el puerto de comunicación del servidor y se establece el canal de comunicación entre procesos.

(A)LPC admite los siguientes tres modos de intercambio de mensajes entre el servidor y el cliente: [3]

ALPC tiene una ventaja de rendimiento sobre la interfaz LPC anterior, ya que se puede configurar para usar puertos de finalización de E/S en lugar del mecanismo sincrónico de solicitud/respuesta que utiliza exclusivamente LPC. [4] Esto permite la comunicación de alta velocidad de los puertos ALPC que equilibra automáticamente la cantidad de mensajes e hilos. Además, los mensajes ALPC se pueden agrupar para minimizar los cambios entre modo de usuario y modo kernel.

Uso conocido

(A)LPC se utiliza mucho en la comunicación entre subsistemas internos en Windows NT. El subsistema Win32 utiliza (A)LPC en gran medida para la comunicación entre el cliente y el servidor del subsistema ( CSRSS ). Quick LPC se introdujo en la versión 3.51 de Windows NT para realizar estas llamadas más rápidamente. Este método se abandonó en gran medida en la versión 4.0 a favor de mover las partes críticas del servidor al modo kernel (win32k.sys).

El servicio del subsistema de autoridad de seguridad local (LSASS), el administrador de sesión (SMSS) y el administrador de control de servicios utilizan puertos (A)LPC directamente para comunicarse con los procesos del cliente. Winlogon y Security Reference Monitor lo utilizan para comunicarse con el proceso LSASS.

Como se mencionó, Microsoft RPC puede usar (A)LPC como transporte cuando el cliente y el servidor están en la misma máquina. Muchos servicios que están diseñados para comunicarse solo en la computadora local utilizan (A)LPC como único transporte a través de RPC. La implementación de OLE y DCOM remotos en muchos casos también utiliza (A)LPC para la comunicación local.

Ver también

Notas

  1. ^ ab "Arquitectura LPC (llamadas a procedimientos locales) Parte 1". Documentos de Microsoft .
  2. ^ Russinovich, Salomón y Ionescu (2009:201)
  3. ^ Russinovich, Salomón y Ionescu (2009:203)
  4. ^ Russinovich, Salomón y Ionescu (2009:204)

Referencias

enlaces externos