stringtranslate.com

tmpfs

tmpfs (abreviatura de T e mp orary F ile System ) es un paradigma de almacenamiento de archivos temporales implementado en muchos sistemas operativos tipo Unix . Está pensado para aparecer como un sistema de archivos montado , pero los datos se almacenan en una memoria volátil en lugar de en 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 ningún archivo se creará directamente en un almacenamiento no volátil como un disco duro (aunque el espacio de intercambio se utiliza como almacén de respaldo de acuerdo con la política de reemplazo de páginas del sistema operativo). Al reiniciar , todo lo que esté en tmpfs se perderá.

La memoria utilizada por tmpfs crece y se reduce para dar cabida a los archivos que contiene.

Muchas distribuciones 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 (por ejemplo, Debian) no tienen un tmpfs montado en /tmp de forma predeterminada; en este caso, los archivos bajo /tmp se almacenarán en el mismo sistema de archivos que / .

Y en casi todas las distribuciones de Linux, un tmpfs se monta en /run/ o /var/run/ para almacenar archivos temporales en tiempo de ejecución, como archivos PID y sockets de dominio Unix .

Implementaciones

Existen 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 ortogonal que permitía asignar memoria a cualquier objeto. [1] [2]

El directorio Solaris /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 comando Solaris mostrará swap como almacenamiento en segundo plano para cualquier volumen tmpfs:df

# df-k Kbytes del sistema de archivos utilizados capacidad disponible Montado en intercambiar 601592 0 601592 0% /tmp/prueba

linux

tmpfs es compatible con el kernel de Linux a partir de la versión 2.4 (4 de enero de 2001). [5] Linux tmpfs (anteriormente conocido como shm fs ) [6] se basa en el código ramfs utilizado durante el arranque y también utiliza el caché de página , pero a diferencia de ramfs admite el intercambio de páginas menos utilizadas para intercambiar espacio, así como el sistema de archivos. Límites de tamaño e inodo para evitar situaciones de falta de memoria (el valor predeterminado es la mitad de la RAM física y la mitad del número de páginas de RAM, respectivamente). [7]

BSD

4.2BSD introdujo MFS, [8] 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 fuente oficial de NetBSD el 10 de septiembre de 2005; [9] está disponible en versiones 4.0 y posteriores.

FreeBSD ha portado la implementación de NetBSD, donde está disponible en versiones 7.0 y posteriores. [10]

DragonFly BSD también ha portado la implementación de NetBSD, donde está disponible en versiones 2.5.1 y posteriores.

OpenBSD también portó la implementación tmpfs de NetBSD, inicialmente iniciada por Pedro Martelletto y mejorada por muchos otros. Se habilitó en versiones del 17 de diciembre de 2013. [11] La primera versión de OpenBSD con tmpfs incluido fue la 5.5. [12] OpenBSD 6.0 deshabilitó tmpfs debido a falta de mantenimiento.

Microsoft Windows

En Microsoft Windows , la creación de archivos utilizando el indicador FILE_ATTRIBUTE_TEMPORARY hará que los sistemas de archivos eviten escribir datos en un almacenamiento no volátil si hay suficiente memoria caché disponible. [13]

Ventajas

Debido a las velocidades más altas de la RAM en comparación con el almacenamiento en disco, tmpfs permite que el caché sea mucho más rápido cuando se almacena en uno, lo que lleva a un sistema general más eficiente, aunque los sistemas operativos con un caché de páginas verán menos beneficios ya que las páginas de archivos utilizadas recientemente permanecen en la memoria si la memoria libre es suficiente. Dado que la RAM se borra al reiniciar, tmpfs evita que los sistemas se desordenen demasiado sin necesidad de que el usuario elimine manualmente los archivos temporales. Además, almacenar archivos en la RAM evita que los discos se llenen demasiado rápido y extiende la vida útil de las unidades de estado sólido al reducir la cantidad de escrituras.

Desventajas

En sistemas sin espacio de intercambio , o donde el espacio de intercambio se está agotando, tmpfs puede consumir grandes cantidades de memoria.

Si los archivos de caché se almacenan en tmpfs, los programas perderán sus datos almacenados en caché al reiniciar.

Referencias

  1. ^ Peter Snyder. "tmpfs: un sistema de archivos de memoria virtual" (PDF) . Consultado el 7 de mayo de 2007 .
  2. ^ Hal L. popa. "Ajuste del rendimiento de SunOS 4.1". Archivado desde el original ( PostScript comprimido con G ) el 7 de febrero de 2012 . Consultado el 7 de mayo de 2007 .
  3. ^ "SPARC: Instalación del software Solaris" (PDF) . SunSoft. Diciembre de 1992. p. 9 . Consultado el 23 de abril de 2019 .
  4. ^ "Sistema operativo Solaris (Unix)". sistema-operativo.org .
  5. ^ Daniel Robbins (1 de septiembre de 2001). "Hilos comunes: guía del implementador del sistema de archivos avanzado, parte 3". IBM DeveloperWorks . Archivado desde el original el 3 de febrero de 2012 . Consultado el 15 de febrero de 2013 .
  6. ^ Daniel Robbins (1 de septiembre de 2001). "Hilos comunes: guía del implementador del sistema de archivos avanzado, parte 3". IBM DeveloperWorks . Archivado desde el original el 3 de febrero de 2012 . Consultado el 15 de febrero de 2013 .
  7. ^ Christoph Rohland; Hugh Dickins; KOSAKI Motohiro. "tmpfs.txt". kernel.org . Consultado el 16 de marzo de 2010 .
  8. ^ "Página de manual de NetBSD mount_mfs(8)". 2007-12-08 . Consultado el 15 de febrero de 2013 .
  9. ^ Julio M. Merino Vidal (24 de febrero de 2006). "NetBSD-SoC: sistema de archivos de memoria eficiente" . Consultado el 15 de febrero de 2013 .
  10. ^ Xin LI (23 de abril de 2013). "Página de manual de FreeBSD tmpfs(5)" . Consultado el 2 de diciembre de 2008 .
  11. ^ "CVS: cvs.openbsd.org: src: habilite tmpfs para que se pruebe un poco más".
  12. ^ "OpenBSD 5.5". 2014-05-01 . Consultado el 1 de mayo de 2014 .
  13. ^ alvinashcraft (9 de febrero de 2023). "Función CreateFileA (fileapi.h) - Aplicaciones Win32". aprender.microsoft.com . Consultado el 27 de junio de 2024 .

enlaces externos