Capítulo 38 La memoria

Windows tiene su manera particular de manejar la memoria del sistema. Esto es lógico, y era de esperar, ya que como recurso que es, la memoria también debe ser controlada y administrada por el sistema operativo.

Memoria virtual

Para administrar la memoria, en el API32, Windows mantiene un espacio virtual de memoria con direcciones de 32 bits para cada proceso. Esto permite que cada uno de los procesos disponga de hasta cuatro gigabytes de memoria. Dos de esos gigas están disponibles para el usuario, los correspondientes a las primeras direcciones de memoria; los otros dos están reservados para el núcleo del sistema.

Se trata de un espacio virtual, esto quiere decir que las aplicaciones no acceden directamente a memoria, y que las direcciones que manejamos no corresponden a direcciones de memoria física. El sistema se encarga de mapear esas direcciones virtuales a direcciones físicas. En esto, como en todos los recursos, el sistema operativo trabaja como intermediario entre el usuario y el hardware.

Este modo de trabajar proporciona a cada aplicación gran cantidad de memoria, de hecho, en la mayoría de los casos proporciona más memoria de la disponible físicamente. Para mantener toda esa memoria se trabaja con un fichero en disco como almacén de memoria complementaria: el fichero de paginación o fichero de intercambio.

El sistema de memoria virtual trabaja con unidades de memoria llamadas páginas. El tamaño de cada página varía dependiendo del tipo de ordenador, (en microprocesadores de la familia x86 suele ser de 4 KB). Mientras es posible, las páginas de memoria se asignan a cada proceso desde la memoria física, pero cuando es necesaria más memoria, los procesos inactivos pueden copiar algunas de sus páginas en el fichero de intercambio y liberar de ese modo parte de la memoria física que se puede asignar al proceso activo.

Todo esto es transparente para el usuario, que sólo notará que cuando es sistema está muy cargado aumenta la actividad del disco y disminuye la velocidad del sistema.

Nos interesa saber, de todos modos, que cada página de memoria virtual asociada a un proceso puede estar en uno de tres posibles estados:

  • Libre: no es accesible, pero puede ser reservada o asignada.
  • Reservada: no se usa por el proceso, ni tampoco está asociada a memoria física ni ocupa espacio en el fichero de intercambio. El proceso tampoco podrá obtener memoria de páginas reservadas.
  • Asignada: página que tiene memoria física o espacio en el fichero de intercamnio asociado. Estas páginas pueden ser protegidas, para evitar su acceso o limitarlo a sólo lectura, o pueden ser accedidas en lectura y escritura.

Nota. puedes ver más detalles sobre la memoria virtual en el artículo de José Manuel: Memoria virtual.

Un poco de historia

Vamos a ver algunos conceptos que tal vez te suenen, pero que en el API de Win32 han quedado obsoletos. En cualquier caso, puede ser conveniente saber algo sobre ellos, recordar sus aplicaciones y comprender por qué ya no son necesarios.

Memoria local y global

En las primeras versiones de Windows, de 16 bits, existen dos tipos de memoria que se pueden usar para crear objetos de memoria para un proceso: la memoria local y la memoria global.

Esto tiene su fundamento en el modo de trabajar de los procesadores de Intel. En el modo real la memoria se divide en segmentos, en cada uno de los cuales se usan punteros de 16 bits para acceder a la memoria, debido a esto, cada segmento tiene un tamaño de 64KB. Estos punteros de 16 bits son llamados punteros near o cercanos. Para acceder a la memoria fuera del segmento se usan punteros far o lejanos, que son punteros de 32 bits.

Hasta Windows 3.1 se trabajaba en modo real, y a cada proceso se le asignaba un segmento. La memoria que se puede obtener por el proceso dentro de su propio segmento se denomina memoria local, y la que se obtiene fuera de él, se denomina memoria global. Los bloques de memoria local tienen que ser, por definición, pequeños, ya que su tamaño máximo estaba limitado al espacio libre en el segmento.

A partir de Windows 95 y en Windows NT, es decir, con el API de 32 bits, el procesador trabaja en modo protegido. El concepto de segmento desaparece, y la memoria es lineal, con direcciones de 32 bits, lo que proporciona acceso a 4GB de memoria. Además se introduce el modelo de memoria virtual, lo cual elimina cualquier diferencia entre memoria local y global, y en el API32 las funciones para reservar y liberar memoria local o global son equivalentes, y siempre retornan punteros de 32 bits, o sea, punteros far.

Otros atributos de la memoria en Windows

Además de lo comentado hasta ahora, Windows mantiene otros dos atributos para cada objeto de memoria obtenido: la movilidad y la descartabilidad.

Comentarios de los usuarios (1)

LordKupa
2012-05-21 17:02:49

hola soy nuevo por aqui alguien me puede decir si es posible modificar el teclado para que me reconosca mas de 4 teclas presionadas o si ya esta escrito por ahi que me digan ¿en donde? jejeje gracias por leer y un cordial saludo gente