tmpfs es un paradigma de almacenamiento de archivos temporal implementado en muchos sistemas operativos similares a Unix. Tiene la intención de aparecer como un sistema de archivos montado , pero los datos se almacenan en una memoria volátil en lugar de un dispositivo de almacenamiento persistente. Una construcción similar es un disco RAM , que aparece como una unidad de disco virtual y aloja un sistema de archivos de disco .
Semántica
Todo lo almacenado en tmpfs es temporal en el sentido de que no se crearán archivos directamente en un almacenamiento no volátil como un disco duro (aunque el espacio de intercambio se utiliza como almacenamiento de respaldo en caso de situaciones de poca memoria). Al reiniciar , todo en tmpfs se perderá.
La memoria utilizada por tmpfs crece y se reduce para adaptarse a los archivos que contiene.
Muchas distribuciones de Unix habilitan y usan tmpfs de forma predeterminada para la rama / tmp del sistema de archivos o para la memoria compartida . Esto se puede observar con df como en este ejemplo:
Tamaño del sistema de archivos utilizado% de uso disponible montado entmpfs 256M 688K 256M 1% / tmp
Algunas distribuciones de Linux como Debian, sin embargo, no tienen un tmpfs montado en / tmp por defecto; en este caso archivos bajo / tmp se almacenará en el mismo sistema de archivos que / .
Y en casi todas las distribuciones de Linux, se monta un tmpfs en / ejecutar / o / var / run / para almacenar archivos temporales en tiempo de ejecución, como archivos PID y sockets de dominio Unix.
Implementaciones
Hay varias variantes independientes del concepto tmpfs. Uno de los primeros fue desarrollado por Sun Microsystems para SunOS, y otros sistemas operativos como BSD y Linux proporcionaron los suyos propios.
SunOS
SunOS 4 incluye lo que probablemente sea la primera implementación de tmpfs; apareció por primera vez en SunOS 4.0 a finales de 1987, junto con una nueva gestión del espacio de direcciones ortogonales que permitía mapear cualquier objeto en la memoria. [1] [2]
El SolarisEl directorio / tmp se convirtió en un sistema de archivos tmpfs de forma predeterminada a partir de Solaris 2.1, [3] lanzado en diciembre de 1992. [4] La salida del df
comando de Solaris mostrará swap como almacenamiento en segundo plano para cualquier volumen tmpfs:
# df -k Capacidad disponible en kbytes del sistema de archivos Montado en el intercambio 601592 0 601592 0% / tmp / test
Linux
tmpfs es compatible con el kernel de Linux a partir de la versión 2.4. [5] Linux tmpfs (anteriormente conocido como shmfs ) se basa en el código ramfs utilizado durante el arranque y también utiliza la caché de página, pero a diferencia de ramfs, admite el intercambio de páginas menos utilizadas para intercambiar espacio, así como el tamaño del sistema de archivos y los límites de inodo. para evitar situaciones de falta de memoria (por defecto, la mitad de la RAM física y la mitad del número de páginas de RAM, respectivamente). [6]
BSD
4.2BSD introdujo MFS, [7] un sistema de archivos basado en memoria implementado aplicando el sistema de archivos de disco FFS existente a una región de memoria virtual.
tmpfs, un sistema de archivos de memoria implementado utilizando estructuras de datos en memoria convencionales para mejorar el rendimiento de MFS, se fusionó con el árbol de fuentes oficial de NetBSD el 10 de septiembre de 2005; [8] está disponible en 4.0 y versiones posteriores.
FreeBSD ha portado la implementación de NetBSD, donde está disponible en 7.0 y versiones posteriores. [9]
DragonFly BSD también ha portado la implementación de NetBSD, donde está disponible en 2.5.1 y versiones posteriores.
OpenBSD también portó la implementación tmpfs de NetBSD, inicialmente iniciada por Pedro Martelletto y mejorada por muchos otros. Se habilitó en compilaciones desde el 17 de diciembre de 2013. [10] La primera versión de OpenBSD con tmpfs incluido fue 5.5. [11] OpenBSD 6.0 desactivó tmpfs por falta de mantenimiento.
Referencias
- ^ Peter Snyder. "tmpfs: un sistema de archivos de memoria virtual" (PDF) . Consultado el 7 de mayo de 2007 .
- ^ Hal L. Stern. "Ajuste de rendimiento de SunOS 4.1" ( PostScript comprimido con GZIP ) . Consultado el 7 de mayo de 2007 .
- ^ "SPARC: instalación del software Solaris" (PDF) . SunSoft. Diciembre de 1992. p. 9 . Consultado el 23 de abril de 2019 .
- ^ "Sistema operativo Solaris (Unix)" . operating-system.org .
- ^ Daniel Robbins (1 de septiembre de 2001). "Subprocesos comunes: guía avanzada del implementador del sistema de archivos, parte 3" . IBM DeveloperWorks . Consultado el 15 de febrero de 2013 .
- ^ Christoph Rohland; Hugh Dickins; KOSAKI Motohiro. "tmpfs.txt" . kernel.org . Consultado el 16 de marzo de 2010 .
- ^ "Página de manual de NetBSD mount_mfs (8)" . 2007-12-08 . Consultado el 15 de febrero de 2013 .
- ^ Julio M. Merino Vidal (24 de febrero de 2006). "NetBSD-SoC: sistema de archivos de memoria eficiente" . Consultado el 15 de febrero de 2013 .
- ^ Xin LI (23 de abril de 2013). "Página de manual de FreeBSD tmpfs (5)" . Consultado el 2 de diciembre de 2008 .
- ^ "CVS: cvs.openbsd.org: src - habilite tmpfs para que se pruebe un poco más" .
- ^ "OpenBSD 5.5" . 2014-05-01 . Consultado el 1 de mayo de 2014 .
enlaces externos
- "Página de manual de Solaris tmpfs (7FS)" . Consultado el 25 de febrero de 2013 .
- "Documentación de Kernel.org tmpfs" . Consultado el 5 de octubre de 2015 .