Notas del sistema operativo: Capítulo 7 Algoritmo de administración de memoria virtual

Algoritmo de reemplazo de página


Algoritmo para páginas parciales, para un programa en ejecución.

1. Funciones y objetivos

Interrupción por falla de página : la ocurrencia común de interrupción por falla de página es: hay un proceso abcde en la memoria actual, y ahora necesita ejecutar f, luego una determinada página en abcde debe moverse fuera.

Función : Cuando se produce una interrupción por falla de página y es necesario cargar una nueva página y la memoria está llena, seleccione qué página de la memoria se reemplaza.

Objetivo : Minimizar el número de cambios de página hacia adentro y hacia afuera (es decir, el número de interrupciones por fallas de página). Específicamente, el intercambio de páginas que ya no se usan en el futuro o que rara vez se usan a corto plazo generalmente solo se puede predecir en base a datos estadísticos pasados ​​bajo la guía del principio de localidad.

Bloqueo de página (bloqueo de fotogramas) : se utiliza para describir partes críticas del sistema operativo o procesos de aplicación de tiempo crítico que deben residir en la memoria. El método de implementación es: agregue el bit de bandera de bloqueo (bit de bloqueo) en la tabla de páginas

2. Entornos experimentales y métodos de evaluación

  • Registrar un seguimiento del acceso a la página mediante un proceso
    • Ejemplo: seguimiento (virtual) de direcciones (número de página, desplazamiento) ...
    • Generar trayectoria de página
  • Simule el comportamiento del reemplazo de una página y registre el número de páginas que faltan
    • Menos faltas, mejor rendimiento

3. Algoritmo de reemplazo de página parcial

Algoritmo de reemplazo de página óptimo (OPT, óptimo)
  • La idea básica: cuando ocurre una interrupción por falla de página, para cada página lógica almacenada en la memoria, calcule cuánto tiempo necesita esperar para el siguiente acceso. Elija el que tenga el tiempo de espera más largo como la página a reemplazar.
  • Esta es solo una situación ideal y no se puede lograr en un sistema real, porque el sistema operativo no puede saber cuánto tiempo lleva esperar a que se acceda a cada página.
  • Se puede utilizar como base para la evaluación del rendimiento de otros algoritmos (ejecutar un programa en un simulador y registrar cada acceso a la página. El algoritmo óptimo se puede utilizar en la segunda ejecución)
Algoritmo primero en entrar, primero en salir (FIFO)
  • La idea básica: seleccionar la página con mayor tiempo de residencia en memoria y eliminarla. Específicamente, el sistema mantiene una lista vinculada que registra todas las páginas lógicas ubicadas en la memoria. Según el orden de disposición de la lista enlazada, el tiempo de residencia de la primera página de la cadena es el más largo y el tiempo de residencia de la página al final de la cadena es el más corto. Cuando ocurre un error de página, la primera página de la cadena se elimina y la nueva página se agrega al final de la lista vinculada.
  • El rendimiento es deficiente y es probable que la página a la que se llama sea una página a la que se accede con frecuencia, y existe un fenómeno Belady, y el algoritmo FIFO rara vez se usa solo.
Algoritmo menos usado recientemente (LRU, menos usado recientemente)
  • Idea básica: cuando se produce una interrupción por error de página, seleccione la página que no se ha utilizado por más tiempo y elimínela.

  • De manera similar al algoritmo de reemplazo de página óptimo, la página que se reemplazará también se infiere en función de los registros anteriores. Es una aproximación del algoritmo de reemplazo de página óptimo. Se basa en el principio de la localidad del programa, es decir, si se accede con frecuencia a algunas páginas en el último período corto de tiempo (las últimas instrucciones), entonces un período corto de tiempo en el futuro En el interior, es posible que se vuelva a acceder de forma mundana, pero si algunas páginas no se han accedido durante mucho tiempo en el pasado, es posible que no se acceda a ellas durante mucho tiempo en el futuro.

  • El algoritmo LRU necesita registrar el tiempo de orden de uso de cada página.

  • La sobrecarga es relativamente grande.

  • Dos posibles implementaciones:

    • El sistema mantiene una lista de páginas enlazadas: la página utilizada más recientemente se utiliza como primer nodo y la página menos utilizada se utiliza como último nodo. Cada vez que se accede a la memoria, se encuentra la página correspondiente, se elimina de la lista vinculada y se mueve a la parte superior de la lista vinculada. Cada vez que ocurre una interrupción por falla de página, se elimina la página al final de la tabla.
    • Configure una pila de páginas activa: cuando acceda a una página, coloque el número de página en la parte superior de la pila y luego verifique si hay el mismo número de página que esta página en la pila y extráigalo si lo hay. Cuando es necesario eliminar una página, siempre se selecciona la página de la parte inferior de la pila, es decir, la que no se ha utilizado durante más tiempo.
