# Memoria mapa

Memoria mapa, informatikaren zientzian, datu egitura bat da. Normalean memorian kokatuta dago eta memoriaren kokapena adierazten du. "Memoria mapa" kontzeptuak esanahi desberdinak izan ditzake testuinguruaren arabera.
* Memoria asoziatiboa erabiltzen duen cache antolaketa azkarra eta malgua. Memoria asoziatiboak, memoria hitzaren helbidea eta edukia gordetzen ditu.$^{[azalpengehiagobehardira]}$
* Abiarazte-prozesuan, firmwaretik memoria mapa bat bidaltzen da sistema eragilearen nukleoak memoriaren diseinuaren berri izateko. Memoria osoaren tamainari buruzko informazioa, erreserbatutako eskualdeen informazioa eta arkitekturari buruzko beste xehetasun batzuen informazioa ditu.
* Memoria birtualeko ezarpenetan eta memoria kudeatzeko unitateetan, memoria mapa bat, orri-taula edo hardware erregistroei dagokie. Prozesu jakin baten biltegiratzen dute, memoriaren diseinu birtualaren eta espazio hori memoria fisikoaren helbideekin erlazionatzeko moduaren arteko mapatzea.
* Era natiboko "debugger" programetan, memoria mapa bat, kargatutako artxibo exekutagarri edo/eta liburutegikoen eta memoria eskualdeen arteko mapatzeari dagokio. Memoria mapa hauek, memoria-helbideak ebazteko ( "pointer" funtzioa esaterako) sinbolo errealetara.

## PCaren BIOSaren Memoria mapa

BIOSa IBMaren PCarentzat (Personal Computer) eta bateragarrientzako, errutina multzo bat eskaintzen du, sistema eragileak edo aplikazioek memoriaren diseinua lortzeko erabil dezaketeena. Hurrengo hauek dira eskuragarri dauden errutinetako batzuk:
BIOS: INT 0x15, AX = 0xE801:
BIOSa eteteko dei hau memoriaren tamaina lortzeko erabiltzen da 64 MB baino gehiagoko konfigurazioetan. 1994ko abuztuaren 23tik aurrera BIOS AMIrekin bateragarria da. Deitzen duen pertsonak AX 0xE801 ezartzen du eta 0x15 exekutatzen du. Erroreren bat gertatzen bada, errutina CF (Carry Flag) set 1ekin itzultzen da. Errorerik ez badago, CFa 0 batekin itzultzen da, eta erregistroen egoera honela deskribatzen da:
| ERREGISTROA | Balorearen deskribapena |
| EAX | Memoria handipena 1M eta 16M artean, Kbtan. (Balio maximoa: 0x3C00 = 15360KB). |
| EBX | 16 Mtik gorako 64K-ko blokeen zenbaketa. |
| ECX | Konfiguratutako memoria 1Mtik 16Mra, Kbtan. |
| EDX | 64Ktan konfiguratutako blokeen kontua 16Mren gainetik |
BIOS: INT 0x15, AX = 0xE820 - SISTEMARE MEMORIA MAPA ESKURATU:
Input:
| ERREGISTROA | Balorearen deskribapena |
| EAX | 0x0000E820 |
| EBX | Jarraipen balorea edo 0x0 maparen hasieran hasteko. |
| ECX | Bufferaren tamaina erantzunerako (20 byte). |
| EDX | 0x534D4150 (ASCII 'SMAP'-rentzako) |
| ES: DI | segmentua: buferraren desplazamenduaren kokapena emaitzarako. |
SMAP buffer estruktura:
| Compensar | Tamaina | Balorearen deskribapena |
| 0 | QWORD (8 byte) | EBXak erreferentzia egiten dion memoria maparen eskualdearen oinarrizko helbidea. |
| 8 | QWORD (8 byte) | Luzeera bytetan. |
| 16 | DWORD (4 byte) | Helbide tarte mota. |
Erabilera: sistema eragileak memorian SMAP buffer bat esleitu behar du (20 byteko buffera). Ondoren erregistroak konfiguratu behar dira "Input" taulan ageri den moduan. Lehenengo deian, EBXak 0a esleitu behar du. Hurrengo urratsa INT 0x15 deitzea da. Errorerik ez badago, eten-deia CF ezabatuta itzultzen da eta buffera memoria-maparen lehen eskualdea adierazten duten datuekin betetzen da. BIOSak EBXa eguneratzen du, orduan, OSak berriro errutina deitzen du hurrengo eskualdea bufferera itzultzeko. BIOSek zeroan jartzen du EBX.

## Ikus, gainera

* BIOS

## Kanpo estekak

* Mark Russinovich-ren RAMMap
* Datuak: Q719484