GNU/Linux >> Linux Esercitazione >  >> Linux

Perché usare shm_open?

Entrambe le chiamate sono essenzialmente equivalenti sul moderno Linux:il primo approccio potrebbe essere utilizzato per accedere alla memoria condivisa POSIX da linguaggi come go (vedi https://github.com/fabiokung/shm/blob/master/shm_linux.go) dove la memoria condivisa POSIX no disponibile nativamente:potrebbe essere diverso per altri sistemi operativi/versioni in cui la prima chiamata porterebbe alla creazione di alcuni file o /dev/shm semplicemente non disponibile e/o forse prestazioni più lente. Le regole di unione dei percorsi potrebbero anche evolversi da una versione all'altra di librt

Il primo approccio chiamato API dei file mappati in memoria (supportato nelle librerie std)

2a chiamata API di memoria condivisa POSIX (richiede librt aka libposix su Linux come dipendenza Costruisce internamente il percorso e chiama open)


Dopo aver letto il sorgente di shm_open , posso dire che questi due metodi sono quasi gli stessi.

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

shm_open aggiunge solo il prefisso shm_dir quindi invoca il normale open syscall, niente di speciale.


Se apri e mmap() un file normale, i dati finiranno in quel file.

Se hai solo bisogno di condividere una regione di memoria, senza la necessità di rendere persistenti i dati, il che comporta un ulteriore sovraccarico di I/O, usa shm_open().

Una tale regione di memoria ti permetterebbe anche di memorizzare altri tipi di oggetti come mutex o semafori, che non puoi memorizzare in un normale file con mmap() sulla maggior parte dei sistemi.


Linux
  1. Perché Windows10 VM è lento su OpenStack?

  2. Perché utilizziamo "./" (barra punto) per eseguire un file in Linux/unix?

  3. Linux – Perché usiamo Su – e non solo Su?

  4. Come utilizzare il tipo di file in Vim?

  5. Scarica la memoria di un processo Linux su file

Perché uso rxvt come terminale

Come usare il comando Tronca in Linux

I 10 motivi principali per utilizzare Linux

Perché i nerd usano Linux

Linux vs Mac OS:15 motivi per utilizzare Linux invece di Mac OS

Come usare gzip in Linux?