En un sistema operativo de la computadora que utilice la paginación para la gerencia de memoria de la memoria virtual, los algoritmos de reemplazo de página del deciden a qué memoria pagina para paginar hacia fuera (el intercambio hacia fuera, escribe al disco) cuando una página de la memoria necesita ser asignada. La paginación sucede cuando ocurre una avería de página y una página libre no se puede utilizar para satisfacer la asignación, cualquiera porque no hay ninguno, o porque el número de páginas libres es más bajo que un cierto umbral.
Cuando la página que fue seleccionada para el reemplazo y paginada hacia fuera se refiere otra vez tiene que ser paginada adentro (leído adentro en disco), y ésta implica el esperar de la terminación de la entrada-salida. Esto determina la calidad algoritmo de reemplazo de página: menos página-ins que espera de la hora para, mejor es el algoritmo. Un algoritmo de reemplazo de página mira la información limitada sobre accesos a las páginas proporcionadas por el hardware, e intenta conjeturar qué páginas se deben substituir para reducir al mínimo el número total de faltas de la página, mientras que balancea esto con los costes (almacenaje primario y tiempo de procesador) del algoritmo sí mismo.
l almacenaje primario ha aumentado en órdenes de la magnitud múltiples. Con varios gigabytes de la memoria primaria, los algoritmos que requieren un cheque periódico de cada bastidor de la memoria están llegando a ser cada vez menos prácticos.
Las jerarquías de memoria del
han crecido más altas. El coste de una falta de escondrijo de la CPU es lejos más costoso. Esto exacerba el problema anterior.
el lugar la referencia del software del usuario se ha debilitado. Esto se atribuye sobre todo a la extensión de las técnicas de la programación orientada al objeto que favorecen una gran cantidad de pequeñas funciones, el uso de las estructuras de datos sofisticadas como los árboles y las tablas de elección arbitraria que tienden a dar lugar a patrones de referencia caóticos de la memoria, y el advenimiento de la colección de basura que cambió drástico el comportamiento del acceso de memoria de usos.
Los requisitos para los algoritmos de reemplazo de página han cambiado debido a las diferencias en arquitecturas del núcleo del sistema operativo. Particularmente, la mayoría de los núcleos modernos del OS han unificado los escondrijos de la memoria virtual y del sistema de ficheros, requiriendo el algoritmo de reemplazo de página seleccionar una página entre de las páginas de los espacios de dirección virtual del programa de usuario y de los archivos depositados. Las 3ultimas páginas tienen características específicas. Por ejemplo, pueden ser bloqueadas, o pueden tener escribir los requisitos que ordenan impuestos por el que mete en diario. Por otra parte, como la meta del reemplazo de página es reducir al mínimo memoria que espera del tiempo total para, tiene que considerar los requisitos de memoria impuestos por otros subsistemas del núcleo que asignen memoria. Consecuentemente, el reemplazo de página en los núcleos modernos (linux, FreeBSD, y Solaris ) tiende a trabajar en el nivel de un distribuidor de fines generales de la memoria del núcleo, algo que en el de alto nivel de un subsistema de la memoria virtual.
Cuando un proceso incurre en una avería de página, un algoritmo de reemplazo de página local selecciona para el reemplazo un poco de página que pertenezca a ese mismo proceso (o a un grupo de procesos que comparten una partición de la memoria). Un algoritmo global del reemplazo está libre de seleccionar cualquier página en memoria.
El reemplazo de página local asume una cierta forma de división de la memoria que determine cuántas páginas deben ser asignadas a un proceso dado o a un grupo de procesos. La mayoría de las formas populares de división son fijado repartiendo y los algoritmos balanceados del sistema basados en el espacio de ejecución modelan. La ventaja del reemplazo de página local es su capacidad de conversión a escala: cada proceso puede manejar sus averías de página independiente sin la afirmación para un poco de estructura de datos global compartida.
Para ocuparse de esta situación, las varias políticas de la limpieza previa del se aplican. La limpieza previa es el mecanismo que comienza la entrada-salida en las páginas sucias que deben (probable) ser substituidas pronto. La idea es que para el momento en que la página prelimpiada se seleccione realmente para el reemplazo, la entrada-salida terminará y la página será limpia. La limpieza previa asume que es posible identificar las páginas que serán el substituido siguiente. La prelimpieza de eso es demasiado impaciente puede perder anchura de banda de la entrada-salida escribiendo las páginas que manejan conseguir re-dirtied antes de ser seleccionada para el reemplazo.
Este algoritmo no se puede ejecutar en el sistema operativo de fines generales porque es imposible computar confiablemente cuánto tiempo será antes de que una página vaya a ser utilizada, a menos que cuando todo el software que funcionará en un sistema se sabe de antemano y es favorable al análisis estático de sus patrones de referencia de la memoria, o solamente a una clase de usos se permita permitir análisis run-time. A pesar de esta limitación, los algoritmos existen que pueden ofrecer el &mdash cercano-óptimo del funcionamiento; en el estreno de un programa, el sistema operativo no pierde de vista todas las páginas referidas por el programa, y utiliza estos datos para decidir a qué páginas a intercambiar adentro y hacia fuera en funcionamientos subsecuentes. Este algoritmo puede ofrecer funcionamiento cercano-óptimo, pero no en el estreno de un programa, y solamente si el patrón de referencia de la memoria del programa es relativamente constante cada vez funciona.
El análisis del problema de la paginación también se ha hecho en el campo de los algoritmos en línea . La eficacia de los algoritmos en línea seleccionados al azar para el problema de la paginación se mide usar el análisis amortizado .
En cierto intervalo de tiempo fijo, los disparadores y los claros de la interrupción del reloj el pedacito referido de todas las páginas, tan solamente páginas referidas dentro del intervalo de reloj actual se marcan con un pedacito referido. Cuando una página necesita ser substituida, el sistema operativo divide las páginas en cuatro clases:
Clase 0 del
: no referido, no modificado
Clase 1: no referido, modificado
Clase 2: referido, no modificado
Clase 3: referido, modificado
Aunque no parezca posible que una página no sea referida todavía modificada, éste sucede cuando una página de la categoría 3 tiene su pedacito referido despejado por la interrupción del reloj. El algoritmo de NRU escoge una página al azar de la categoría más baja para el retiro. Observar que este algoritmo implica que una página referida es más importante que una página modificada.
El algoritmo de reemplazo de página del primero en entrar, primero en salir es utilizado por el sistema operativo VAX/VMS .
Como sugiere su nombre, de segunda mano da a cada página un " segundo-chance" - una página vieja se ha referido que es probablemente funcionando, y no se debe intercambiar hacia fuera sobre una nueva página que no se ha referido.
El método más costoso es el método de la lista encadenada, que utiliza una lista encadenada que contiene todas las páginas en memoria. En la parte posterior de esta lista está la menos página usada recientemente, y en el frente está la página recientemente usada. El coste de esta puesta en práctica miente en el hecho de que los artículos en la lista tendrán que ser movidos sobre cada referencia de la memoria, que es un proceso muy desperdiciador de tiempo.
Otro método que requiere la ayuda del hardware es como sigue: suponer que el hardware tiene un contador 64-bit que se incremente en cada instrucción. Siempre que una página esté alcanzada, gana un valor igual al contador a la hora del acceso de la página. Siempre que una página necesite ser substituida, el sistema operativo selecciona la página con el contador más bajo y la intercambia hacia fuera. Con el actual hardware, esto no es factible porque no existen los contadores required del hardware.
Debido a costes de la puesta en práctica, uno puede considerar algoritmos (como los que siguen) que ser similar a DE LRU, pero que ofrecer puestas en práctica más baratas.
Una ventaja importante del algoritmo DE LRU es que es favorable al análisis estadístico completo. Se ha probado, por ejemplo, que la poder DE LRU nunca da lugar más que N-tiempos más averías de página que algoritmo del OPT, donde está proporcional N al número de páginas en la piscina manejada.
Por una parte, la debilidad DE LRU es que su funcionamiento tiende a degenerar bajo muchos patrones de referencia absolutamente comunes. Por ejemplo, si hay páginas de N en la piscina DE LRU, un uso que ejecuta un lazo sobre el arsenal de N + las páginas 1 causará una avería de página en cada acceso. Pues los lazos sobre órdenes grandes son comunes, mucho esfuerzo se ha puesto en la modificación DE LRU para trabajar mejor en tales situaciones. Muchas de las modificaciones DE LRU propuestas intentan detectar patrones de referencia de colocación y cambiar en algoritmo del reemplazo conveniente, como utilizado recientemente (MRU).
el algoritmo del ARCO amplía DE LRU manteniendo una historia de páginas recientemente desahuciadas y utiliza esto para cambiar preferencia al acceso reciente o frecuente. Es particularmente resistente a las exploraciones secuenciales.
Una comparación del ARCO con otros algoritmos (DE LRU, MQ, 2Q, LRU-2, LRFU, LIRS) se puede encontrar en Megiddo y Modha
El algoritmo no con frecuencia usado del página-reemplazo genera pocas averías de página que el menos algoritmo de reemplazo de página usado recientemente cuando el de tabla de páginas contiene valores del puntero nulo.
El algoritmo de reemplazo de página (NFU) no con frecuencia usado requiere un contador, y cada página tiene un contador sus los propios, pone a cero inicialmente. En cada intervalo de reloj, todas las páginas que se han referido dentro de ese intervalo tendrán su contador incrementado por 1. en efecto, los contadores no pierden de vista cómo una página se ha utilizado con frecuencia. Así, la página con el contador más bajo puede ser intercambiada hacia fuera cuando es necesaria.
El mayor problema con NFU es que no pierde de vista la frecuencia del uso sin consideración alguna hacia la duración del uso. Así, en un recopilador de pasos múltiples, las páginas que eran muy usadas durante el primer paso, pero no se necesitan en el segundo paso serán favorecidas sobre las páginas que se utilizan comparable ligeramente en el segundo paso, pues tienen contadores de frecuencia más altos. Esto da lugar a degradación de las prestaciones. Otros panoramas comunes existen donde NFU se realizará semejantemente, por ejemplo un cargador-para arriba del OS. Agradecido, un algoritmo similar y mejor existe, y su descripción sigue.
Observar que el envejecimiento diferencia de DE LRU en el sentido que el envejecimiento puede no perder de vista solamente las referencias en los últimos intervalos de 16/32 (dependiendo del tamaño de pedacito de los números enteros del procesador) vez. Por lo tanto, dos páginas pudieron haberse referido a contadores de 00000000, aunque una página fue referida 9 intervalos hace y hace los otros 1000 intervalos. Hablando en t3erminos generales, saber el uso dentro de los últimos 16 intervalos es suficiente para tomar una buena decisión en cuanto a la cual página a intercambiar hacia fuera. Así, el envejecimiento puede ofrecer el funcionamiento cercano-óptimo para un precio moderado.
.
| Random links: | Universidad de Durham | Cala clara, Wisconsin | Parque nacional del búfalo de madera | Cazador Tylo | Ina, Ibaraki |