Sie sind auf Seite 1von 3

MEMORIA VIRTUAL

La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad de memoria que la disponible fsicamente. La mayora de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cach (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad. Muchas aplicaciones requieren acceso a ms informacin (cdigo y datos) que la que se puede mantener en memoria fsica. Esto es as sobre todo cuando el sistema operativo permite mltiples procesos y aplicaciones ejecutndose simultneamente. Una solucin al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su informacin en disco, movindola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opcin es que la aplicacin misma sea responsable de decidir qu informacin ser guardada en cada sitio (segmentacin), y de traerla y llevarla. La desventaja de esto, adems de la dificultad en el diseo e implementacin del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre s: cada programador podra realizar su diseo teniendo en cuenta que es el nico programa ejecutndose en el sistema. La alternativa es usar memoria virtual, donde la combinacin entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha ms memoria principal (RAM) que la que realmente posee. Este mtodo es invisible a los procesos. La cantidad de memoria mxima que se puede hacer ver que hay tiene que ver con las caractersticas del procesador. Por ejemplo, en un sistema de 32 bits, el mximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho ms fcil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria. Aunque la memoria virtual podra estar implementada por el software del sistema operativo, en la prctica casi siempre se usa una combinacin de hardware y software, dado el esfuerzo extra que implicara para el procesador.

OPERACIN BSICA
Cuando se usa memoria virtual, o cuando una direccin es leda 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 direccin real de memoria (la direccin de memoria fsica). Una indicacin de que la direccin de memoria deseada no se encuentra en memoria principal (llamado excepcin 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 deba y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situacin y permitir que el programa siga ejecutando o aborte segn sea el caso. La memoria irreal es una tcnica para proporcionar la simulacin de un espacio de memoria mucho mayor que la memoria fsica de una mquina. Esta "ilusin" permite que los programas se ejecuten sin tener en cuenta el tamao exacto de la memoria fsica. La ilusin de la memoria virtual est soportada por el mecanismo de traduccin de memoria, junto con una gran cantidad de almacenamiento rpido en disco duro. As en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequea parte de l, est en memoria fsica y el resto almacenado en el disco, y puede ser referenciado fcilmente.

Debido a que slo la parte de memoria virtual que est almacenada en la memoria principal es accesible a la CPU, segn un programa va ejecutndose, 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 paginacin). La memoria virtual ha llegado a ser un componente esencial de la mayora de los sistemas operativos actuales. Y como en un instante dado, en la memoria slo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener ms procesos en la memoria. Es ms, 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 cmo gestionar este esquema. La memoria virtual tambin simplifica la carga del programa para su ejecucin, llamada reubicacin, este procedimiento permite que el mismo programa se ejecute en cualquier posicin de la memoria fsica. En un estado estable, prcticamente toda la memoria principal estar ocupada con fragmentos de procesos, por lo que el procesador y el S.O tendrn 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 hiperpaginacin: donde el procesador consume ms tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta adivinar, en funcin de la historia reciente, qu fragmentos se usarn con menor probabilidad en un futuro prximo (vase algoritmos de reemplazo de pginas). Los argumentos anteriores se basan en el principio de cercana de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es vlida la suposicin de que, durante cortos perodos de tiempo, se necesitarn slo unos pocos fragmentos de un proceso. Una manera de confirmar el principio de cercana es considerar el rendimiento de un proceso en un entorno de memoria virtual. El principio de cercana sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea prctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de pginas o segmentos entre memoria secundaria y memoria principal. Justo despus de obtener la direccin fsica, y antes de consultar el dato en memoria principal, se busca en memoria-cache. Si est entre los datos recientemente usados, la bsqueda tendr xito, pero si falla, la memoria virtual consultar la memoria principal , en el peor de los casos, el disco (swapping).

DETALLES
La traduccin de las direcciones virtuales a reales es implementada por una Unidad de Manejo de Memoria (MMU). El sistema operativo es el responsable de decidir qu partes de la memoria del programa es mantenida en memoria fsica. Adems mantiene las tablas de traduccin de direcciones (si se usa paginacin la tabla se denomina tabla de paginacin), que proveen las relaciones entre direcciones virtuales y fsicas, para uso de la MMU. Finalmente, cuando una excepcin de memoria virtual ocurre, el sistema operativo es responsable de ubicar un rea de memoria fsica para guardar la informacin faltante, trayendo la informacin desde el disco, actualizando las tablas de traduccin y finalmente continuando la ejecucin del programa que dio la excepcin de memoria virtual desde la instruccin que caus el fallo.

En la mayora de las computadoras, las tablas de traduccin de direcciones de memoria se encuentran en memoria fsica. Esto implica que una referencia a una direccin virtual de memoria necesitar una o dos referencias para encontrar la entrada en la tabla de traduccin, y una ms para completar el acceso a esa direccin. Para acelerar el desempeo de este sistema, la mayora de las Unidades Centrales de Proceso (CPU) incluyen una MMU en el mismo chip, y mantienen una tabla de las traducciones de direcciones virtuales a reales usadas recientemente, llamada Translation Lookaside Buffer (TLB). El uso de este buffer hace que no se requieran referencias de memoria adicionales, por lo que se ahorra tiempo al traducir. En algunos procesadores, esto es realizado enteramente por el hardware. En otros, se necesita de la asistencia del sistema operativo: se levanta una excepcin, y en ella el sistema operativo reemplaza una de las entradas del TLB con una entrada de la tabla de traduccin, y la instruccin que hizo la referencia original a memoria es reejecutada. El hardware que tiene soporte para memoria virtual, la mayora de la veces tambin permite proteccin de memoria. La MMU puede tener la habilidad de variar su forma de operacin de acuerdo al tipo de referencia a memoria (para leer, escribir, o ejecutar), as como el modo en que se encontraba el CPU en el momento de hacer la referencia a memoria. Esto permite al sistema operativo proteger su propio cdigo y datos (como las tablas de traduccin usadas para memoria virtual) de corromperse por una aplicacin, y de proteger a las aplicaciones que podran causar problemas entre s.

PAGINACIN Y MEMORIA VIRTUAL


La memoria virtual usualmente (pero no necesariamente) es implementada usando paginacin. En paginacin, los bits menos significativos de la direccin de memoria virtual son preservados y usados directamente como los bits de orden menos significativos de la direccin de memoria fsica. Los bits ms significativos son usados como una clave en una o ms tablas de traduccin de direcciones (llamadas tablas de paginacin), para encontrar la parte restante de la direccin fsica buscada.