Memoria virtual en el sistema operativo – Part 1

 

La memoria virtual es un esquema de asignación de almacenamiento en el que la memoria secundaria se puede abordar como si fuera parte de la memoria principal. Las direcciones que un programa puede usar para hacer referencia a la memoria se distinguen de las direcciones que usa el sistema de memoria para identificar sitios de almacenamiento físico, y las direcciones generadas por el programa se traducen automáticamente a las direcciones de máquina correspondientes. 

El tamaño del almacenamiento virtual está limitado por el esquema de direccionamiento del sistema informático y la cantidad de memoria secundaria está disponible, no por el número real de ubicaciones de almacenamiento principal. 

Es una técnica que se implementa utilizando tanto hardware como software. Mapea las direcciones de memoria utilizadas por un programa, llamadas direcciones virtuales, en direcciones físicas en la memoria de la computadora. 

  1. Todas las referencias de memoria dentro de un proceso son direcciones lógicas que se traducen dinámicamente en direcciones físicas en tiempo de ejecución. Esto significa que un proceso se puede intercambiar dentro y fuera de la memoria principal de modo que ocupe diferentes lugares en la memoria principal en diferentes momentos durante el curso de la ejecución.
  2. Un proceso puede dividirse en varias partes y estas partes no necesitan estar ubicadas continuamente en la memoria principal durante la ejecución. La combinación de traducción dinámica de direcciones en tiempo de ejecución y el uso de tablas de páginas o segmentos lo permiten.

Si estas características están presentes entonces, no es necesario que todas las páginas o segmentos estén presentes en la memoria principal durante la ejecución. Esto significa que las páginas requeridas deben cargarse en la memoria cuando sea necesario. La memoria virtual se implementa mediante la paginación por demanda o la segmentación por demanda. 

 

Paginación por demanda: 
el proceso de cargar la página en la memoria a pedido (siempre que ocurra una falla de página) se conoce como paginación por demanda. 
El proceso incluye los siguientes pasos: 

virtual_mem

  1. Si la CPU intenta hacer referencia a una página que actualmente no está disponible en la memoria principal, genera una interrupción que indica una falla de acceso a la memoria.
  2. El sistema operativo pone el proceso interrumpido en un estado de bloqueo. Para que la ejecución continúe, el sistema operativo debe traer la página requerida a la memoria.
  3. El sistema operativo buscará la página requerida en el espacio de direcciones lógicas.
  4. La página requerida se traerá del espacio de direcciones lógicas al espacio de direcciones físicas. Los algoritmos de reemplazo de página se utilizan para la toma de decisiones sobre el reemplazo de la página en el espacio de direcciones físicas.
  5. La tabla de páginas se actualizará en consecuencia.
  6. La señal se enviará a la CPU para continuar con la ejecución del programa y colocará el proceso nuevamente en el estado listo.

Por lo tanto, cada vez que ocurre una falla de página, el sistema operativo sigue estos pasos y la página requerida se guarda en la memoria. 

ventajas :  

  • Se pueden mantener más procesos en la memoria principal: Debido a que vamos a cargar solo algunas de las páginas de cualquier proceso en particular, hay espacio para más procesos. Esto conduce a una utilización más eficiente del procesador porque es más probable que al menos uno de los procesos más numerosos esté listo en un momento determinado.
  • Un proceso puede ser más grande que toda la memoria principal: se elimina una de las restricciones más fundamentales en la programación. Se puede ejecutar un proceso más grande que la memoria principal debido a la paginación por demanda. El propio sistema operativo carga páginas de un proceso en la memoria principal según sea necesario.
  • Permite mayores niveles de multiprogramación al utilizar menos memoria (primaria) disponible para cada proceso.

Tiempo de servicio de fallo de página: 
El tiempo que se tarda en reparar el fallo de página se denomina tiempo de servicio de fallo de página. El tiempo de servicio de fallo de página incluye el tiempo necesario para realizar los seis pasos anteriores. 

Let Main memory access time is: m
Page fault service time is: s
Page fault rate is : p
Then, Effective memory access time = (p*s) + (1-p)*m

Intercambio: 

Intercambiar un proceso significa eliminar todas sus páginas de la memoria o marcarlas para que sean eliminadas por el proceso normal de reemplazo de páginas. La suspensión de un proceso garantiza que no se pueda ejecutar mientras se intercambia. En algún momento posterior, el sistema cambia el proceso del almacenamiento secundario a la memoria principal. Cuando un proceso está ocupado intercambiando páginas, esta situación se denomina hiperpaginación. 

intercambio

paliza:  

virtual_mem_2

En un momento dado, solo unas pocas páginas de cualquier proceso están en la memoria principal y, por lo tanto, se pueden mantener más procesos en la memoria. Además, se ahorra tiempo porque las páginas no utilizadas no se intercambian dentro y fuera de la memoria. Sin embargo, el sistema operativo debe ser inteligente sobre cómo administra este esquema. Prácticamente en estado estable, toda la memoria principal estará ocupada con páginas de proceso, de modo que el procesador y el sistema operativo tengan acceso directo a tantos procesos como sea posible. Por lo tanto, cuando el sistema operativo trae una página, debe descartar otra. Si descarta una página justo antes de usarla, tendrá que volver a obtener esa página casi de inmediato. Demasiado de esto conduce a una condición llamada Thrashing. El sistema pasa la mayor parte de su tiempo intercambiando páginas en lugar de ejecutar instrucciones. Por lo tanto, se requiere un buen algoritmo de reemplazo de página. 

En el diagrama dado, el grado inicial de multiprogramación hasta cierto punto (lambda), la utilización de la CPU es muy alta y los recursos del sistema se utilizan al 100 %. Pero si aumentamos aún más el grado de multiprogramación, la utilización de la CPU se reducirá drásticamente y el sistema pasará más tiempo solo en el reemplazo de la página y aumentará el tiempo que se tarda en completar la ejecución del proceso. Esta situación en el sistema se llama paliza. 

Causas de la paliza:  

  1. Alto grado de multiprogramación : si el número de procesos continúa aumentando en la memoria, el número de cuadros asignados a cada proceso disminuirá. Por lo tanto, habrá menos marcos disponibles para cada proceso. Debido a esto, se producirá un error de página con más frecuencia y se desperdiciará más tiempo de CPU simplemente entrando y saliendo de las páginas y la utilización seguirá disminuyendo. 

    Por ejemplo: 
    Deje marcos libres = 400 
    Caso 1 : Número de proceso = 100 
    Entonces, cada proceso obtendrá 4 marcos. 

    Caso 2 : Número de procesos = 400 
    Cada proceso obtendrá 1 cuadro. 
    El caso 2 es una condición de paliza, a medida que aumenta el número de procesos, disminuyen los fotogramas por proceso. Por lo tanto, el tiempo de CPU se consumirá simplemente intercambiando páginas. 
     

  2. Falta de marcos : si un proceso tiene menos marcos, menos páginas de ese proceso podrán residir en la memoria y, por lo tanto, se requerirá un intercambio de entrada y salida más frecuente. Esto puede conducir a la paliza. Por lo tanto, se debe asignar una cantidad suficiente de fotogramas a cada proceso para evitar la paliza.

Recuperación de Thrashing:  

  • No permita que el sistema se acelere dando instrucciones al programador a largo plazo para que no lleve los procesos a la memoria después del umbral.
  • Si el sistema ya está en estado de hiperactividad, indique al programador a medio plazo que suspenda algunos de los procesos para que podamos recuperar el sistema de la hiperpaginación.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *