Capítulo 13
La memoria

 

Índice · Capítulo 12 · Capítulo 14 · Publicaciones · Saulo.Net

13-1 Introducción

En este capítulo se explica uno de los temas más conflictivos entre los usuarios de ms-dos: la memoria del ordenador. Se ha dividido en dos partes claramente diferenciadas: explicación de los diferentes tipos de memoria y análisis de las órdenes de ms-dos relacionadas con la gestión de memoria.

A efectos prácticos encontrará de utilidad las siguientes herramientas:

 

Índice · Arriba · Publicaciones · Saulo.Net

13-2 Memoria ROM y memoria RAM

La primera gran clasificación de la memoria de un ordenador la divide en ROM (Read Only Memory) y RAM (Random Acces Memory).

 

Memoria ROM

Es memoria no volátil de sólo lectura.

En esta memoria se encuentran los programas que toman el control al encender el ordenador, realizan un chequeo del sistema y finalmente buscan un sistema operativo para ejecutarlo.

Un elemento de suma importancia en el funcionamiento de un ordenador reside en la memoria ROM: la BIOS (Basic Input Output System: Sistema básico de entrada y salida). La ROM-BIOS engloba un conjunto de sencillas rutinas para gestionar la pantalla, teclado, discos... Como vemos, el sistema operativo junto con la BIOS es el encargado de desarrollar las operaciones más básicas del ordenador.

 

Memoria RAM

Es memoria volátil de lectura y escritura.

La memoria RAM es el elemento central en el funcionamiento de un ordenador. Internamente, toda la información del ordenador tiene paso obligado por la memoria RAM. Para ejecutar cualquier programa, éste debe copiarse previamente a la memoria.

Por estas razones la memoria que nos interesa es la RAM: a partir de ahora utilizaremos el término memoria para referirnos a la memoria RAM.

El siguiente gráfico representa el funcionamiento general de un ordenador: cualquier dato introducido por teclado se coloca en memoria. El microprocesador toma los datos de la memoria, los procesa y devuelve el resultado al mismo lugar. Posteriormente pueden ser almacenados en el disco o visualizados en pantalla.

 

Índice · Arriba · Publicaciones · Saulo.Net

13-3 Tipos de memoria RAM

Aunque toda la memoria es igual, según su lugar en el mapa de memoria adquiere diversos nombres. Cada programa necesita uno o varios tipos de memoria. Por esta razón debemos aprender a configurar el ordenador de acuerdo a los requerimientos de cada aplicación.

 

Memoria convencional

Comprende la porción entre 0K y 640K. Esta memoria es aprovechada sin problemas por la totalidad de órdenes del sistema y las aplicaciones. Debido a ciertas limitaciones del microprocesador y del propio ms-dos, otras zonas de memoria tienen un acceso mucho más difícil. Por tanto, todos los programas que admitan otro tipo de memoria, deben trasladarse para conseguir la mayor cantidad posible de memoria convencional. La zona entre 0K y 64K se denomina también memoria baja.

 

Memoria superior

Es la zona situada entre los 640K y los 1024K (1Mb). Esta memoria es aprovechada principalmente por el sistema. Como la memoria ROM es lenta, se suelen copiar a esta zona, las rutinas de la ROM-BIOS y así conseguir una velocidad global mucho mayor. También se utiliza para almacenar los caracteres impresos en la pantalla en cada momento.

Sin embargo, los programadores del dos advirtieron que los datos del sistema no ocupan la totalidad de esta memoria. A partir de la versión 5.0 de ms-dos se pueden cargar controladores y programas residentes en los bloques libres de memoria superior.

Controlador de dispositivo.— Programa que comunica el ms-dos con un dispositivo hardware (impresora, ratón, tarjeta de sonido...). Se suele instalar agregando una línea Device al fichero CONFIG.SYS o Devicehigh para instalarlo en memoria superior.

Programa residente (TSR).— Programa que permanece en memoria después de ejecutarse. Para instalarlo en memoria superior se utiliza la orden Lh.

Fichero CONFIG.SYS .— Es un fichero de texto ASCII que contiene una serie de órdenes especiales para configurar el ordenador (Ver Capítulo 18). Este fichero debe encontrarse en el directorio raíz de la unidad de arranque. Al cargarse el MS-DOS primero se ejecuta el CONFIG.SYS y luego el AUTOEXEC.BAT.

 

