< CLASIFICACION DE LA MEMORIA

  1. Direccionamiento de la memoria
  2. Multiprogramación
  3. Clasificacion de la memoria
  4. Introduccion a windows NT
  5. Manejo de la memoria en windows NT

LA MEMORIA FISICAMENTE

El esquema de la memoria central es el siguiente:

El RMD o registro de dirección de memoria consta de dos celdas que indican la fila y la columna de la posición de memoria deseada.

El RM o registro de memoria contiene de forma temporal la información que se va a escribir o que se ha leído del mapa de memoria.

El MAPA DE MEMORIA es un conjunto de celdas donde se guarda la información.

Los CS o circuitos selectores son los encargados de activar la posición de la fila y la columna indicados por el RDM.


MEMORIA EXTENDIDA

Es la que hay por encima de 1024Kb. Propia de los 286 o superiores ya que los inferiores no pueden direccionar más de 1 Mb. El inconveniente de esta memoria es que no se puede utilizar desde el Dos ya que sólo direcciona 1 Mb. Han ido surgiendo técnicas para acceder a esta memoria como RAMDRIVE.SYS que crea un 'disco duro' en memoria RAM.

Se define en el CONFIG.SYS mediante la instalación del driver HYMEM.SYS lo que además nos permite utilizar los 64 k de memoria alta


MEMORIA EXPANDIDA

Muy pronto se comprobó que el Megabyte de memoria inicialmente previsto era claramente insuficiente, por lo que se arbitraron diversos tipos de soluciones. Los ingenieros de software, en cooperación con los de hardware, debieron hacer verdaderos juegos malabares para tratar de suplir la cortedad de miras de los diseñadores del PC [1].

Concretamente hubo dos soluciones que fuero muy utilizadas y populares en su época. La primera, fue resultado de una iniciativa conjunta de Lotus e Intel, que desarrollaron una variedad de la técnica de direccionamiento conocida como conmutación de bancos, a la que llamaron EMS ("Expanded Memory Specification"), que proporcionaba 8 MB de espacio adicional. Más tarde fue aceptada también por Microsoft con alguna pequeña modificación, pasando a denominarse especificación de memoria expandida LIM (Lotus, Intel Microsoft).

Poco más tarde Quadram, Ahston-Tate y el fabricante de tarjetas de memoria AST publicaron otra más flexible denominada EEMS ("Enhanced EMS"); además, la especificación LIM fue perfeccionada para proporcionar 32 MB adicionales mediante una combinación hardware/software. El procedimiento consistía en añadir al ordenador una placa adicional de memoria de conmutación de bancos de hasta 32 MB, que era conducida por un "driver" adecuado, el EMM ("Expanded Memory Manager") cargado por el CONFIG.SYS.

El truco consiste en que en un área en desuso de la memoria superior , se sitúa una zona 64 KB, denominada marco de página, en la que existen 4 secciones de 16 KB (ventanas) que se emplean como punteros a una página más grande en la memoria de conmutación de bancos. Los programas podían utilizar segmentos de datos muy grandes ( E1.3.2), ya que el gestor de memoria EMM se encargaba de traer automáticamente a la "ventana" la zona necesaria en cada momento.

Modo protegido y memoria virtual

La especificación EMS de Lotus/Intel/Microsoft, permitía manejar grandes cantidades de datos (ahora no nos parecen tan grandes), pero no resolvía el problema de grandes cantidades de código, ya que el segmento de código no podía manejarse de esta forma. Esto presentaba problemas no solo para programas grandes, sino para cualquier intento de multiprogramación ( 1.7), cuando varios programas deben coexistir en memoria.

Como siempre, la solución vino de la mano de otro avance tecnológico; en este caso, la aparición del procesador Intel 80286, que en 1982 inició la era del PC AT. Este micro permite un acceso a memoria que recuerda vagamente la especificación EMS, pero de forma nativa, ya que los mecanismos están incluidos en el procesador. Como la política de Intel ha sido mantener compatibilidad con los micros anteriores, el 80286 podía trabajar en modo real, imitando el funcionamiento del 8088 , mientras que la nueva forma se denominó modo protegido.

