Un error de página (a veces llamado #PF , PF o error de hardware ) [a] es un tipo de excepción generada por el hardware de la computadora cuando un programa en ejecución accede a una página de memoria que actualmente no está asignada por la unidad de administración de memoria (MMU) en el virtual espacio de direcciones de un proceso. Lógicamente, la página puede ser accesible para el proceso, pero requiere que se agregue un mapeo a las tablas de la página del proceso y, además, puede requerir que el contenido real de la página se cargue desde una tienda de respaldo como un disco . La MMU del procesador detecta el error de página, mientras que el manejo de excepcionesEl software que maneja fallas de página generalmente es parte del kernel del sistema operativo . Al manejar una falla de página, el sistema operativo intenta hacer que la página requerida sea accesible en la ubicación en la memoria física o termina el programa en casos de un acceso ilegal a la memoria.
Al contrario de lo que podría sugerir "falla", las fallas de página válidas no son errores, y son comunes y necesarias para aumentar la cantidad de memoria disponible para los programas en cualquier sistema operativo que utilice memoria virtual , incluidos OpenVMS , Microsoft Windows , sistemas similares a Unix ( incluidos macOS , Linux , * BSD , Solaris , AIX y HP-UX ) yz / OS .
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 leve o de página suave. El manejador de fallas 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 la memoria es compartida por diferentes programas y la página ya está en 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 se escribió en el disco o se borró, como en los sistemas operativos que usan el almacenamiento en caché de página secundaria. Por ejemplo, HP OpenVMS puede eliminar una página que no necesita escribirse en el disco (si no ha cambiado desde la última lectura 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 todavía está disponible si el proceso original hace referencia a ella antes de ser asignada. Dado que estas fallas no implican latencia de disco, son más rápidas y menos costosas que las fallas de página más 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 de la falla, entonces se denomina falla de página mayor o dura. El manejador de fallas de página en el sistema operativo necesita encontrar una ubicación libre: 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 ha escrito desde que se modificó por última vez) 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 fallas 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, se denomina error de página no válida. El manejador de fallas de página en el sistema operativo generalmente pasará una falla de segmentación al proceso infractor, lo que indica que el acceso no fue válido; esto generalmente resulta en la terminación anormal del código que hizo la referencia invá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 valor no válido. error de página.
Condiciones inválidas
Los accesos ilegales y las fallas de páginas no válidas, como condiciones no válidas, pueden provocar una falla de segmentación o un error de bus , lo que resulta en la terminación de la programación (bloqueo) o el volcado del núcleo , según el entorno del sistema operativo. A menudo, estos problemas son causados por errores de software, pero los errores de memoria del hardware, como los causados por el overclocking , pueden dañar los punteros y hacer que el software correcto falle. También puede bloquear el sistema operativo.
Los sistemas operativos como Windows y UNIX (y otros sistemas similares a UNIX ) proporcionan diferentes mecanismos para informar errores causados por fallas de página. Windows utiliza el manejo estructurado de excepciones para informar accesos no válidos basados en fallos de página como excepciones de infracción de acceso , y los sistemas UNIX (y 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 maneja, el sistema operativo realiza una acción predeterminada, que generalmente implica la terminación del proceso en ejecución que causó la condición de error y notifica al usuario que el programa no funciona correctamente. Las versiones recientes de Windows a menudo informan de este tipo de problemas simplemente indicando algo como "este programa debe cerrarse" (un usuario o programador experimentado con acceso a un depurador aún puede recuperar información detallada). Las versiones recientes de Windows también escriben un minivolcado (similar en principio a un volcado de memoria ) que describe el estado del proceso bloqueado. UNIX y UNIX-como sistemas operativos informan estas condiciones al usuario con mensajes de error como "violación de la segmentación", o "error de bus", y también pueden producir un volcado de memoria.
Impacto en el rendimiento
Los fallos de página, por su propia naturaleza, degradan el rendimiento de un programa o sistema operativo y, en el caso degenerado, pueden provocar fallos . La optimización de programas y el sistema operativo que reducen el número de fallas de página mejoran el rendimiento del programa o incluso de todo el sistema. Los dos enfoques principales del esfuerzo de optimización son reducir el uso general de la memoria y mejorar la ubicación de la memoria . Para reducir las fallas de página en el sistema, los programadores deben hacer uso de un algoritmo de reemplazo de página apropiado que se adapte a los requisitos actuales y maximice las visitas a la página. Se han propuesto muchos, como la implementación de algoritmos heurísticos para reducir la incidencia de fallas de página. Generalmente, hacer que haya más memoria física disponible también reduce los errores de página.
Las fallas de página importantes en computadoras convencionales que utilizan unidades de disco duro para el almacenamiento pueden tener un impacto significativo en el rendimiento, ya que una unidad de disco duro promedio tiene una latencia de rotación 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 los 8 ms (= 8,000 μs). Si el tiempo de acceso a la memoria es de 0,2 μs, entonces el error de página haría que la operación fuera unas 40.000 veces más lenta.
Ver también
- La anomalía de Bélády
- Página (memoria de la computadora)
- Fallo de segmentación
Notas
- ^ Microsoft usa el término "falla dura" en algunas versiones de su Monitor de recursos , por ejemplo, en Windows Vista (como se usa en la Ayuda de la Vista de recursos en los sistemas operativos de Microsoft).
Referencias
- John L. Hennessy, David A. Patterson, Arquitectura informática, un enfoque cuantitativo ( ISBN 1-55860-724-2 )
- Tanenbaum, Andrew S. Sistemas operativos: diseño e implementación (segunda edición) . Nueva Jersey: Prentice-Hall 1997.
- Manual del desarrollador de software de la arquitectura Intel - Volumen 3: Programación del sistema
enlaces externos
- " Entonces, ¿qué es una falla de página? (Se requiere suscripción) " de OSR Online (una explicación específica de Windows)
- " Detalles de la memoria virtual " del sitio web de Red Hat.
- " UnhandledExceptionFilter (Windows) " de MSDN Online .
- " Sobrecarga de errores de página " para obtener información sobre cómo los errores de página pueden afectar de manera crucial el tiempo de procesamiento.