2. FUNDAMENTOS DE SISTEMAS OPERATIVOS MEMORIA VIRTUAL
MEMORIA VIRTUAL
Img.01: Cómo la memoria virtual se mapea a la memoria física
La memoria virtual es una técnica que permite ejecutar procesos que no caben
totalmente en memoria RAM (memoria física).
Esto propicia la creación de programas que sean más grandes que la memoria física.
Además, la memoria virtual ayuda a crear un esquema de abstracción de la memoria
que la separa de la zona lógica que el usuario ve, esto facilita enormemente la tarea
a los programadores puesto que no se han de preocupar por limitaciones de
memoria.
Los procedimientos de implementación de la memoria virtual se basan en que
cuando se ejecuta un programa, éste está parcialmente en memoria, es decir, sólo
hay cargada aquella zona de código y datos que se necesitan en ese instante de
tiempo, y no el programa completo. La memoria virtual es la separación entre la
memoria lógica disponible para el usuario y la memoria RAM, se implementa
generalmente con el método de paginación por demanda aunque también se puede
implementar en un sistema con segmentación.
04/12/2009 AGEKA
3. FUNDAMENTOS DE SISTEMAS OPERATIVOS MEMORIA VIRTUAL
En el momento en que en el sistema empieza a escasear la memoria, se crea un
fichero SWAP (intercambio) en el disco que sirve como ampliación auxiliar de
memoria. En el caso de Windows, cuando tenemos muchas aplicaciones en
funcionamiento y la memoria RAM se agota, el sistema se apoya en el fichero SWAP
para realizar movimientos desde el disco duro a la RAM y viceversa. De ese modo
crean espacios en memoria física para ir ejecutando las órdenes. Esto,
evidentemente, hace que el sistema vaya más lento.
Todo ello permite simular la existencia de 4GB de RAM en el equipo, a pesar de que
nadie dispone de 4GB en su ordenador (a excepción de algunos sistemas en
empresas y universidades), y dar capacidad de ejecución a múltiples aplicaciones
por grandes que sean.
Aunque la memoria virtual podría estar implementada por el software del sistema
operativo, en la práctica casi siempre se usa una combinación de hardware y
software, dado el esfuerzo extra que implicaría para el procesador.
Operación básica
Cuando se usa Memoria Virtual, o cuando una dirección es leída o escrita por la
CPU, una parte del hardware dentro de la computadora traduce las direcciones de
memoria generadas por el software (direcciones virtuales) en:
La dirección real de memoria (la dirección de memoria física), o
Una indicación de que la dirección de memoria deseada no se encuentra en
memoria principal (llamado excepción de memoria virtual)
En el primer caso, la referencia a la memoria es completada, como si la memoria
virtual no hubiera estado involucrada: el software accede donde debía y sigue
ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para
manejar la situación y permitir que el programa siga ejecutando o aborte según sea
el caso. La memoria virtual es una técnica para proporcionar la simulación de un
espacio de memoria mucho mayor que la memoria física de una máquina. Esta
04/12/2009 AGEKA
4. FUNDAMENTOS DE SISTEMAS OPERATIVOS MEMORIA VIRTUAL
"ilusión" permite que los programas se ejecuten sin tener en cuenta el tamaño exacto
de la memoria física.
Img.02: La memoria virtual
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de
memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así
en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal
forma que una pequeña parte de él, está en memoria real y el resto almacenado en
el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria
principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad
de referencias a memoria cambia, necesitando que algunas partes de la memoria
virtual se traigan a la memoria principal desde el disco, mientras que otras ya
ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los
sistemas operativos actuales. Y como en un instante dado, en la memoria sólo se
tienen unos pocos fragmentos de un proceso dado, se pueden mantener más
procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no se
usan no se cargan ni se descargan de la memoria. Sin embargo, el sistema operativo
debe saber cómo gestionar este esquema.
04/12/2009 AGEKA
5. FUNDAMENTOS DE SISTEMAS OPERATIVOS MEMORIA VIRTUAL
La memoria virtual también simplifica la carga del programa para su ejecución
llamada reubicación, este procedimiento permite que el mismo programa se ejecute
en cualquier posición de la memoria física.
En un estado estable, prácticamente toda la memoria principal estará ocupada con
fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a
la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un
fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado,
tendrá que traer de nuevo el fragmento de manera casi inmediata.
Demasiados intercambios de fragmentos conducen a lo que se conoce como
hiperpaginación: donde el procesador consume más tiempo intercambiando
fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema
operativo intenta adivinar, en función de la historia reciente, qué fragmentos se
usarán con menor probabilidad en un futuro próximo.
Paginación y memoria virtual
La memoria virtual usualmente (pero no necesariamente) es implementada usando
paginación. En paginación, los bits menos significativos de la dirección de memoria
virtual son preservados y usados directamente como los bits de orden menos
significativos de la dirección de memoria física. Los bits más significativos son
usados como una clave en una o más tablas de traducción de direcciones (llamadas
tablas de paginación), para encontrar la parte restante de la dirección física buscada.
El mecanismo de paginación, también recoge estadísticas de utilización de las partes
de memoria virtual que están residentes en memoria real o física. Estas estadísticas
ayudan al sistema operativo a decidir que se puede devolver a disco cuando el
espacio de memoria principal está muy "achuchado".
La paginación evita el problema de ajustar los pedazos de memoria de tamaños
variables que han sufrido los esquemas de manejo de memoria anteriores.
04/12/2009 AGEKA
6. FUNDAMENTOS DE SISTEMAS OPERATIVOS MEMORIA VIRTUAL
Tablas de Paginación.
Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo
que da por resultado el número de marco correspondiente a esa página virtual.
Algoritmos de Reemplazo de Paginas
Algoritmo aleatorio.- Reemplaza aleatoriamente cualquier pagina de memoria
principal, sin hacer ningún esfuerzo de predicción.
Algoritmo de reemplazo de páginas óptimo.-Debe tener el menor índice de
fallos de página de todos los algoritmos.
Algoritmo de reemplazo de páginas según el uso no tan reciente.- Hace uso
de los dos bits de estado que están asociados a cada página.
Algoritmo de reemplazo FIFO.-“Primero en entrar, Primero en salir”
Algoritmo de reemplazo de páginas de la segunda oportunidad
Algoritmo de reemplazo de páginas del reloj.- Organiza las paginas en una
lista circular.
Algoritmo de reemplazo de páginas LRU.- Menor uso reciente(Least Recent
Use).
Aplicación
Un programa de aplicación grande, podría mostrar un menú con muchas
funciones. Al seleccionar una función del menú, se ejecutarían varias rutinas
específicas de dicha función, pero no se referenciarían las rutinas de las
funciones restantes. En un sistema de memoria virtual, la ejecución de la función
seleccionada del menú, se soportaría trayendo el código y los datos para esa
función a la memoria principal (si no estuviese ya allí). El resto podría o no
sacarse del disco a memoria real. Mientras la memoria física fuese lo bastante
grande para contener el código y datos de cualquier función elemental de nuestro
menú, el tamaño total de la memoria física, podría ser mucho menor que el
tamaño total de nuestro programa.
04/12/2009 AGEKA