stringtranslate.com

Fallo de página

En informática, una falla de página (a veces llamada PF o falla grave ) [a] es una excepción que genera la unidad de administración de memoria (MMU) cuando un proceso accede a una página de memoria sin los preparativos adecuados. Para acceder a la página es necesario agregar 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 un almacén de respaldo, como un disco . La MMU detecta la falla de la página, pero el kernel del sistema operativo maneja la excepción haciendo que la página requerida sea accesible en la memoria física o negando un acceso ilegal a la memoria.

Los errores de página válida 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 la falla, pero no está marcada en la unidad de administración de memoria como cargada en la memoria, entonces se denomina falla de página menor o leve. El manejador de errores de página en el sistema operativo simplemente 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 diferentes programas comparten la memoria y la página ya está guardada en la memoria para otros programas.

La página también podría haberse eliminado del conjunto de trabajo de un proceso, pero aún no haberse escrito en el disco ni haberse borrado, 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 escribirse en el disco (si no ha cambiado desde la última vez que se leyó desde el 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 a otro lugar, lo que significa que todavía está disponible si el proceso original hace referencia a ella antes de asignarla. Dado que estos fallos no implican latencia del disco, son más rápidos y menos costosos que los fallos de página importantes.

Importante

Este es el mecanismo utilizado por un sistema operativo para aumentar la cantidad de memoria de programa disponible bajo 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 en el sistema operativo necesita encontrar una ubicación libre: ya sea una página libre en la memoria o una página no libre en la memoria. Este último podría ser utilizado por otro proceso, en cuyo caso el sistema operativo necesita escribir los datos en 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 proceso. tabla de páginas . Una vez que el espacio está 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, las fallas mayores son más costosas que las 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 , lo que significa que no puede haber una página en la memoria correspondiente a ella, entonces se denomina error de página no válida. El controlador de errores de página en el sistema operativo generalmente pasará un error de segmentación al proceso infractor, lo que indica que el acceso no fue válido; Esto normalmente resulta en una terminación anormal del código que hizo la referencia no válida. Un puntero nulo generalmente se representa 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 resultado no válido. fallo de página.

Condiciones no válidas

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

Los sistemas operativos proporcionan diferentes mecanismos para informar errores de falla de página. Microsoft Windows utiliza un manejo de excepciones estructurado para informar errores de páginas no válidas como excepciones de infracción de acceso . Los sistemas tipo UNIX suelen utilizar señales , como SIGSEGV , para informar estas condiciones de error a los programas. Si el programa que recibe el error no lo maneja, el sistema operativo realiza una acción predeterminada, que generalmente implica la finalización del proceso en ejecución que causó la condición de error y notifica al usuario que el programa no funcionó correctamente. Windows a menudo informa de este tipo de fallos sin entrar en detalles. Un usuario experimentado puede recuperar información detallada utilizando WinDbg y el minivolcado que Windows crea durante el fallo. Los sistemas operativos tipo UNIX informan de estas condiciones con mensajes de error como "violación de segmentación" o "error de bus" y pueden producir un volcado del núcleo .

Impacto en el rendimiento

Los fallos de página degradan el rendimiento del sistema y pueden provocar paliza . Los errores de página importantes en computadoras 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 búsqueda 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 unas 40.000 veces más lenta.

La optimización del rendimiento de programas o sistemas operativos a menudo implica reducir la cantidad de errores de página. Dos enfoques principales de la optimización son reducir el uso general de la memoria y mejorar la localidad de la memoria . Para reducir los errores 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 muchas, como implementar algoritmos heurísticos para reducir la incidencia de errores de página.

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

Ver también

Notas

  1. ^ Microsoft utiliza el término "fallo grave" en algunas versiones de su Monitor de recursos , por ejemplo, en Windows Vista (como se utiliza en la Ayuda de Resource View en los sistemas operativos de Microsoft).

Referencias

  1. ^ Bovet, Daniel; Cesati, Marco (noviembre de 2005). Comprensión del kernel de Linux (PDF) (3ª ed.). Medios O'Reilly. ISBN 0-596-00565-2. Consultado el 9 de octubre de 2021 .

enlaces externos