GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué usar shm_open?

Ambas llamadas son esencialmente equivalentes en Linux moderno:el primer enfoque podría usarse para acceder a la memoria compartida POSIX desde lenguajes como go (ver https://github.com/fabiokung/shm/blob/master/shm_linux.go) donde la memoria compartida POSIX no disponible de forma nativa:podría ser diferente para otro sistema operativo/versión donde la primera llamada conduciría a la creación de algún archivo o /dev/shm simplemente no está disponible y/o posiblemente un rendimiento más lento. Las reglas de combinación de rutas también pueden evolucionar de una versión a otra de librt

El primer enfoque se llama API de archivos mapeados en memoria (compatible con bibliotecas estándar)

La segunda llamada API de memoria compartida POSIX (requiere librt, también conocido como libposix en Linux como dependencia. Construye internamente la ruta y abre las llamadas)


Después de leer la fuente de shm_open , puedo decir que esos dos métodos son casi iguales.

enlace:https://code.woboq.org/userspace/glibc/sysdeps/posix/shm_open.c.html

shm_open simplemente agrega el prefijo shm_dir y luego invoca el open normal llamada al sistema, nada especial.


Si abre y mmap() un archivo normal, los datos terminarán en ese archivo.

Si solo necesita compartir una región de memoria, sin necesidad de conservar los datos, lo que genera una sobrecarga de E/S adicional, use shm_open().

Dicha región de memoria también le permitiría almacenar otros tipos de objetos, como mutexes o semáforos, que no puede almacenar en un archivo normal con mmap() en la mayoría de los sistemas.


Linux
  1. ¿Por qué Windows10 VM es lento en OpenStack?

  2. ¿Por qué usamos “./” (punto barra oblicua) para ejecutar un archivo en Linux/unix?

  3. ¿Por qué no puedo usar Cd en un script Bash?

  4. ¿Usar _roff para subrayar palabras?

  5. ¿Es posible usar / en un nombre de archivo?

Por qué uso rxvt como mi terminal

Cómo usar el comando Truncar en Linux

Las 10 razones principales por las que usar Linux

Por qué los nerds usan Linux

Linux vs Mac OS:15 razones por las que usar Linux en lugar de Mac OS

¿Cómo usar gzip en Linux?