Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

Linuxtopia - Red Hat Enterprise Linux 4: Introduccion a la administracion de sistemas - La memoria virtual: los detalles

4.4. La memoria virtual: los detalles

Primero, debemos introducir un nuevo concepto: espacio de direcciones virtuales. El espacio de direcciones virtuales es el espacio de direcciones m�ximo disponible para una aplicaci�n. El espacio de direcciones virtuales varia de acuerdo a la arquitectura del sistema y del sistema operativo. El espacio de direcciones virtuales depende de la arquitectura puesto que es la arquitectura la que define cu�ntos bits est�n disponibles para prop�sitos de direccionamiento. El espacio de direcciones virtuales tambi�n depende del sistema operativo puesto que la forma en que el sistema operativo fue implementado puede introducir l�mites adicionales sobre aquellos impuestos por la arquitectura.

La palabra "virtual" en el espacio de direcciones virtuales, significa que este es el n�mero total de ubicaciones de memoria direccionables disponibles para una aplicaci�n, pero no la cantidad de memoria f�sica instalada en el sistema, o dedicada a la aplicaci�n en un momento dado.

En el caso de nuestra aplicaci�n de ejemplo, su espacio de direcciones virtuales es de 15000 bytes.

Para implementar la memoria virtual, para el sistema es necesario tener un hardware especial de administraci�n de memoria. Este hardware a menudo se conoce como un MMU (Memory Management Unit). Sin un MMU, cuando el CPU accede a la RAM, las ubicaciones reales de RAM nunca cambian — la direcci�n de memoria 123 siempre ser� la misma direcci�n f�sica dentro de la RAM.

Sin embargo, con un MMU, las direcciones de memoria pasan a trav�s de un paso de traducci�n antes de cada acceso de memoria. Esto significa que la direcci�n de memoria 123 puede ser redirigida a la direcci�n f�sica 82043 en un momento dado y a la direcci�n 20468 en otro. Como resultado de esto, la sobrecarga relacionada con el seguimiento de las traducciones de memoria virtual a f�sica ser�a demasiado. En vez de esto, la MMU divide la RAM en p�ginas — secciones contiguas de memoria de un tama�o fijo que son manejadas por el MMU como unidades sencillas.

Mantener un seguimiento de estas p�ginas y sus direcci�nes traducidas puede sonar como un paso adicional confuso e innecesario, pero de hecho es crucial para la implementaci�n de la memoria virtual. Por tal raz�n, considere el punto siguiente:

Tomando nuestra aplicaci�n hipot�tica con un espacio de direcciones virtuales de 15000 bytes, asuma que la primera instrucci�n de la aplicaci�n accede a los datos almacenados en la direcci�n 12374. Sin embargo, tambi�n asuma que nuestra computadora solamente tiene 12288 bytes de RAM f�sica. �Qu� pasa cuando el CPU intenta acceder a la direcci�n 12374?

Lo que ocurre se conoce como un fallo de p�gina.

4.4.1. Fallos de p�gina

Un fallo de p�gina es la secuencia de eventos que ocurren cuando un programa intenta acceder a datos (o c�digo) que est� en su espacio de direcciones, pero que no est� actualmente ubicado en la RAM del sistema. El sistema operativo debe manejar los fallos de p�gina haciendo residentes en memoria los datos accedidos, permitiendo de esta manera que el programa continue la operaci�n como que si el fallo de p�gina nunca ocurri�.

