Site hosted by Angelfire.com: Build your free website today!

7.  MEMORIA VIRTUAL

 

DEFINICIÓN

La memoria virtual es una funcionalidad que proporciona el sistema operativo cuyo objetivo es conseguir que el proceso disponga del mayor espacio de memoria que pueda disponer (en los computadores actuales de 32 bits es 4 Gb, 232) aunque no se disponga de esa capacidad real de almacenamiento.

 

FUNCIONAMIENTO

La mayoría de computadores tienen distintos tipos de memoria que forman lo que se denomina jerarquía de memoria. En el caso de la memoria virtual influyen únicamente los dos últimos niveles:

Memoria RAM o principal: con una relación velocidad/coste ajustada (en torno a 1 Gb)

Discos duros: con gran capacidad de almacenamiento pero muy lentos (varios Gb)

La memoria virtual crea un espacio de direcciones ficticio.

 

El procedimiento es sencillo:

  1. El proceso accede a una dirección de memoria. El hardware comprueba:
  2. El sistema operativo usa sus tablas internas para determinar si esa dirección es válida para el proceso, dónde está la información en el disco duro, si tiene los permisos adecuados para el tipo de acceso:
  3. Cuando finaliza la carga de la información, el proceso vuelve a ponerse listo para ejecutar y repetiría el acceso a la misma posición desde el punto 1. Para mejorar el rendimiento, no se realiza la copia de una única dirección de memoria sino de un bloque de varios Kb.

 

APLICACIONES

La traducción de direcciones proporciona multitud de variantes que proporcionan la mayoría de los sistemas operativos con memoria virtual:

Reducción del espacio necesario para cargar el ejecutable: si se lanzan varias copias del mismo código, todas referencian la misma ubicación en el disco duro para el código reducciendo el número de copias a realizar.

 

Uso de bibliotecas dinámicas compartidas: todos los procesos que utilicen la misma biblioteca dinámica compartirán su código evitando copias innecesarias

Mejor gestión de los recursos: en memoria principal únicamente estarán las regiones de códigos y/o datos que realmente se estén empleando, reduciendo su ocupación con código o datos innecesarios