5 - La memoria

[editar]
Curso gratis creado por Bernardo Piña Veltman. Extraido de: http://www.publispain.com/supertutoriales
30 de Noviembre de 1999
Direccionamiento de la memoria

En los microordenadores las celdas de memoria tienen el tamaño de 1 byte (8 bits). La cantidad de memoria que puede utilizar un ordenador viene dada por el tamaño del bus de direcciones del microprocesador. En los microordenadores con bus de direcciones de 20 bits sólo se puede direccionar un máximo de 1 MB. (Cada bit puede valer o ó 1, el máximo de direcciones accesibles es 2 elevado a 20 = 1.048.576 bytes = 1.024 Kb = 1 MB.)

El tamaño directamente direccionable de memoria en MS-DOS es 1 MB, debido al tamaño del bus de direcciones de los primeros ordenadores de 20 bits. Se decidió al construir los ordenadores PC, que los primeros 640 Kb (memoria convencional) fueran para el Sistema Operativo y los restantes 384 Kb (memoria superior) se reservaron a la ROM y el hardware. Aunque los posteriores ordenadores pueden direccionar bastante más de 1 Mb, el MS-DOS no los direcciona directamente.

División de la memoria ROM y RAM

- R.O.M. (Read Only Memory).- No volátil y de sólo lectura. Chip con conexiones cortadas o hechas fijas de fábrica. Al pasar la corriente por el mismo sitio tenemos la misma palabra. La información que almacena es vital para la puesta en funcionamiento del sistema y sus funciones son: testear la RAM, avisar sonoramente al usuario ante posibles fallos, iniciar la carga del sistema operativo, configuración de la CMOS, ... . Esta memoria no se puede borrar ni manipular, aunque existen "versiones" de esta memoria que si lo permiten (memoria PROM - programable; memoria EPROM - borrable y reprogramable y memoria EEPROM - borrable y programable).

- R.A.M. (Random Access Memory).- Volátil y de escritura y lectura. De acceso aleatorio. Cuando se apaga el ordenador desaparece. Memoria de trabajo. Más rápida que la ROM. Hay de dos tipos: la estática (que retiene los datos mientras se le suministra corriente) o dinámica (que va perdiendo los datos lentamente y es necesario refrescarlos).

Administradores de memoria existentes

MS-DOS incluye dos administradores de memoria:

- HYMEM: proporciona acceso a la memoria extendida. El programa de instalación del MS-DOS instalará automaticamente este controlador si se dispone de un equipo 286 o superior.

- EMM386: proporciona acceso al área de memoria superior y permite usar memoria extendida para simular memoria expandida. La manera más fácil de instalar este controlador es mediante la ejecución del programa de optimización de la memoria, llamado MemMaker.

El MS-DOS no incluye un administrador de memoria expandida debido a que la tarjeta de memoria expandida requiere de su propio administrador de memoria.

Memoria en MS-DOS

El DOS sólo es capaz de manejar un bus de direcciones de 20 bits por lo que no puede direccionar más de 1 Mb de memoria.

La memoria físicamente

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 Convencional

Son los primeros 640 K y se estableció su uso para la ejecución de los programas del Dos. Es la memoria más importante y es conveniente tener la mayor cantidad posible de esta memoria convencional.

De los 640 Kb no todos están libres, el sistema ocupa algunos:

- 2 kb están reservados por el sistema, que coloca el vector de interrupciones.

- 44 kb están ocupados por el núcleo del DOS.

- Las órdenes del CONFIG.SYS.

- Controladores de dispositivos.

- 3 kb los ocupa el COMMAND.COM.

- Programas residentes del usuario.

Todo lo que quede libre es memoria libre para el usuario.

Memoria Superior

Son los 384 K comprendidos entre los 640k y los 1024 K y se estableció su uso para cargar los programas de sistema, rutinas de inicialización y control, memoria de vídeo, la Rom-bios, etc. Esta memoria se divide en 6 segmentos de 64 k algunos de los cuales, al no estar utilizados se convirtieron en los UMB. En los segmentos A y B se carga la Memoria de Vídeo, y en el último (F) se carga la Rom-bios quedando libres los segmentos C, D,E.

Esta memoria también es conocida con el nombre de memoria reservada.

U.M.B. (Upper Memory Blocks)

A partir de la versión 5.0 es posible cargar en los segmentos centrales de la memoria superior (C,D,E) y se empieza a cargar los controladores de dispositivos (p.e. ratón) y programas residentes del Dos, liberando así memoria convencional. Sólo a partir de los 386 y disponiendo de 1 Mb de RAM.