Algoritmo de reemplazo de página de reloj (reloj, algoritmo de segunda oportunidad)
  • Algoritmo de reemplazo de página de reloj: una aproximación de LRU, una mejora de FIFO
  • La idea básica:
    • Es necesario utilizar el bit de acceso en la entrada de la tabla de páginas. Cuando se carga una página en la memoria, el bit se inicializa a 0. Luego, si se accede a la página (lectura / escritura), la posición se cambia a 1
    • Organice las páginas en una lista circular vinculada (similar a la superficie de un reloj) y apunte el puntero a la página más antigua (la más avanzada)
    • Cuando ocurre una interrupción por falla de página, se inspecciona la página más antigua a la que apunta el puntero, y si su bit de acceso es 0, se elimina inmediatamente; si la página a la que se accede es 1, la posición se establece en 0 y luego el puntero se mueve un espacio hacia abajo. Continúe haciéndolo, sabiendo encontrar la página eliminada, y luego mueva el puntero a la siguiente cuadrícula.
  • Modifique el algoritmo del reloj para que las páginas sucias siempre se retengan en un escaneo del cabezal del reloj
    • Las páginas sucias están representadas por bits sucios, cuando se escribe la página se pone a 1, y cuando solo se lee se mantiene en 0.
    • Si solo se realiza la operación de lectura, no es necesario procesar el almacenamiento y la eliminación en el disco duro, que es más sencillo y menos costoso
    • Cuando ocurre una interrupción por falla de página, verifique la página más antigua a la que apunta el puntero. Si su bit de acceso es 00, se eliminará inmediatamente; si la página a la que se accedió es 11/10/01, primero establezca el bit utilizado en 0, y luego el puntero Bajar un espacio. Continúe así, sabiendo encontrar la página que se eliminó 00, y luego mueva el puntero a la siguiente cuadrícula.
  • La conversión de bit usado y bit sucio se realiza mediante hardware
Uso menos frecuente (LFU, uso menos frecuente)
  • Idea básica: cuando se produce una interrupción por fallo de página, seleccione la página con el menor número de visitas y elimínela
  • Método de implementación: establezca un contador de acceso para cada página. Cada vez que se accede a una página, el contador de acceso de la página se incrementa en 1. En el caso de una interrupción por falla de página, se elimina la página con el valor de recuento más pequeño
  • La diferencia entre LRU y LFU: cuánto tiempo no ha visitado LRU durante la investigación; LFU examina el número y la frecuencia de las visitas.
  • Desventajas: solo se considera la información de frecuencia, no la información de tiempo
Fenómeno belady
  • Cuando se utiliza el algoritmo FIFO, a veces aumenta el número de páginas físicas asignadas y, en su lugar, aumenta la tasa de errores de página.
  • Razón: La función de reemplazo del algoritmo FIFO es inconsistente con la característica dinámica del proceso que accede a la memoria y es inconsistente con el objetivo del algoritmo de reemplazo (es decir, reemplazar las páginas menos usadas), por lo que las páginas reemplazadas por él no lo son. necesariamente el proceso al que no accederá
  • Puede obtener más información sobre el algoritmo de pila