Memoria alta

Es la memoria comprendida entre 1024K y 1088K. Esta zona de apenas 64K se puede aprovechar para instalar el núcleo del ms-dos y ahorrar memoria convencional (Ver más adelante la orden Dos de CONFIG.SYS).

 

Memoria expandida

Es una técnica software utilizada para acceder a la memoria por encima de 1 Mb. Para emplear memoria expandida se precisa un administrador de memoria expandida. Como las aplicaciones sólo son capaces de acceder a la memoria inferior de 1Mb, el administrador se encarga de copiar, según se necesiten, los datos por encima de 1Mb a un marco de página de 64K situado en memoria superior.

Como solamente se puede trabajar con 64K de información a la vez, es necesario copiar continuamente datos desde la memoria expandida (más de 1Mb) a la memoria superior y viceversa. Otra solución más rápida y eficiente es la llamada memoria extendida.

 

Memoria extendida

Es la memoria por encima de 1Mb. Para poder alcanzar esta región, el microprocesador debe trabajar en un modo llamado modo protegido. Aunque el ms-dos, no es capaz de operar en este modo, la mayoría de las aplicaciones sobre ms-dos emplean diversas técnicas para acceder a memoria extendida.

Es necesario un administrador de memoria extendida como HIMEM.SYS para habilitar esta memoria.

Nota: El usuario debe revisar los requerimientos de sus aplicaciones para comprobar si necesita memoria extendida o expandida.

 

Índice · Arriba · Publicaciones · Saulo.Net

13-4 Configurar los tipos de memoria

Habilitar memoria extendida y alta

Para utilizar la memoria extendida y la alta es necesario introducir la siguiente línea en el fichero CONFIG.SYS:

DEVICE=C:\DOS\HIMEM.SYS

Esta línea debe colocarse delante de aquellas líneas de órdenes que precisen memoria extendida. Al instalar ms-dos, se coloca automáticamente la orden anterior en la primera línea del CONFIG.SYS.

 

Habilitar memoria superior y expandida

El controlador EMM386.EXE puede habilitar la memoria superior, la expandida o ambas. Este controlador precisa situarse en el fichero CONFIG.SYS detrás del controlador HIMEM.SYS.

Las siguientes entradas preparan los bloques de memoria superior para su posterior uso:

DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=UMB

La siguiente entrada toma memoria extendida para simular expandida cuando sea necesario.

DEVICE=C:\DOS\EMM386.EXE

Las siguientes entradas habilitan los bloques de memoria superior y toman memoria extendida para simular expandida cuando sea necesario.

DEVICE=C:\DOS\EMM386.EXE RAM
DOS=UMB

Notas: No prepare memoria expandida a menos que una aplicación se lo indique. La memoria superior es recomendable habilitarla.

 

La orden DOS de CONFIG.SYS

Indica el lugar donde se cargará el núcleo del ms-dos y prepara la memoria superior para cargar controladores y programas residentes.

Aplicaciones:

DOS=HIGH

DOS=UMB

DOS=HIGH,UMB

 

Ejemplos de configuración

¿Cuáles son las órdenes necesarias para un fichero CONFIG.SYS en cada caso?

DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH,UMB

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DOS=HIGH,UMB

 

Índice · Arriba · Publicaciones · Saulo.Net

13-5 Aprovechar la memoria superior

Recordemos los tres requerimientos necesarios para preparar la memoria superior:

  1. Instalar HIMEM.SYS
  2. Instalar EMM386.EXE
  3. Introducir una orden Dos que contenga el parámetro UMB.

 

Instalar un controlador en memoria superior

Los controladores se suelen configurar en el fichero CONFIG.SYS mediante órdenes Device. Sin embargo, Device los instala en memoria convencional. Para instalar un controlador en memoria superior debemos cambiar Device por Devicehigh. Ejemplo:

DEVICEHIGH=C:\DOS\ANSI.SYS

Esta orden del CONFIG.SYS carga en memoria superior el controlador ANSI.SYS situado en el directorio C:\DOS.

 

Instalar un programa residente en memoria superior

Generalmente los programas residentes en memoria se inician desde el fichero AUTOEXEC.BAT. Es habitual, además, especificar la trayectoria completa del programa para evitar confusiones. Por ejemplo:

