La comunicación entre procesos Linux # # # memoria compartida (memoria compartida)

Memoria compartida (comunicación entre procesos más rápido): Datos de funcionamiento general de los datos copiados en el modo kernel de modo de usuario, cuando se usa, y luego copia en el modo de núcleo de modo de usuario, pero que no requiere dos pasos de memoria compartida, el espacio de direcciones virtuales el funcionamiento de la memoria física es operado, y luego otro espacio de direcciones virtuales también puede tener esta información, es decir sin copiar. Debido a que la memoria compartida se aplica directamente una memoria física mediante la asignación de la tabla de páginas al espacio de direcciones virtual, operación espacio de dirección virtual, la operación es de hecho la misma área de memoria física, y por lo tanto otro medio de comunicación cuando se compara con la transmisión de datos, una de dos pasos menos el modo de usuario el proceso de copia de datos de estado del núcleo, por lo que la memoria es compartida entre la comunicación de más rápido proceso.

Dado que una pluralidad de procesos comparten la misma región de la memoria, inevitablemente requerirá algún mecanismo de sincronización de modo de usuario, mutex (entre procesos puede tener un mutex) semáforo, variables de condición, de lectura y escritura cerraduras, por lo que puede bloquear el archivo. Para simplificar la integridad de los datos de los datos compartidos y evitar el acceso simultáneo, el kernel proporciona un mecanismo para el acceso especial a los recursos de memoria compartida. Esto se llama un mutex o objeto de exclusión mutua.

 

modelo de memoria

En los sistemas Linux, la memoria virtual por proceso se divide en una serie de páginas. Estas páginas de memoria contiene los datos reales. Cada proceso mantendrá una relación de correspondencia entre la página de la memoria virtual de direcciones de memoria a. A pesar de que cada proceso tiene su propia dirección de memoria, diferentes procesos pueden asignar simultáneamente la misma página de memoria a su propio espacio de direcciones, con el fin de lograr el propósito de la memoria compartida. Utilice una memoria compartida requiere los siguientes cuatro pasos:

  1. Proceso primero debe asignar un nuevo segmento de memoria compartida crea una nueva página de memoria. Debido a que todos los procesos quieren compartir el acceso a la misma memoria, y sólo debe ser un proceso para crear una nueva memoria compartida. Asigna un bloque de memoria ya existe no crea una nueva página de nuevo, pero sólo devuelve un identificador identifica el bloque de memoria.

  2. Luego hay que acceder al segmento de memoria compartida de cada proceso debe obligar a la memoria compartida a su propio espacio de direcciones, crear una asignación del propio proceso a la dirección virtual compartido de la página.

  3. Después del final del proceso utilizado para la memoria compartida, se eliminará la asignación.

  4. Este proceso ya no requiere el uso de bloques de memoria compartida, debe tener una (y sólo uno) de este proceso es responsable de la liberación de páginas de memoria compartida que es la liberación del segmento de memoria compartida

 

Memoria compartida (memoria compartida) se puede dividir en System V y estándar POSIX, la referencia se detalla estándar

Habitación # # # Linux System V IPC Standard & estándar POSIX

Publicados 170 artículos originales · ganado elogios 207 · Vistas 4,59 millones +

Supongo que te gusta

Origin blog.csdn.net/xiaoting451292510/article/details/103731059
Recomendado
Clasificación