Comparación de LRU, FIFO y Clock
  • Tanto el algoritmo LRU como el algoritmo FIFO son esencialmente ideas de primero en entrar, primero en salir, pero LRU se basa en el tiempo de acceso más reciente de la página para ordenar, por lo que es necesario ajustar dinámicamente el orden de cada página cada vez que se accede a la página (hay El último tiempo de acceso de una página ha cambiado) y FIFO se ordena según el momento en que la página ingresa a la memoria, este tiempo es fijo, por lo que la secuencia de páginas es fija. Si no se ha accedido a una página después de ingresar a la memoria, entonces su hora de acceso más reciente es la hora en que ingresó a la memoria. Si no se ha accedido a todas las páginas que ingresan a la memoria, entonces el LRU degenera en un FIFO.
  • El rendimiento de LRU es mejor, pero la sobrecarga del sistema es alta; la sobrecarga del algoritmo FIFO es pequeña, pero puede ocurrir un fenómeno de belleza. Por lo tanto, Clock es una opción de compromiso. En cada visita a la página, no es necesario ajustar dinámicamente el orden de la página en la lista vinculada, solo hacer una marca y luego esperar hasta que se produzca una interrupción por falla de página y luego moverla al final de la lista vinculada. Para aquellas páginas de la memoria a las que no se ha accedido, el algoritmo del Reloj funciona tan bien como el algoritmo LRU; y para aquellas páginas a las que se accede, el algoritmo del reloj no puede recordar sus ubicaciones exactas como LRU.

Algoritmo de reemplazo de página global


Para múltiples programas en ejecución.

Debido a que la demanda del proceso de marcos de página físicos es dinámicamente variable , asignar un marco de página físico fijo a cada proceso limita la flexibilidad. Por lo tanto, el tamaño del marco de página físico se puede asignar dinámicamente de acuerdo con la etapa de ejecución del programa, es decir, el algoritmo de reemplazo de página global.

1. Modelo de conjunto de trabajo

  • Los diversos algoritmos de reemplazo de página presentados anteriormente se basan en una premisa: el principio de localidad del programa . Si el principio de localidad del programa no se cumple, no hay diferencia en los efectos de varios algoritmos de reemplazo de página. Si el principio de localidad es válido, ¿cómo probar su existencia y cómo analizarlo cuantitativamente? El modelo de conjunto de trabajo.
  • Conjunto de trabajo: una colección de páginas lógicas actualmente en uso por un proceso. Puede representarse mediante una función binaria W (t, deita)
    • t representa el tiempo de ejecución actual
    • deita se denomina ventana de conjunto de trabajo, que es la ventana de tiempo para acceder a una página de longitud fija
    • W (t, deita) = el conjunto de todas las páginas en la ventana de tiempo deita antes de la hora actual t (el conjunto cambia constantemente con el cambio de t)
    • | W (t, deita) | se refiere al tamaño del conjunto de trabajo, es decir, el número de páginas
  • Cambios en el tamaño del conjunto de trabajo: una vez que el proceso comienza a ejecutarse, se establece gradualmente un conjunto de trabajo más estable a medida que se accede a nuevas páginas. Cuando la ubicación del área local de acceso a la memoria es aproximadamente estable, el tamaño del conjunto de trabajo es aproximadamente estable; cuando cambia la ubicación del área local, el conjunto de trabajo se expande rápidamente y se contrae y pasa al siguiente valor estable.
  • ** Conjunto residente: ** Se refiere al conjunto de páginas donde el proceso realmente reside en la memoria en el momento actual
    • El conjunto de trabajo es una propiedad inherente del proceso durante su operación, y el conjunto residente depende del número de páginas físicas asignadas al proceso por el sistema y del algoritmo de reemplazo de página utilizado.
    • Si todo el conjunto de trabajo de un proceso está en la memoria, es decir, el conjunto de trabajo es un subconjunto del conjunto residente, entonces el proceso procederá sin problemas sin causar demasiados fallos de página (hasta que el conjunto de trabajo cambie drásticamente, por lo tanto, la transición a otro Expresar)
    • Cuando el tamaño del conjunto residente del proceso alcanza un cierto número y luego le asigna más páginas físicas, la tasa de fallas de página no disminuirá significativamente