C:\DOS\DRIVERS\MOUSE.COM

Para cargar el programa anterior en la memoria superior, se utiliza la orden Lh.

LH C:\DOS\DRIVERS\MOUSE.COM

Notas: Algunos controladores y programas residentes no admiten cargarse en memoria superior. Otros se cargan en memoria superior aunque no se utilicen las órdenes estudiadas (por ejemplo, SMARTDRV.EXE). Si se intenta cargar un controlador o programa en memoria superior pero está totalmente ocupada, se cargará de forma automática en memoria convencional.

 

El mensaje "Archivo comprimido alterado"

Es posible que si utiliza las órdenes Devicehigh y Lh llegue a liberar una gran cantidad de memoria convencional. Sin embargo, hay algunos programas que no pueden ejecutarse en memoria baja (de 0K a 64K) y producen el error "Archivo comprimido alterado". En estas ocasiones utilice la orden Loadfix para forzar la ejecución del programa por encima de los primeros 64K de memoria.

Por ejemplo, para ejecutar el programa GAME.EXE introduzca lo siguiente:

A:\>loadfix game.exe

Índice · Arriba · Publicaciones · Saulo.Net

13-6 La orden MEM

Muestra la memoria usada y disponible en el ordenador. Su sintaxis es la siguiente:

MEM [/C | /D | /F | /M programa] [/P]

 
Parámetro Descripción
/C Presenta una lista de aquellos programas cargados actualmente en memoria, indicando la memoria convencional y superior usada por cada uno.
/D Informa acerca de los programas y controladores cargados actualmente en memoria. Proporciona amplia información técnica sobre cada uno.
/F Ofrece una relación detallada de los bloques libres existentes en memoria convencional y superior.
/M programa  Muestra la memoria usada actualmente por un programa.
/P Muestra la información de salida con pausa en cada pantalla. Puede usarse con cualquier modificador anterior.

Utilice los modificadores /D y /P conjuntamente para conocer la cantidad de memoria utilizada por cada elemento instalado. De esta forma puede conocer con detalle la cantidad de memoria utilizada por cada programa y decidir si merece la pena tal gasto. Si desea optimizar su memoria adecuadamente pruebe con diversas configuraciones en los ficheros CONFIG.SYS y AUTOEXEC.BAT y luego, observe el gasto de memoria en cada caso con la orden Mem.

La orden Mem sin parámetros ofrece un listado similar al siguiente:

D:\>mem

Tipo de memoria    Total  =  Usada  +  Libre
----------------  -------   -------   -------
Convencional         640K       28K      612K
Superior             111K       82K       29K
Reservada            384K      384K        0K
Extendida (XMS)    7,057K    6,221K      836K
----------------  -------   -------   -------
Memoria total      8,192K    6,715K    1,477K

Total menor 1 MB     751K      110K      641K

Programa ejecutable más extenso        612K (626,880 bytes)
Bloque memoria superior más extenso     13K (13,184 bytes)
MS-DOS reside en el área de memoria alta.

D:\>

En este ejemplo, observamos la distribución de memoria en un ordenador con 8Mb totales. El apartado "Memoria Superior" hace referencia, en realidad, a los bloques libres de memoria superior. Como sabemos la memoria superior es de 384K, pero en este caso solamente se pueden aprovechar como máximo 111K.

El apartado "Memoria Reservada" aparece en otras versiones de ms-dos como "Adaptador RAM/ROM". Hace referencia a una zona de memoria empleada íntegramente por rutinas del sistema. Aquí se incluye la copia de la ROM-BIOS sobre memoria RAM.

Finalmente, en "Extendida" se indica la restante memoria hasta completar los 8Mb del ordenador en cuestión.

La línea "Total menor 1 MB" es la suma entre "Memoria Convencional" y "Memoria Superior".

Las línea «Programa ejecutable más extenso» muestra la memoria convencional libre. Esta cifra es decisiva para conocer si un programa puede ejecutarse o no. Aunque un ordenador tenga 32Mb totales de memoria, si la convencional está totalmente ocupada, las aplicaciones darán un mensaje de memoria insuficiente.

La última línea ofrece información sobre la memoria alta. Observe que no hay forma de conocer cuánta memoria alta hay ocupada y cuánta libre.

 

Índice · Arriba · Publicaciones · Saulo.Net

