stringtranslate.com

Error de página

En informática, un fallo de página es una excepción que la unidad de gestión de memoria (MMU) genera cuando un proceso accede a una página de memoria sin las preparaciones adecuadas. Para acceder a la página es necesario añadir una asignación al espacio de direcciones virtuales del proceso . Además, es posible que sea necesario cargar el contenido real de la página desde una copia de seguridad, por ejemplo, un disco . La MMU detecta el fallo de página, pero el núcleo del sistema operativo maneja la excepción haciendo que la página requerida sea accesible en la memoria física o denegando un acceso ilegal a la memoria.

Los errores de página válidos son comunes y necesarios para aumentar la cantidad de memoria disponible para los programas en cualquier sistema operativo que utilice memoria virtual , como Windows , macOS y el kernel de Linux . [1]

Tipos

Menor

Si la página está cargada en la memoria en el momento en que se genera el error, pero no está marcada en la unidad de administración de memoria como cargada en la memoria, entonces se denomina error de página leve o suave . El controlador de errores de página en el sistema operativo solo necesita hacer que la entrada para esa página en la unidad de administración de memoria apunte a la página en la memoria e indique que la página está cargada en la memoria; no necesita leer la página en la memoria. Esto podría suceder si la memoria es compartida por diferentes programas y la página ya está traída a la memoria para otros programas.

La página también podría haber sido eliminada del conjunto de trabajo de un proceso, pero aún no escrita en el disco ni borrada, como en los sistemas operativos que utilizan el almacenamiento en caché de páginas secundarias. Por ejemplo, OpenVMS puede eliminar una página que no necesita ser escrita en el disco (si ha permanecido sin cambios desde la última vez que se leyó del disco, por ejemplo) y colocarla en una lista de páginas libres si el conjunto de trabajo se considera demasiado grande. Sin embargo, el contenido de la página no se sobrescribe hasta que la página se asigna en otro lugar, lo que significa que aún está disponible si el proceso original hace referencia a ella antes de ser asignada. Dado que estos fallos no implican latencia del disco, son más rápidos y menos costosos que los fallos de página principales.

Importante

Este es el mecanismo que utiliza un sistema operativo para aumentar la cantidad de memoria de programa disponible a demanda. El sistema operativo retrasa la carga de partes del programa desde el disco hasta que el programa intenta usarlo y se genera el error de página. Si la página no está cargada en la memoria en el momento del error, se denomina error de página grave o grave . El controlador de errores de página del sistema operativo debe encontrar una ubicación libre: una página libre en la memoria o una página no libre en la memoria. Esta última puede ser utilizada por otro proceso, en cuyo caso el sistema operativo debe escribir los datos de esa página (si no se han escrito desde la última modificación) y marcar esa página como no cargada en la memoria en su tabla de páginas de proceso . Una vez que el espacio se ha hecho disponible, el sistema operativo puede leer los datos de la nueva página en la memoria, agregar una entrada a su ubicación en la unidad de administración de memoria e indicar que la página está cargada. Por lo tanto, los errores graves son más costosos que los errores menores y agregan latencia de acceso al almacenamiento a la ejecución del programa interrumpido.

Inválido

Si se produce un error de página para una referencia a una dirección que no forma parte del espacio de direcciones virtuales , es decir, no puede haber una página en la memoria que corresponda a ella, se denomina error de página no válida . El controlador de errores de página del sistema operativo generalmente pasará un error de segmentación al proceso infractor, indicando que el acceso no fue válido; esto suele dar como resultado la terminación anormal del código que realizó la referencia no válida. Un puntero nulo suele representarse como un puntero a la dirección 0 en el espacio de direcciones; muchos sistemas operativos configuran la MMU para indicar que la página que contiene esa dirección no está en la memoria y no incluyen esa página en el espacio de direcciones virtuales, de modo que los intentos de leer o escribir en la memoria a la que hace referencia un puntero nulo obtienen un error de página no válida.

Condiciones no válidas

Los accesos ilegales y los errores de páginas no válidas pueden generar un error de segmentación o un error de bus , lo que provoca un bloqueo de la aplicación o del sistema operativo . Los errores de software suelen ser las causas de estos problemas, pero los errores de memoria de hardware, como los causados ​​por el overclocking , pueden dañar los punteros y hacer que el código válido falle.

Los sistemas operativos proporcionan diferentes mecanismos para informar de errores de página. Microsoft Windows utiliza un manejo de excepciones estructurado para informar de errores de página no válidos como excepciones de violación de acceso . Los sistemas similares a UNIX suelen utilizar señales , como SIGSEGV , para informar de estas condiciones de error a los programas. Si el programa que recibe el error no lo gestiona, el sistema operativo realiza una acción predeterminada, que normalmente implica la finalización del proceso en ejecución que causó la condición de error y notifica al usuario que el programa ha funcionado mal. Windows suele informar de estos fallos sin entrar en detalles. Un usuario experimentado puede recuperar información detallada utilizando WinDbg y el minidump que Windows crea durante el fallo. Los sistemas operativos similares a UNIX informan de estas condiciones con mensajes de error como "violación de segmentación" o "error de bus", y pueden producir un volcado de memoria .

Impacto en el rendimiento

Los fallos de página degradan el rendimiento del sistema y pueden provocar un colapso . Los fallos de página importantes en equipos convencionales que utilizan unidades de disco duro pueden tener un impacto significativo en su rendimiento, ya que una unidad de disco duro promedio tiene una latencia rotacional promedio de 3 ms, un tiempo de búsqueda de 5 ms y un tiempo de transferencia de 0,05 ms/página. Por lo tanto, el tiempo total de paginación es cercano a 8 ms (= 8000 μs). Si el tiempo de acceso a la memoria es de 0,2 μs, entonces el fallo de página haría que la operación fuera aproximadamente 40 000 veces más lenta.

La optimización del rendimiento de los programas o sistemas operativos a menudo implica la reducción del número de fallos de página. Dos de los principales objetivos de la optimización son la reducción del uso general de la memoria y la mejora de la localización de la memoria . Para reducir los fallos de página, los desarrolladores deben utilizar un algoritmo de reemplazo de página adecuado que maximice las visitas a la página. Se han propuesto muchos, como la implementación de algoritmos heurísticos para reducir la incidencia de los fallos de página.

Una memoria física más grande también reduce los fallos de página.

Véase también

Notas

Referencias

  1. ^ Bovet, Daniel; Cesati, Marco (noviembre de 2005). Entender el núcleo de Linux (PDF) (3.ª ed.). O'Reilly Media. ISBN 0-596-00565-2. Recuperado el 9 de octubre de 2021 .

Enlaces externos