El modo protegido utiliza los registros de segmento como punteros a unos nuevos registros de dirección de 24 bits denominados tablas de descripción ("Descriptor tables"), que permiten acceder a un máximo de 224 (16 MBytes) de memoria física, de forma que los registros de segmento son selectores que marcan el inicio de una dirección de 24 bits. La memoria que se hacía accesible mediante este sistema se denominó memoria extendida, para distinguirla de la antigua EMS [3]. La posterior introducción del 80386, con registros de 32 bits, permitió direccionar hasta 232 (4 GBytes) de memoria externa.

Los nuevos micros incluyeron otras mejoras que permitían al Sistema Operativo un funcionamiento más cómodo y seguro de las aplicaciones cuando operaba en modo protegido. Los mecanismos pertinentes estaban incluidos en el hardware o al menos este proporcionaba recursos al SO para realizarlos cómodamente, aunque desde luego, para sacar provecho de estas mejoras el Sistema debía estar preparado ex profeso. El DOS no podía utilizarlas, sí en cambio los sistemas más avanzados del momento, como OS/2, Unix o Windows. Básicamente estas mejoras se referían a dos cuestiones:


Memoria virtual

Esta técnica consiste en hacer creer al programa que dispone de más memoria que la físicamente disponible en RAM. Este artificio tiene sentido porque en ese momento (y actualmente), la memoria extendida era mayor que la físicamente disponible en muchos sistemas, además el disco duro era estándar en todos los equipos.

Esta RAM ficticia se conoce como memoria virtual; una simulación conocida de antiguo en el mundo de los mainframes, que fue introducida en la informática personal a partir del 80286; este procesador ya disponía de un controlador hardware para este menester, de forma que su manejo no significaba una gran sobrecarga para el Sistema. Su funcionamiento se basa en que cuando una aplicación necesita más espacio y la memoria física está agotada, el controlador de memoria virtual proporciona espacio auxiliar utilizando un fichero de intercambio ("Swap file") situado en memoria externa (disco duro generalmente H2), donde se almacena la información que no cabe en la RAM.

Nota: Hay ocasiones en que la RAM está demasiado fragmentada y el Sistema no puede asignar suficiente espacio contiguo a una aplicación. Por ejemplo, el caso en que Windows muestra el conocido mensajito: "No hay suficiente memoria... debe cerrar alguna aplicación en curso..." suele deberse a que no hay suficiente "memoria gráfica" contigua. Es decir: memoria RAM asignada a la tarjeta de video.

Además de facilitar la apariencia de más RAM que la físicamente disponible, este mecanismo permite que diversas aplicaciones compartan la misma memoria física, aunque para ello se requieran constantes maniobras de carga y descarga ("swapping") de trozos del fichero de intercambio a memoria, por lo que el rendimiento global del sistema se resiente si la desproporción entre el fichero de intercambio y la RAM es muy notable [4].

Nota: En el caso de los sistemas operativos de Microsoft, la memoria virtual fue introducida de forma más o menos perfeccionada desde la aparición del primer Windows 3.1 en 1.987. En Windows 95, el Sistema comienza a funcionar directamente en modo protegido de 32 bits, proporcionando a cualquier aplicación un espacio de memoria de hasta 4 GB. (siempre que esté disponible el adecuado espacio en disco). En este Sistema, el fichero de intercambio puede crecer a medida de las necesidades hasta ocupar todo el espacio disponible en disco.


Memoria Alta (HMA).

Son las primeras 64 Kb de direcciones de memoria extendida entre 1.024 Kb y 1.088 Kb definidas al instalarse HYMEM.SYS. En esta memoria sólo se puede cargar un programa. Normalmente se suele usar para cargar el núcleo de MS-DOS.

Basado en el método del DOS para direccionar, el DOS construye una dirección de 20 bits mediante dos números de 16 bits cada uno (segmento y desplazamiento).

El segmento hace referencia a un bloque aleatorio de 64 Kb y el offset indica la celda exacta dentro de este bloque de 64 Kb; a esto se le llama direccionamiento segmentado.

Los números se representan en sexagesimal y van separados por dos puntos.

Como con el segmento se puede direccionar hasta 1024 Kb, se puede emplear el offset para conseguir 64 Kb más de memoria, llamada memoria alta y su dirección sería la de FFFF:FFFF.

Esta memoria no se puede emplear en el 8088 ya que el bus de direcciones no puede direccionar más de 20 bits
.