13-7 Crear un caché de disco

Un caché de disco es una zona de memoria intermedia entre el ordenador y los discos. Si trabaja con programas de aplicación, observará como ms-dos invierte cierto tiempo en leer o escribir en el disco duro.

Veámoslo más claro con un ejemplo. Un usuario trabaja frecuentemente en una base de datos y precisa consultar y cambiar continuamente unos mismos datos. Si el usuario necesita abrir un fichero, ms-dos lo busca el disco, lo copia en el caché y luego se lo ofrece a la aplicación. Si posteriormente, dicha persona necesita abrir el mismo fichero, ms-dos se ahorrará volver a leerlo en el disco porque ya se encuentra almacenado en memoria.

Lógicamente, el mayor o menor rendimiento de un caché de disco viene definido por la cantidad de memoria destinada. Cuanta más memoria se dedique al caché, mayor número de informaciones del disco se podrán almacenar.

 

SMARTDRV

El programa proporcionado por ms-dos como caché de disco se denomina Smartdrv. Para instalarlo se utiliza la siguiente sintaxis:

SMARTDRV [[unidad[+|-]]...] [TamañoCachéInicial [TamañoCachéWin]]
[/E:TamañoElemento] [/B:TamañoBúfer]
[/C] [/R] [/F] [/N] [/L] [/Q] [/S]

Después de la instalación podemos usar desde el símbolo del sistema la siguiente sintaxis:

SMARTDRV [[unidad[+|-]]...]] [/C] [/R] [/S]

 
Parámetro Explicación
unidad Es la letra de unidad la cual estamos definiendo. Después de la unidad puede estar el signo más (+), el signo menos (-) o ninguno de los dos. Incluyendo el signo más, se habilita el caché de lectura y escritura. Sin colocar ningún signo detrás de la unidad, se habilita el caché de lectura exclusivamente y colocando un signo menos se elimina el caché para la unidad. Si no especifica ninguna unidad, Smartdrv revisará sus unidades de disco y decidirá por usted.
TamCachéIni Especifica el tamaño del caché en kilobytes. Si no utiliza este parámetro, Smartdrv lo establecerá automáticamente según nuestro equipo. Si su memoria es igual o superior a 4Mb seguramente le interesará aumentar el caché. Si una aplicación precisa memoria y el ordenador no dispone de ella, Smartdrv reduce el caché y cede memoria a la aplicación. Por consiguiente, podemos crear un gran caché con la seguridad que la memoria especificada queda a disposición de las aplicaciones.
TamCachéWin Especifica el tamaño mínimo del caché al que las aplicaciones podrán reducirlo. Al utilizar Windows 3.1 ó 3.11, el caché se reduce automáticamente al mínimo.
/E:TamElem Indica la cantidad de bytes que Smartdrv puede mover a la vez. Los valores válidos son 1024, 2048, 4096 y 8192. El valor por defecto es 8192.
/B:TamBúfer Especifica el tamaño en bytes del búfer. El búfer es información adicional leída en cada acceso al disco. Si se pide leer 16384 bytes del disco duro y el búfer es de 8192 bytes, ms-dos leerá la información pedida y además los 8192 bytes situados detrás. El tamaño por defecto del búfer es 16384 bytes.
/C Escribe toda la información del caché en el disco duro.
/R Borra el contenido del caché existente y reinicia Smartdrv.
/F Escribe los datos del caché antes de mostrar el símbolo del sistema. Este modificador sólo es válido para las versiones de Smartdrv suministradas con ms-dos 6.20 y 6.22. Este es el valor por defecto en estas versiones.
/N Escribe los datos del caché durante la inactividad del sistema. Al regreso del símbolo del sistema, no todos los datos del caché han sido escritos. Este modificador sólo es válido para las versiones de ms-dos 6.20 y 6.22. Sin embargo, éste es el valor por defecto en la versión 6.0 de ms-dos.
/L Carga Smartdrv en memoria convencional. Si no se especifica se carga en memoria superior.
/V Muestra mensajes al iniciarse Smartdrv.
/Q No muestra mensajes al iniciarse Smartdrv. Es la opción por defecto.
/S Presenta el estado de Smartdrv.

Tenga precaución si utiliza el caché de escritura con alguna unidad. Antes de apagar el ordenador debe salir siempre al símbolo del sistema. Ahora bien, la forma de comportarse de Smartdrv depende de la versión de ms-dos instalada:

