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

Detailed Explanation of tempfs in Linux System and/dev/shm

tmpfs est Linux/Un système de fichiers basé sur la mémoire sur les systèmes Unix, c'est-à-dire tmpfs utilise la mémoire ou la partition d'échange pour stocker des fichiers.

Le sous-système VM du noyau Linux est responsable de la gestion en arrière-plan des ressources de mémoire virtuelle Virtual Memory, c'est-à-dire des ressources RAM et swap, en déplaçant transparentement les pages RAM vers la partition d'échange ou à partir de la partition d'échange vers les pages RAM, le système de fichiers tmpfs nécessite des pages du sous-système VM pour stocker des fichiers. tmpfs ne sait pas s'il utilise des pages dans la partition d'échange ou dans la RAM ; prendre cette décision est le travail du sous-système VM. Ce que le système de fichiers tmpfs sait, c'est qu'il utilise une forme de mémoire virtuelle.

Étant donné que tmpfs est basé sur la mémoire, sa vitesse est assez rapide. De plus, les ressources VM utilisées par tmpfs sont dynamiques, lorsque vous supprimez des fichiers dans tmpfs, le pilote du système de fichiers tmpfs diminue dynamiquement le système de fichiers et libère les ressources VM, bien sûr, en créant des fichiers dans cela, les ressources VM sont également allouées dynamiquement. De plus, tmpfs n'a pas de persistance, les données ne sont pas conservées après le redémarrage.

/dev/shm est un périphérique basé sur tmpfs, dans certaines distributions Linux /dev/shm est /run/shm/ Un lien symbolique du répertoire. En fait, dans de nombreux systèmes sur /run est monté en tant que tmpsf. Utilisez df -T Vous pouvez voir les informations de montage des disques dans le système :

Système de fichiers  1K-Bloc Utilisé Disponible Utilisé% Point de montage
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

Alors, parlons d'abord de /Le répertoire run. Nous savons maintenant que ce répertoire est basé sur la mémoire, en fait, son prédécesseur était /var/Le répertoire run, plus tard été /run. Cela est dû au fait que /var/Le système de fichiers run n'est pas prêt dès le démarrage du système, et avant cela, les processus déjà démarrés stockent d'abord leurs informations de fonctionnement dans /Dans dev,/dev est également une tmpfs, et elle est disponible dès le démarrage du système. Mais /Le but de la conception de dev est de stocker des fichiers de périphérique, pas d'enregistrer des informations de processus pendant l'exécution, donc pour éviter la confusion,/Les fichiers contenant des informations de processus dans dev commencent tous par ".", c'est-à-dire qu'ils sont tous des dossiers cachés. Mais même ainsi, avec l'augmentation du nombre de dossiers,/dev deviennent de plus en plus confus, et alors une solution de remplacement est introduite, à savoir /run. En fait, dans de nombreux systèmes /var/Le répertoire run existe toujours, mais il est /C'est un lien symbolique du répertoire run.

/var/Le répertoire run contient principalement des fichiers décrivant les informations du système depuis le démarrage du système. Une utilisation courante est que les processus de démoni sauvent leur pid dans ce répertoire.

/dev/shm/ C'est un répertoire très utile sous Linux, qui signifie Shared memory, c'est-à-dire mémoire partagée. Étant donné qu'il est en mémoire, tous les processus système peuvent partager ce répertoire. Par défaut, sa taille est la moitié de la mémoire. Si vous souhaitez changer sa taille, vous pouvez utiliser mount pour la gérer :

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

Si vous souhaitez que cela soit permanent, vous pouvez modifier /etc/Fichier fstab :

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

Utiliser /dev/shm peut faire beaucoup de choses, disons une application Python. Lorsque vous utilisez Python pour traiter des données, vous pourriez utiliser numpy, généralement les quantités de données sont très grandes, si plusieurs processus doivent utiliser les mêmes données, alors /dev/shm entre en jeu, c'est-à-dire l'utilisation de la technologie de mémoire partagée. Python a une bibliothèque tierce qui peut être utilisée pour partager des tableaux numpy entre plusieurs processus, c'est SharedArray. SharedArray est basé sur /dev/shm, et utilise la norme POSIX, compatible avec plusieurs plateformes.

Résumé

Voici la fin de cet article, j'espère que le contenu de cet article peut apporter un certain soutien à votre apprentissage ou à votre travail. Si vous avez des doutes, vous pouvez laisser des messages pour échanger, merci de votre soutien au tutoriel d'uraisse.

Déclaration : le contenu de cet article est extrait du réseau, propriété des auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet, ce site n'est pas propriétaire, n'a pas été traité par l'homme, et n'assume pas de responsabilité juridique. Si vous trouvez du contenu présumé enfreignant les droits d'auteur, vous pouvez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation et fournir des preuves. Une fois confirmée, le site supprimera immédiatement le contenu présumé illicite.

You May Also Like