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

Explicación detallada de tempfs en el sistema operativo Linux/dev/shm

tmpfs es Linux/Un sistema de archivos basado en memoria en sistemas Unix, es decir, tmpfs utiliza memoria o partición de intercambio para almacenar archivos.

El subsistema de VM en el núcleo de Linux se encarga de gestionar recursos de memoria virtual en segundo plano, es decir, la memoria RAM y los recursos de swap, moviendo páginas de RAM a la partición de intercambio o desde la partición de intercambio a páginas de RAM de manera transparente. El sistema de archivos tmpfs necesita páginas del subsistema de VM para almacenar archivos. tmpfs no sabe dónde están estas páginas, en la partición de intercambio o en RAM; tomar esta decisión es el trabajo del subsistema de VM. Lo que sabe el sistema de archivos tmpfs es que está utilizando algún tipo de memoria virtual.

Dado que tmpfs está basado en memoria, su velocidad es bastante rápida. Además, los recursos de VM utilizados por tmpfs son dinámicos, cuando se eliminan archivos de tmpfs, el controlador del sistema de archivos tmpfs reducirá dinámicamente el sistema de archivos y liberará recursos de VM, por supuesto, también se asignarán recursos de VM dinámicamente al crear archivos. Además, tmpfs no tiene persistencia, los datos no se conservan después de reiniciar.

/dev/shm es un dispositivo basado en tmpfs, en algunas distribuciones de Linux /dev/shm es /run/shm/ Es un enlace simbólico del directorio. En realidad, en muchos sistemas /run se monta como tmpsf. Usando df -T Puede ver la situación de montaje de discos en el sistema:

Sistema de archivos  1K-Bloque Usado Disponible Usado% Punto de montaje
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

Entonces, primero hablemos de /El directorio run. Ahora que sabemos que este directorio está basado en memoria, en realidad su predecesor fue /var/El directorio run, más tarde fue /run reemplazar. Esto se debe a que /var/El sistema de archivos run no está listo desde el inicio del sistema, y antes de eso, los procesos en ejecución guardan primero su información de ejecución en /En dev,/dev también es un tmpfs y está disponible desde el inicio del sistema. Pero /El diseño original de dev es para almacenar archivos de dispositivos, no para almacenar información de ejecución en tiempo de proceso, por lo que para evitar la confusión,/Los archivos que almacenan información de proceso en dev se nombran con ".", es decir, todos son carpetas ocultas. Sin embargo, incluso así, a medida que aumenta el número de carpetas,/dev se vuelve cada vez más caótico, por lo que se introduce una solución alternativa, es decir /run. En realidad, en muchos sistemas /var/El directorio run aún existe, pero es /Es un enlace simbólico del directorio run.

/var/El directorio run almacena principalmente archivos que describen la información del sistema desde el inicio del sistema. Un uso común es que el proceso daemon guarde su pid en este directorio.

/dev/shm/ Es un directorio muy útil en Linux, que significa memoria compartida, es decir, memoria compartida. Debido a que está en la memoria, todos los procesos del sistema pueden compartir este directorio. Por defecto, su tamaño es la mitad de la memoria. Si desea cambiar su tamaño, puede usar mount para administrarlo:

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

Si desea que sea efectivo permanentemente, puede modificar /etc/Archivo fstab:

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

Utilizar /dev/shm puede hacer muchas cosas, aquí menciono una aplicación de Python. Al hacer procesamiento de datos con Python, es posible que se necesite numpy, generalmente se utilizan grandes volúmenes de datos en el procesamiento de datos, si hay múltiples procesos que necesitan usar los mismos datos, entonces /dev/shm entra en juego, es decir, utiliza la tecnología de memoria compartida. Python tiene una biblioteca de terceros que se puede usar para compartir matrices numpy entre múltiples procesos, es decir, SharedArray. SharedArray se basa en /dev/shm, y utiliza el estándar POSIX, lo que permite la compatibilidad con múltiples plataformas.

Resumen

Eso es todo el contenido de este artículo. Espero que el contenido de este artículo pueda ayudar a algunos de ustedes en sus estudios o trabajo. Si tienen alguna pregunta, pueden dejar un mensaje para intercambiar. Gracias por su apoyo a la tutorial de gritos.

Declaración: El contenido de este artículo se ha obtenido de la red, y pertenece al propietario original. El contenido ha sido contribuido y subido por usuarios de Internet, este sitio no posee los derechos de propiedad, no ha sido editado artificialmente y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar, y proporcione pruebas relacionadas. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará