En informática , un mapa de memoria es una estructura de datos (que normalmente reside en la propia memoria) que indica cómo está distribuida la memoria . El término "mapa de memoria" tiene distintos significados en distintos contextos.
La BIOS de IBM Personal Computer y compatibles ofrece un conjunto de rutinas que pueden ser utilizadas por el sistema operativo o las aplicaciones para obtener la distribución de la memoria. Algunas de las rutinas disponibles son:
Función BIOS: INT 0x15, AX=0xE801: [1]
Esta llamada de interrupción del BIOS se utiliza para obtener el tamaño de la memoria para configuraciones de 64 MB o más. Es compatible con los BIOS AMI con fecha del 23 de agosto de 1994 o posterior. El llamador establece AX en 0xE801 y luego ejecuta int 0x15. Si se ha producido algún error, la rutina retorna con CF (Carry Flag) establecido en 1. Si no hay ningún error, la rutina retorna con CF clear y el estado de los registros se describe de la siguiente manera:
Registro | Descripción del valor |
---|---|
EAX | Memoria extendida entre 1M y 16M, en KB. (Valor máximo: 0x3C00 = 15360KB). |
EBX | Recuento de bloques de 64K por encima de 16M. |
Extracción electrostática | Memoria configurada de 1M a 16M, en KB. |
EDX | Recuento de bloques de 64K configurados por encima de 16M. |
Función BIOS: INT 0x15, AX=0xE820 - OBTENER MAPA DE MEMORIA DEL SISTEMA: [2]
Aporte:
Registro | Descripción del valor |
---|---|
EAX | 0x0000E820 |
EBX | Valor de continuación o 0x0 para comenzar desde el principio del mapa. |
Extracción electrostática | Tamaño del buffer para el resultado (20 bytes). |
EDX | 0x534D4150 (ASCII para 'SMAP') |
ES:DI | segmento: ubicación de desplazamiento del búfer para el resultado. |
Estructura del buffer SMAP:
Compensar | Tamaño | Descripción del valor |
---|---|---|
0 | PALABRAQ (8 bytes) | Dirección base de la región del mapa de memoria a la que hace referencia EBX. |
8 | PALABRAQ (8 bytes) | Longitud en bytes. |
16 | DWORD (4 bytes) | Tipo de rango de direcciones. |
Cómo se utiliza: El sistema operativo debe asignar un buffer SMAP en la memoria (buffer de 20 bytes). Luego, configure los registros como se especifica en la tabla "Entrada". En la primera llamada, EBX debe configurarse en 0. El siguiente paso es llamar a INT 0x15. Si no hay ningún error, la llamada de interrupción regresa con CF borrado y el buffer lleno con datos que representan la primera región del mapa de memoria. EBX es actualizado por BIOS para que cuando el SO vuelva a llamar a la rutina, se devuelva la siguiente región en el buffer. BIOS configura EBX en cero si todo está listo.