Memoria Virtual

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

La memoria virtual es una técnica que puede implementar el administrador de memoria con soporte de paginación para aumentar el grado de multiprogramación. Para ello se emplea una zona en disco conocida como zona de intercambio o swap para descargar en ella segmentos o páginas que se encuentran en memoria principal.

La zona de intercambio se implementa siguiendo dos posibles estrategias:

  • Se destina una parte del disco reservada explícitamente para ello. En este caso, dicho espacio de memoria no puede ser empleado para almacenar información útil del usuario. Los sistemas operativos tipo-Unix implementan esta estrategia.
  • Se emplea un fichero oculto que puede tener un tamaño fijo (donde dicho espacio estará reservado y el usuario no podrá hacer uso de él) o variable para almacenar las páginas descargadas. Los sistemas operativos de tipo-Microsoft implementan esta aproximación.

La técnica de memoria virtual se manifiesta cuando toda la memoria principal está en uso y, por tanto, no existe espacio libre para cargar una cierta página que es requerida por un proceso. Ante esta situación, el mecanismo de memoria virtual tiene que recargar la página que se necesita en la memoria principal, de lo contrario debe seleccionar una página víctima que será descargada a la zona de intercambio para dejar espacio a la que se necesita. La selección de las páginas víctima se hace en base a diferentes criterios que veremos en esta unidad didáctica.

Por tanto, en caso de que un proceso activo requiera una página o segmento que está descargado en la zona de intercambio, hay que seleccionar una página víctima de ese mismo proceso (si se emplea un criterio de selección local) o de otro proceso (si se emplea uno global), preferentemente de un proceso en estado preparado o bloqueado. La página víctima se descarga en disco para hacer espacio a la página requerida.

Los tiempos de descarga y recarga de páginas tienen una penalización considerable, pues es mayor el tiempo de acceso que necesita un disco magnético que la memoria principal. En general, un buen criterio de reemplazo de páginas debe no descargar páginas que vayan a ser necesitadas en poco tiempo, reduciendo así la cantidad de accesos a disco asociados a la descarga y recarga de páginas.

Elementos de análisis

Dado un criterio de sustitución, nos preguntamos si es bueno o malo, y lo comparamos con otro para saber cuál es el mejor y cuanto mejor. El criterio de localidad no es una herramienta, sino una propiedad que empíricamente se comprueba que se cumple. Las herramientas para conocerlo son:

Cadenas de referencia

Secuencia de páginas referidas por un proceso. Suponiendo que un proceso hace los siguientes accesos a memoria (página/desplazamiento): 0, 1, 0, 0/6, 0/8, 1/0, 0/0, 0/2,2, 255, 2… 1/1, 1/4, 0/8, 2/15, 2/18, 2/15, 2/18, 255/32, 255/36, 2/15

No nos importan ni los desplazamientos ni que se acceda varias veces consecutivas a la misma página, el fallo de página se produce en el primer acceso. En una cadena de referencia, nunca aparecerán varias referencias consecutivas a la misma página. Realizar la traza de lo programado es complicado porque no conocemos el futuro, se obtiene una simulación.

Índices de valoración

Sirve para medir las prestaciones de los criterios. Todos ellos están referidos a una cadena de referencia. Son los siguientes:

  • F(m): Número de fallos de páginas con m marcos.
  • f= F(m) /A: Tasa de fallos de páginas.
  • fc= (F(m) -m )/A: Tasa de fallos de páginas en caliente.
  • F(m) -m: Número de fallos de páginas en caliente.
  • A = Número de accesos.

Curva paracorde

Representación del número de fallos de páginas para una cadena de referencia, frente al número de marcos utilizados. Sea p = número de páginas (distintas) en cadena de referencia. El número característico es el área bajo la curva, y es una buena medida de la calidad del algoritmo.

Principio de localidad

  • Localidad espacial: Si una página es accedida es muy probable que se acceda eventualmente a una página próxima a ella.
  • Localidad temporal: Si una página es accedida en un instante de tiempo, es muy probable que en el futuro inmediato vuelva a ser accedida.

El principio de localidad nos beneficia, ya que en el caso de que los accesos a memoria fuesen totalmente aleatorios, la probabilidad de producirse un fallo sería inversamente proporcional al número de marcos, con lo que la curva paracorde sería una recta con pendiente negativa. No obstante, se comprueba que las curvas paracordes típicas tienen una forma como la que presentamos, sensiblemente mejor que la probabilidad inversa al número de páginas.

A continuación, nos centraremos en el estudio de los diferentes criterios de reemplazo para páginas que permiten seleccionar la página víctima.