Lo normal es instalar Smartdrv en el fichero AUTOEXEC.BAT. Para calcular el tamaño de caché ideal deberá realizar diversas pruebas en su sistema. En primer lugar, ejecute Smartdrv sin especificar el tamaño del caché y luego escriba SMARTDRV /S para averiguar cuáles son las cantidades por defecto sugeridas para su sistema.

Al especificar el parámetro /S Smartdrv presenta los aciertos y los fallos de su caché. Se produce un acierto cuando se ahorra un acceso al disco y un fallo cuando la información no se encuentra en el caché y debe buscarse en el disco. Probando diversas configuraciones y utilizando el parámetro /S podrá calcular la configuración óptima para su ordenador.

Ejemplos:

C:\DOS\SMARTDRV.EXE 2048 1024

C:\DOS\SMARTDRV.EXE C D- 5120 2048

 

Índice · Arriba · Publicaciones · Saulo.Net

13-8 Crear un disco RAM

Un disco RAM es una unidad "de disco" creada en memoria.

En realidad, un disco RAM responde a necesidades muy concretas: ordenadores con mucha memoria, programadores, etc. Como generalmente la memoria RAM es un bien escaso -y caro- puede resultar más interesante crear un gran caché de disco antes de un disco RAM.

 

RAMDRIVE.SYS

Para crear un disco RAM se utiliza el controlador RAMDRIVE.SYS. Debe instalarse en el CONFIG.SYS mediante una orden Device. Su sintaxis es:

DEVICE=RAMDRIVE.SYS
[TamañoDisco [TamañoSector [NúmEntradas]]] [/E|/A]

 
Parámetro Explicación
TamañoDisco Tamaño en Kb del disco RAM. El tamaño por defecto es de 64K y el máximo es 32767K (32Mb) si su ordenador tiene más de 32Mb de memoria.
TamañoSector Tamaño del sector en bytes. Se admiten los valores de 128, 256 y 512 bytes. El tamaño por defecto es 512 bytes.
NúmEntradas Número de entradas admitidas en el directorio raíz del disco RAM. Los valores válidos son de 2 hasta 1024.
/E La unidad RAM se crea en memoria extendida.
/A La unidad RAM se crea en memoria expandida.

Ejemplos:

Para crear un disco RAM de 1Mb en memoria extendida, introduzca la siguiente línea en el fichero CONFIG.SYS.

DEVICE=C:\DOS\RAMDRIVE.SYS 1024 /E

Para crear un disco RAM de 2Mb en memoria expandida y un número máximo de entradas en el directorio raíz de 20, introduzca la siguiente línea en el fichero CONFIG.SYS

DEVICE=C:\DOS\RAMDRIVE.SYS 2048 512 20 /A

 

Índice · Arriba · Publicaciones · Saulo.Net

13-9 El programa MEMMAKER

Con los conocimientos adquiridos en este capítulo, usted ya es capaz de configurar la memoria de su ordenador de una forma adecuada. Sin embargo, puede optar por una configuración automática.

En esencia, el programa Memmaker modifica los ficheros CONFIG.SYS y AUTOEXEC.BAT con objeto de liberar la mayor cantidad de memoria convencional. Para ello habilita la memoria superior y desplaza aquellos programas que lo permitan desde la memoria convencional a la superior.

Para ejecutar el programa Memmaker, reinicie su ordenador y luego escriba MEMMAKER a continuación del símbolo del sistema.

Este programa posee una completa ayuda en pantalla que le guiará en cada momento. Si desea más información pulse la tecla F1. Para completar la optimización de memoria, Memmaker deberá reiniciar su ordenador un par de veces. Finalmente, el programa presentará una pantalla indicando los cambios efectuados en memoria.

Si por alguna razón, su ordenador se bloquea al arrancar el sistema operativo, debe conocer las siguientes teclas:

Para restaurar los cambios efectuados por Memmaker, escriba lo siguiente a continuación del símbolo del sistema (si pulsa F8 al arrancar el ordenador, la vía de acceso no se define y debe cambiar antes al directorio C:\DOS):

C:\>cd dos

C:\DOS>memmaker /undo

 

Índice · Arriba · Capítulo 14 · Publicaciones · Saulo.Net