Pregunta

Después de haber aprendido un poco sobre el tema, puede alguien decir, ¿cuál es la diferencia real entre la memoria compartida POSIX (shm_open) y POSIX asignada archivos (PAMM)?

Tanto parece utilizar el subsistema / dev / tmpfs, en lugar de más edad mecanismo IPC.

Entonces, ¿hay alguna ventaja de utilizar el archivo mmap sobre la memoria compartida?

Gracias.

¿Fue útil?

Solución

La distinción no siempre es clara. La memoria compartida se puede implementar a través de archivos de memoria asignada. Una excelente escritura en esto se puede encontrar aquí (como se aplicada a C / C ++ de programación).

Otros consejos

Mi entendimiento es que esa memoria compartida se construye encima de archivos asignados, pero Esta Página parece indicar que la capacidad de utilizar archivos de memoria asignada como memoria compartida es condicional.

  

El uso de la función mmap () está restringido por el QSHRMEMCTL sistema de valores. Cuando este valor del sistema es 0, la función mmap () no puede crear una asignación compartida que tiene con capacidad de PROT_WRITE. En esencia, esto impide la creación de un mapa de memoria que podría alterar el contenido del archivo de flujo está asignada. Si el parámetro banderas indicó MAP_SHARED, el parámetro prot especifica PROT_WRITE y el valor del sistema QSHRMEMCTL es 0, entonces el mmap () funciones fallarán y un número de error de los resultados EACCES.

la memoria

Básicamente compartida es una forma de IPC.The región compartida se crea en / dev / shm que se crea en la memoria solamente (RAM) y que no requiere operaciones de disco, por lo tanto es un método más rápido del IPC puede IPC.Although hacer uso de archivo de disco y luego utilizar mmap también, pero sería comparetively slow.Alternatively siempre se puede utilizar MAP_ANONYMOUS con mmap que no copia de seguridad con cualquier archivo de disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top