Caché de página - Page cache

En informática, una caché de página , a veces también llamada caché de disco , 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 un caché de página en partes de la memoria principal (RAM) que de otro modo no se utilizarían , lo que da como resultado un acceso más rápido al contenido de las páginas almacenadas en caché y mejoras generales de rendimiento. Una caché de página se implementa en kernels con la administración de memoria de paginación y es mayormente transparente para las aplicaciones.

Por lo general, el sistema operativo utiliza toda la memoria física no asignada directamente a las aplicaciones para la caché de página. Dado que de otro modo la memoria estaría inactiva y se recuperaría fácilmente cuando las aplicaciones lo soliciten, generalmente no hay una penalización de rendimiento asociada y el sistema operativo podría incluso informar dicha memoria como "libre" o "disponible".

En comparación con la memoria principal, la lectura / escritura de la unidad de disco duro es lenta y los accesos aleatorios requieren costosas búsquedas de disco ; como resultado, mayores cantidades de memoria principal brindan mejoras en el rendimiento, ya que se pueden almacenar más datos en la memoria caché. 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 denomina búfer de disco ) o en un controlador de matriz de disco . Esta memoria no debe confundirse con la caché de la página.

Conservación de la memoria

Las páginas de la caché de páginas que se modifican después de ser introducidas se denominan páginas sucias. Dado que las páginas no sucias en la memoria caché de la página 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 en lugar de vaciar las páginas sucias. en almacenamiento secundario y reutilizando su espacio. Los binarios ejecutables , como las aplicaciones y las bibliotecas, también se suelen acceder a través de la caché de página y se asignan a espacios de proceso individuales utilizando memoria virtual (esto se hace mediante la llamada al sistema mmap en sistemas operativos similares a 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 eventualmente de la memoria principal, lo que conducirá a la conservación de la memoria.

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

Escrituras en disco

La caché de página 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 poder liberarlas. 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 la página, la escritura se realiza en esa página en la memoria principal. Si no se encuentra en la caché de la página, entonces, cuando la escritura cae perfectamente en los límites del tamaño de la página, la página ni siquiera se lee desde el disco, sino que se asigna y se marca inmediatamente como sucia. De lo contrario, las páginas se obtienen del disco y se realizan las modificaciones solicitadas. Un archivo que se crea o abre en la caché de la página, pero no se escribe, puede resultar en un archivo de cero bytes en una lectura posterior.

Sin embargo, no se pueden 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 mismo y no se escribirán en el disco.

Ataques de canal lateral

En 2019, los investigadores de seguridad demostraron ataques de canal lateral contra la caché de la página: 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 la caché o no.

Ver también

Referencias

enlaces externos