Sunteți pe pagina 1din 3

Memoria virtual

Ir a la navegaci�nIr a la b�squeda

C�mo la memoria virtual se mapea a la memoria f�sica.


En inform�tica, la memoria virtual es una t�cnica de gesti�n de la memoria que se
encarga de que el sistema operativo disponga, tanto para el software de usuario
como para s� mismo, de mayor cantidad de memoria que est� disponible f�sicamente.
La mayor�a 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 m�s informaci�n (c�digo y datos) que la que
se puede mantener en memoria f�sica. Esto es as� sobre todo cuando el sistema
operativo permite m�ltiples procesos y aplicaciones ejecut�ndose simult�neamente.
Una soluci�n al problema de necesitar mayor cantidad de memoria de la que se posee
consiste en que las aplicaciones mantengan parte de su informaci�n en disco,
movi�ndola a la memoria principal cuando sea necesario. Hay varias formas de hacer
esto.

Una opci�n es que la aplicaci�n misma sea responsable de decidir qu� informaci�n
ser� guardada en cada sitio (segmentaci�n), y de traerla y llevarla. La desventaja
de esto, adem�s de la dificultad en el dise�o e implementaci�n del programa, es que
es muy probable que los intereses sobre la memoria de dos o varios programas
generen conflictos entre s�: cada programador podr�a realizar su dise�o teniendo en
cuenta que es el �nico programa ejecut�ndose en el sistema. La alternativa es usar
memoria virtual, donde la combinaci�n entre hardware especial y el sistema
operativo hace uso de la memoria principal y la secundaria para hacer parecer que
el ordenador tiene mucha m�s memoria principal (RAM) que la que realmente posee.
Este m�todo es invisible a los procesos. La cantidad de memoria m�xima que se puede
hacer ver que hay tiene que ver con las caracter�sticas del procesador. Por
ejemplo, en un sistema de 32 bits, el m�ximo es 232, lo que da 4096 Megabytes (4
Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho m�s
f�cil, al poder ignorar completamente la necesidad de mover datos entre los
distintos espacios de memoria.

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.

�ndice
1 Operaci�n
2 Detalles
3 Paginaci�n y memoria virtual
4 V�ase tambi�n
Operaci�n
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).


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 "ilusi�n"
permite que los programas se ejecuten sin tener en cuenta el tama�o exacto de la
memoria f�sica.

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 f�sica 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.

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 (v�ase algoritmos de reemplazo de p�ginas).

Los argumentos anteriores se basan en el principio de cercan�a 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 v�lida la suposici�n de
que, durante cortos per�odos de tiempo, se necesitar�n s�lo unos pocos fragmentos
de un proceso.

Una manera de confirmar el principio de cercan�a es considerar el rendimiento de un


proceso en un entorno de memoria virtual.

El principio de cercan�a sugiere que los esquemas de memoria virtual pueden


funcionar. Para que la memoria virtual sea pr�ctica 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 p�ginas o
segmentos entre memoria secundaria y memoria principal.

Justo despu�s de obtener la direcci�n f�sica, y antes de consultar el dato en


memoria principal, se busca en memoria-cache. Si est� entre los datos recientemente
usados, la b�squeda tendr� �xito, pero si falla, la memoria virtual consultar� la
memoria principal �, en el peor de los casos, el disco (swapping).

Detalles
La traducci�n 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 f�sica. Adem�s mantiene
las tablas de traducci�n de direcciones (si se usa paginaci�n la tabla se denomina
tabla de paginaci�n), que proveen las relaciones entre direcciones virtuales y
f�sicas, para uso de la MMU. Finalmente, cuando una excepci�n de memoria virtual
ocurre, el sistema operativo es responsable de ubicar un �rea de memoria f�sica
para guardar la informaci�n faltante, trayendo la informaci�n desde el disco,
actualizando las tablas de traducci�n y finalmente continuando la ejecuci�n del
programa que dio la excepci�n de memoria virtual desde la instrucci�n que caus� el
fallo.

En la mayor�a de las computadoras, las tablas de traducci�n de direcciones de


memoria se encuentran en memoria f�sica. Esto implica que una referencia a una
direcci�n virtual de memoria necesitar� una o dos referencias para encontrar la
entrada en la tabla de traducci�n, y una m�s para completar el acceso a esa
direcci�n.

Para acelerar el desempe�o de este sistema, la mayor�a 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 excepci�n, y en
ella el sistema operativo reemplaza una de las entradas del TLB con una entrada de
la tabla de traducci�n, y la instrucci�n que hizo la referencia original a memoria
es reejecutada.

El hardware que tiene soporte para memoria virtual, la mayor�a de la veces tambi�n
permite protecci�n de memoria. La MMU puede tener la habilidad de variar su forma
de operaci�n 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 c�digo y
datos (como las tablas de traducci�n usadas para memoria virtual) de corromperse
por una aplicaci�n, y de proteger a las aplicaciones que podr�an causar problemas
entre s�.

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.

S-ar putea să vă placă și