Cuando son ocupados estos bloques se conocen como bloques de memoria superior.

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 Himem.sys lo que además nos permite utilizar los 64 k de memoria alta de la que hablaremos después.

Memoria Expandida (E.M.S.)

Fue el truco más importante para resolver el problema de memoria de MS-DOS. Mediante esta el MS-DOS consigue utilizar hasta 32 Mb en cualquier tipo de PC. Consiste en instalar chips de Ram en el ordenador y estos se configuran como memoria expandida mediante unos interruptores en la placa madre o modificando el setup.

La memoria que se configura como expandida deja de tener una posición en el mapa de direcciones. La utilización de esta memoria se realiza mediante un sistema llamado 'Mapeo'.

El Mapeo consiste en coger una página de 64 K contiguos de los segmentos C,D o E de la memoria superior, lo que se denomina 'Marco de Página', y se divide en 4 trozos de 16 K llamados 'páginas'. Se intercambia el Marco de página por 4 páginas lógicas de la memoria expandida. A esta acción se la denomina ' Mapeo'.

Los inconvenientes de este método son su velocidad al tener que mapear páginas, la mayor complicación para el programador al no poder utilizar datos contiguos en más de 64k o mejor de 16 k debido al intecambio. Normalmente son programas largos los que utilizan la expandida.

La ventaja es que es un método totalmente independiente de la capacidad del ordenador.

Memoria Alta (H.M.A.)

Son las primeras 64 Kb de direcciones de memoria extendida entre 1.024 Kb y 1.088 Kb definidas al instalarse Himem.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§ 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 hexadecimal 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.

Memoria extendida (XMS)

Memoria por encima de 1024 Kb y fuera del rango de direcciones del DOS.

Salió al mercado en 1988 y fue deesarrollada por Lotus, Intel, Microsoft y AST.

. Es necesaria la presencia de un administrador de memoria extendida, como HYMEM.SYS

Programas como MS-WINDOWS requieren memoria extendida.

Otros tipos de Memoria

Memoria Shadow.

Es una técnica para optimizar la velocidad y consiste en traspasar las rutinas Rom-Bios que están en la Rom a la memoria Ram de forma que el sistema gana en velocidad. El EMM386 puede desactivar esta memoria en casos muy especiales.

Memoria Caché.

No es una nueva memoria con dirección física propia, sino que es la convencional, extendida o expandida que será utilizada por los programas caché. Existen dos tipos de memoria caché:

1 - La de Disco: utiliza memoria Ram para almacenar aquellos sectores que se utilizan con más frecuencia y no tener que ir a leerlos físicamente. Se crea con los Buffers metiendo la información en memoria convencional. La orden Smartdrv crea también caché de disco y permite hacerlo con memoria convencional, extendida o expandida.

2 - La de Memoria: son memorias ultrarrápidas que permiten que se vayan almacenando los datos más utilizados.

CMOS-RAM

En los 286 o superiores existe un programa de configuración SETUP en los que el usuario puede configurar las características generales del ordenador. Fecha y hora, n§ y tipo de unidades de disquetes y disco duro, ram instalada, ... . Esta información se almacena en la llamada Cmos-Ram que sólo son 64 bytes almacenados en un chip motorola. La CMOS puede ser manipulada para la optimización del sistema.

Carga del MS-DOS en memoria alta

A partir de la versión 5.0 es posible cargar en memoria alta el núcleo del sistema operativo.

Es necesario un ordenador 286 o superior.

Hay que realizar dos operaciones: cargar HYMEM.SYS e indicar que el núcleo se cargará en memoria superior con la orden DOS=HIGH.

Además del núcleo también los buffers se cargan en memoria alta (caben hasta 45 buffers en los 20 Kb que quedan en memoria alta tras cargar el núcleo de 44 Kb)

Convertir memoria extendida en expandida

En los 386 ya es posible cargar EMS mediante XMS, mediante un controlador llamado EMM386.EXE que tiene dos funciones:

- Convertir memoria extendida en expandida.

- Gestionar los bloques de memoria superior.

Hay dos métodos de conversión:

- Estático: que toma memoria extendida como expandida hasta que se apaga el ordenador. En la versión 5.0 de MS-DOS sólo se permite este método.

- Dinámico: Crea una especie de memoria dinámica sin configurar que se empleará como memoria extendida o expandida según las necesidades.

Si un programa puede emplear tanto memoria extendida como expandida es conveniente que emplee memoria extendida.

Cargar programas en memoria superior

DOS permite cargar controladores de dispositivos y programas residentes en bloques de memoria superior. Para crear bloques se necesita un 386 como mínimo y 384 Kb de memoria extendida y seguir los pasos siguientes:

