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

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

  




 

 

NOTE: CentOS Enterprise Linux is built from the Red Hat Enterprise Linux source code. Other than logo and name changes CentOS Enterprise Linux is compatible with the equivalent Red Hat version. This document applies equally to both Red Hat and CentOS Enterprise Linux.
Linuxtopia - CentOS 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