stringtranslate.com

Caché de página

En informática, una caché de página , a veces también llamada caché de disco , [1] es una caché transparente para las páginas que se originan en un dispositivo de almacenamiento secundario , como una unidad de disco duro (HDD) o una unidad de estado sólido (SSD). El sistema operativo mantiene una caché de página en partes no utilizadas de la memoria principal (RAM), lo que da como resultado un acceso más rápido al contenido de las páginas almacenadas en caché y mejoras generales en el rendimiento. Una caché de página se implementa en kernels con la gestión de memoria de paginación y es mayormente transparente para las aplicaciones.

Por lo general, toda la memoria física que no está asignada directamente a las aplicaciones es utilizada por el sistema operativo para la caché de páginas. Dado que, de lo contrario, la memoria estaría inactiva y se recupera fácilmente cuando las aplicaciones la solicitan, generalmente no hay una penalización de rendimiento asociada y el sistema operativo incluso podría informar que dicha memoria está "libre" o "disponible".

En comparación con la memoria principal, las lecturas/escrituras de la unidad de disco duro son lentas y los accesos aleatorios requieren búsquedas de disco costosas ; como resultado, mayores cantidades de memoria principal traen mejoras de rendimiento ya que se pueden almacenar en caché más datos en la memoria. [2] El almacenamiento en caché de disco separado se proporciona en el lado del hardware, mediante chips de RAM o NVRAM dedicados ubicados en el controlador de disco (en cuyo caso el caché está integrado en una unidad de disco duro y generalmente se llama búfer de disco [3] ), o en un controlador de matriz de discos , dicha memoria no debe confundirse con el caché de página. El sistema operativo también puede usar parte de la memoria principal como búfer de escritura del sistema de archivos, puede llamarse búfer de página . [4]

Conservación de la memoria

Las páginas en la caché de páginas modificadas después de ser traídas se denominan páginas sucias. [5] Dado que las páginas no sucias en la caché de páginas tienen copias idénticas en el almacenamiento secundario (por ejemplo, unidad de disco duro o unidad de estado sólido), descartar y reutilizar su espacio es mucho más rápido que paginar la memoria de la aplicación, y a menudo se prefiere a vaciar las páginas sucias en el almacenamiento secundario y reutilizar su espacio. Los binarios ejecutables , como aplicaciones y bibliotecas, también se acceden típicamente a través de la caché de páginas y se asignan a espacios de proceso individuales utilizando memoria virtual (esto se hace a través de la llamada al sistema mmap en sistemas operativos tipo Unix). Esto no solo significa que los archivos binarios se comparten entre procesos separados, sino también que las partes no utilizadas de los binarios se eliminarán de la memoria principal eventualmente, lo que lleva a la conservación de la memoria.

Dado que las páginas almacenadas en caché se pueden expulsar y reutilizar fácilmente, algunos sistemas operativos, en particular Windows NT , incluso informan el uso de la caché de páginas como memoria "disponible", mientras que la memoria en realidad está asignada a páginas del disco. Esto ha provocado cierta confusión sobre la utilización de la caché de páginas en Windows.

Escrituras en disco

La caché de páginas también ayuda a escribir en un disco. Las páginas de la memoria principal que se han modificado durante la escritura de datos en el disco se marcan como "sucias" y deben vaciarse en el disco antes de que se puedan liberar. Cuando se produce una escritura de archivo, se busca la página almacenada en caché para el bloque en particular. Si ya se encuentra en la caché de páginas, la escritura se realiza en esa página en la memoria principal. Si no se encuentra en la caché de páginas, entonces, cuando la escritura cae perfectamente en los límites de tamaño de página , la página ni siquiera se lee del disco, sino que se asigna y se marca inmediatamente como sucia. De lo contrario, la(s) página(s) se obtienen del disco y se realizan las modificaciones solicitadas. Un archivo que se crea o se abre en la caché de páginas, pero no se escribe en él, puede dar como resultado un archivo de cero bytes en una lectura posterior.

Sin embargo, no se puede escribir en todas las páginas almacenadas en caché, ya que el código del programa a menudo se asigna como de solo lectura o copia en escritura ; en el último caso, las modificaciones al código solo serán visibles para el proceso en sí y no se escribirán en el disco.

Ataques de canal lateral

En 2019, los investigadores de seguridad demostraron ataques de canal lateral contra el caché de páginas: es posible eludir la separación de privilegios y exfiltrar datos sobre otros procesos al monitorear sistemáticamente si algunas páginas de archivos (por ejemplo, archivos ejecutables o de biblioteca ) están presentes en el caché o no. [6]

Véase también

Referencias

  1. ^ Robert Love (12 de enero de 2005). "Desarrollo del núcleo de Linux (segunda edición), capítulo 15. La caché de páginas y la escritura diferida de páginas". makelinux.net . Sams Publishing . Consultado el 24 de julio de 2015 .
  2. ^ "Caché de disco". Webopedia . Septiembre de 1996.
  3. ^ Mark Kyrnin. "Qué buscar en un disco duro". about.com . Archivado desde el original el 4 de abril de 2015. Consultado el 20 de diciembre de 2014. El búfer de una unidad es una cantidad de RAM en la unidad para almacenar datos a los que se accede con frecuencia desde la unidad.{{cite web}}: CS1 maint: URL no apta ( enlace )
  4. ^ "free(1) — procps — Debian bookworm — Páginas de manual de Debian".
  5. ^ "Glosario - Biblioteca TechNet". Microsoft. 28 de enero de 2010.
  6. ^ Gruss, Daniel; Kraft, Erik; Tiwari, Trishita; Schwarz, Michael; Trachtenberg, Ari; Hennessey, Jason; Ionescu, Alex; Fogh, Anders (4 de enero de 2019). "Ataques de caché de página". arXiv : 1901.01161 [cs.CR].

Enlaces externos