2. Algoritmo de reemplazo de página del conjunto de trabajo

  • La idea básica: descartar las páginas que no están en la ventana del conjunto de trabajo, no necesariamente cuando ocurre una interrupción. Cuando el número de páginas sea mayor que el tamaño de la ventana del conjunto de trabajo, incluso si es menor que el tamaño del conjunto residente, se descartarán.
  • La página colocada en la memoria física depende de si la página está en la ventana del conjunto de trabajo y el número de reemplazos de página se puede reducir a nivel general del sistema.

3. Algoritmo de sustitución de la tasa de fallos de página

  • El tamaño del conjunto residente en el algoritmo de reemplazo de página del conjunto de trabajo es fijo
  • Estrategia de asignación variable: el tamaño del conjunto de residentes es variable. Por ejemplo: cuando cada proceso se ejecuta por primera vez, primero asigna un cierto número de páginas físicas de acuerdo con el tamaño del programa, y ​​luego ajusta dinámicamente el tamaño del conjunto residente mientras se ejecuta el proceso.
    • Se puede utilizar un método de reemplazo de página global. Cuando ocurre una interrupción por falla de página, la página reemplazada puede ser la página física utilizada en competencia entre otros procesos y los procesos concurrentes.
    • Ventajas y desventajas: mejor rendimiento, pero mayor sobrecarga del sistema
    • Implementación específica: el algoritmo de frecuencia de falla de página (PFF, frecuencia de falla de página) se puede utilizar para ajustar dinámicamente el tamaño del conjunto residente
  • Tasa de fallos de página: significa "número de fallos de página / número de accesos a memoria" o "recíproco del intervalo de tiempo medio de fallos de página". Factores de influencia:
    • Algoritmo de reemplazo de página
    • El número de páginas físicas asignadas al proceso.
    • El tamaño de la página en sí.
    • Método de programación
  • Si la tasa de fallas de página del programa en ejecución es demasiado alta, se asignan más páginas físicas aumentando el conjunto de trabajo ; si la tasa de fallas de página del programa en ejecución es demasiado baja, el número de páginas físicas se reduce reduciendo el conjunto de trabajo . Intente mantener la tasa de errores de página de cada programa en ejecución en un rango razonable.
  • Algoritmo: realice un seguimiento de la probabilidad de que falten ocurrencias. Establezca el umbral T, registre el tiempo tn desde la última página que falta y compare | tn-t (n-1) | con T. Si es mayor que el umbral, elimine las páginas no referenciadas en (t (n-1), tn) en el conjunto de trabajo; menor o igual al umbral, solo agregue las páginas que faltan al conjunto de trabajo

4. Golpear

  • Si las páginas físicas asignadas a un proceso son demasiado pocas para incluir el conjunto de trabajo completo, es decir, el conjunto residente es un subconjunto del conjunto de trabajo, entonces el proceso provocará muchas interrupciones por fallas de página y reemplazos frecuentes entre la memoria y la memoria. Se requiere una página de memoria externa, por lo que el proceso se está ejecutando muy lentamente, este estado se llama "jitter".
  • La razón de la fluctuación: a medida que aumenta el número de procesos que residen en la memoria, las páginas físicas asignadas a cada proceso continúan disminuyendo y la tasa de fallas de página continúa aumentando. Por lo tanto, el sistema operativo tiene que seleccionar un número apropiado de procesos y el número de cuadros requeridos por los procesos para lograr un equilibrio entre el nivel de concurrencia y la tasa de fallas de página.
  • El problema de jitter puede mejorarse reemplazando la página local: ajuste el MPL para que el tiempo medio entre fallas de página MTBF (tiempo medio entre fallas de página) = tiempo de servicio de fallas de página PFST (tiempo de servicio de fallas de página)

Supongo que te gusta

Origin blog.csdn.net/MaoziYa/article/details/106187730
Recomendado
Clasificación