En el caso de nuestra aplicaci�n hipot�tica, el CPU primeramente presenta la direcci�n deseada (12374) al MMU. Sin embargo, el MMU no tiene traducci�n para esta direcci�n. Por tanto, interrumpe al CPU y causa que se ejecute un software, conocido como el manejador de fallos de p�gina. El manejador de fallos de p�gina determina lo que se debe hacer para resolver esta falla de p�gina. El mismo puede:

  • Encontrar d�nde reside la p�gina deseada en disco y la lee (este es usualmente el caso si el fallo de p�gina es por una p�gina de c�digo)

  • Determina que la p�gina deseada ya est� en RAM (pero no est� asignada al proceso actual) y reconfigura el MMU para que apunte a el

  • Apunta a una p�gina especial que solamente contiene ceros y asigna una nueva p�gina para el proceso solamente si este intenta alguna vez escribir a la p�gina especial (esto se llama una p�gina de copia en escritura y es utilizada a menudo por p�ginas que contienen datos inicializados a cero)

  • Obtener la p�gina deseada desde otro lugar (lo que se discute en detalle m�s adelante)

Mientras que las primeras tres acciones son relativamente sencillas, la �ltima no lo es. Por eso necesitamos cubrir algunos t�picos adicionales.

4.4.2. El conjunto de direcciones de trabajo

El grupo de p�ginas de memoria f�sica actualmente dedicadas a un proceso espec�fico se conoce como conjunto de direcciones de trabajo para ese proceso. El n�mero de p�ginas en el conjunto de direcciones de trabajo puede crecer o reducirse, dependiendo de la disponibilidad general de p�ginas del sistema.

El conjunto de direcciones de trabajo crece si un proceso tiene fallos de p�ginas. El conjunto de direcciones de trabajo se reduce a medida que existen menos y menos p�ginas libres. Para evitar que se acabe la memoria completamente, se deben eliminar las p�ginas del conjunto de direcciones de trabajo y convertirlas en p�ginas libres, disponibles para un uso posterior. El sistema operativo reduce el conjunto de direcciones de trabajo mediante:

  • Escribiendo las p�ginas modificadas a un �rea dedicada en un dispositivo de almacenamiento masivo (usualmente conocido como espacio de intercambio o de paginado)

  • Marcando las p�ginas sin modificar como libres (no hay necesidad de escribir estas p�ginas fuera del disco pues no se han cambiado)

Para determinar los conjuntos de trabajo apropiados para todos los procesos, el sistema operativo debe hacer un seguimiento de la informaci�n de uso de todas las p�ginas. De esta manera, el sistema operativo determina cuales p�ginas son usadas activamente (y deben mantenerse en memoria como residentes) y cuales no (y por lo tanto, se pueden eliminar de memoria). En la mayor�a de los casos, se utiliza un tipo de algoritmo de "menos usado recientemente" para determinar cuales p�ginas son elegibles para eliminarse de los conjuntos de trabajo de los procesos.

4.4.3. Intercambio

Mientras que el hacer intercambio de memoria (swapping, escribiendo p�ginas modificadas al espacio swap del sistema) es una parte normal de la operaci�n del sistema, es posible experimentar demasiado intercambio. La raz�n por la que estar atentos ante el excesivo intercambio es que la situaci�n siguiente puede ocurrir f�cilmente, y repetirse una y otra vez:

  • Las p�ginas de un proceso son intercambiadas (swapped)

  • El proceso se vuelve ejecutable e intenta acceder a una p�gina en el espacio de intercambio

  • La p�gina es colocada en memoria (lo m�s probable forzando a otras p�ginas de procesos a que sean extra�das de all�)

  • Un momento despu�s, la p�gina es colocada nuevamente fuera de memoria

Si esta secuencia de eventos se extiende demasiado, esto se conoce como thrashing y es un indicativo de insuficiente RAM para la carga de trabajo actual. "Trashing" es extremadamente perjudicial para el rendimiento del sistema, pues las cargas de CPU y E/S que se pueden generar en tal situaci�n r�pidamente sobrepasa la carga impuesta por el trabajo real del sistema. En casos extremos, puede que el sistema no realice ning�n trabajo �til, consumiendo todos sus recursos moviendo p�ginas dentro y fuera de memoria.

 
 
  Published under the terms of the GNU General Public License Design by Interspire