- Instalar HYMEM.SYS.

- Instalar EMM386.EXE con los parámetros NOEMS o RAM, que permite crear bloques de memoria superior.

- Activar DOS=UMB, para indicarle al sistema que puede emplear memoria superior.

- Cargar controladores de dispositivos con DEVICEHIGH.

- Cargar programas residentes con LOADHIGH.

Incrementación de la memoria disponible

Pueden surgir problemas de ejecución de programas si la memoria disponible es muy justa o insuficiente, por lo que conviene optimizar al máximo la gestión de la memoria.

Para ver el estado de la memoria de un ordenador basta con ejecutar la orden mem, que presenta un resumen de la configuración de memoria de un sistema, indicando la cantidad de los tipos de memoria disponible y la cantidad ocupada.

Aumento de la memoria convencional

La mayoría de programas requieren memoria convencional para poder ejecutarse. Si un programa no puede ejecutarse y el sistema muestra un mensaje advirtiendo de la falta de memoria, posiblemente el problema radique en que no haya suficiente memoria convencional.

Existen varias maneras de aumentar la memoria convencional:

- Ejecutar MS-DOS en el área de memoria alta si el PC tiene memoria extendida.

- Simplificar los archivos CONFIG.SYS Y AUTOEXEC.BAT para que no coloquen programas residentes en memoria que sean innecesarios.

- Si el equipo del que se dispone es un 386 o superior se podrá ejecutar el programa MEMMAKER que transfiere controladores de dispositivos y otros programas residentes en memoria desde la memoria convencional al área de memoria superior.

- Ejecutar el MS-DOS en el área de memoria alta.

Aumento de la memoria extendida

Si no está activada la memoria extendida, habrá que cargar los controladores de esta memoria en el archivo CONFIG.SYS, como controlador válida suele emplearse el administrador de memoria extendida HIMEM.SYS.

Si la memoria extendida está activada pero es empleada por completo:

- Reducir la memoria extendida asignada a cada programa que emplee esta memoria, la cantidad de memoria se indica en los archivos CONFIG.SYS o AUTOEXEC.BAT.

- Si el CONFIG.SYS contiene una línea de comandos para el controlador EMM386 que no incluya el modificador de noems, colocarle el modificador min=0, esto provocará que al arrancar el sistema no se reserve memoria extendida para ser utilizada como memoria expandida simulada (aunque si un programa necesitase de esta memoria, EMM386 podría proporcionar memoria expandida a aquellas aplicaciones que lo solicitasen).

- Si se está utilizando RAMDrive (que crea una unidad RAM con cierta cantidad de memoria y la trata como espacio en disco), conviene cambiar a SMARTDrive (que instala un caché de disco que reduce el número de operaciones de lectura y escritura a base de introducir información en la memoria RAM). Para agregar SMARTDrive basta con agregar el comando smartdrv al final del archivo AUTOEXEC.BAT.

- Si MS-WINDOWS no se inicia debido a que no hay suficiente memoria extendida disponible, hay que desactivar la línea de comandos para EMM386 y dos=high en el archivo CONFIG.SYS.

Aumento de la memoria expandida

Algunos programas requieren memoria expandida adicional para poder ser ejecutados. Si surgen problemas de este tipo, he aquí posibles soluciones:

- Asegurarse que esta memoria esté activa, con el controlador EMM386 en el CONFIG.SYS.

- Si se está empleando EMM386 con el modificador noems, no habrá memoria expandida disponible, para evitar esto bastaría con cambiar este modificador por el de ram en el CONFIG.SYS.

- Si CONFIG.SYS o AUTOEXEC.BAT inician programas que emplean memoria expandida, reducir la cantidad de memoria expandida asignada a cada programa. Para hacer esto es necesario consultar la documentación que acompaña a cada programa.
[editar]

8 opiniones

perro

todo te pasa ati por
te amoo

moni odia a juan por pirujo
yybhbhnjkhbh

wles akk
Seguridad.

El contenido es muy interesante. No puedo evaluarlo porque no lo he adquirido, pero conforme al curriculo proyecta ser muy eficiente.
Mirad esto.

He encontrado este otro manual que complementa al de esta web:

http://www.2nibbles.eu/2008/11/01/curiosidades-de-ms-dos/.
1 2 | siguiente >

Cursos gratis relacionados con 'Notas sobre MS-Dos, Microsoft - Disk Operating System'

Autor y licencia de 'Notas sobre MS-Dos, Microsoft - Disk Operating System'


Curso gratis de Bernardo Piña Veltman. Extraido de: http://www.publispain.com/supertutoriales CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.