English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Approfondimento di tempfs e /dev/shm nel sistema operativo Linux

tmpfs è un file system basato sulla memoria su sistemi Linux/Unix, ossia tmpfs utilizza memoria o la partizione swap per memorizzare i file.

Il sottosistema VM del kernel di Linux è responsabile della gestione in background delle risorse di memoria virtuale Virtual Memory, ossia RAM e risorse swap, spostando le pagine di RAM nella partizione di swap o viceversa, tmpfs ha bisogno delle pagine del sottosistema VM per memorizzare i file. tmpfs non sa se queste pagine si trovano nella partizione di swap o nella RAM; prendere questa decisione è il lavoro del sottosistema VM. Tutto ciò che tmpfs sa è che sta utilizzando una qualche forma di memoria virtuale.

Poiché tmpfs è basato sulla memoria, la velocità è abbastanza veloce. Inoltre, le risorse VM utilizzate da tmpfs sono dinamiche; quando si eliminano i file di tmpfs, il driver del file system tmpfs riduce dinamicamente il file system e rilascia le risorse VM, naturalmente allocando risorse VM dinamicamente quando si creano file. Inoltre, tmpfs non ha persistenza; i dati non vengono conservati dopo il riavvio.

/dev/shm è un dispositivo basato su tmpfs, in alcune distribuzioni Linux /dev/shm è un link simbolico della directory /run/shm/. Di fatto, in molti sistemi /run è montato come tmpfs. Utilizzando df -T è possibile visualizzare le condizioni di mount dei dischi nel sistema:

File system  1K-blocks Used Available Used% Mount point
udev  1859684 4 1859680 1% /dev
tmpfs  374096 1524 372572 1% /run
/dev/sda8 76561456 36029540 36619724 50% /
none   4 0 4 0% /sys/fs/cgroup
none  5120 0 5120 0% /run/lock
none  1870460 27688 1842772 2% /run/shm
none  102400 56 102344 1% /run/user

Quindi, parliamo prima della directory /run. Ora sappiamo che questa directory è basata sulla memoria, di fatto il suo predecessore è la directory /var/run, che è stata sostituita da /run. Questo perché il file system /var/run non è pronto al lancio del sistema, mentre i processi già avviati hanno prima salvato le informazioni di esecuzione in /dev, /dev è anche un tmpfs, e disponibile al lancio del sistema. Tuttavia, il progettista di /dev aveva l'intenzione di conservare i file dei dispositivi, non le informazioni di esecuzione dei processi, quindi per evitare la confusione, i file che contengono informazioni di processo in /dev iniziano con ".", ossia sono cartelle nascoste. Tuttavia, anche così, con l'aumentare del numero di cartelle, /dev diventa sempre più caotico, quindi è stata introdotta una soluzione alternativa, ossia /run. Di fatto, su molti sistemi la directory /var/run esiste ancora, ma è un link simbolico della directory /run.

La directory /var/run contiene principalmente file che descrivono le informazioni di sistema dal lancio del sistema. L'uso più comune è che i processi daemon salvino il proprio pid in questa directory.

/dev/shm/ è una directory molto utile sotto Linux, il cui significato è Shared memory, ossia memoria condivisa. Poiché si trova in memoria, tutti i processi del sistema possono condividere questa directory. Di default, la sua dimensione è metà della memoria. Se si desidera modificare la dimensione, è possibile gestirla con mount:

mount -o size=4000M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

Se desideri che le modifiche siano permanenti, puoi modificare il file /etc/fstab:

tmpfs /dev/shm tmpfs defaults,size=4G 0 0

Puoi fare molte cose con /dev/shm, ecco un esempio di applicazione Python. Quando si utilizza Python per elaborare dati, potrebbe essere necessario utilizzare numpy, di solito la quantità di dati durante l'elaborazione dei dati è molto grande, se ci sono più processi che devono utilizzare lo stesso set di dati, allora /dev/shm viene utilizzato, ossia la tecnologia della memoria condivisa. Python ha una libreria di terze parti che può essere utilizzata per condividere array numpy tra più processi, ossia SharedArray. SharedArray è basata su /dev/shm e utilizza lo standard POSIX, è compatibile con più piattaforme.

Sommario

Questo è tutto il contenuto dell'articolo, speriamo che il contenuto di questo articolo possa essere di aiuto per il tuo studio o lavoro. Se hai domande, puoi lasciare un messaggio per discutere, grazie per il supporto del tutorial di urla.

Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato caricato autonomamente dagli utenti di Internet, il sito web non detiene i diritti di proprietà, non è stato sottoposto a editing umano e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web eliminerà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare