Paměťová mapa - Memory map
Ve výpočetní technice je mapa paměti strukturou dat (která obvykle sídlí v paměti samotné), která ukazuje, jak je paměť rozložena. Pojem „paměťová mapa“ může mít v různých kontextech různé významy.
- Je to nejrychlejší a nejflexibilnější organizace mezipaměti, která používá asociativní paměť . Asociativní paměť ukládá adresu i obsah paměťového slova.
- Při zavádění je z firmwaru předána mapa paměti , aby bylo možné poučit jádro operačního systému o rozložení paměti. Obsahuje informace týkající se velikosti celkové paměti, všech vyhrazených oblastí a může také poskytnout další podrobnosti specifické pro architekturu.
- V implementacích virtuální paměti a jednotkách správy paměti mapa paměti odkazuje na tabulky stránek nebo hardwarové registry , které ukládají mapování mezi rozvržením virtuální paměti určitého procesu a tím, jak se tento prostor vztahuje k adresám fyzické paměti.
- V nativních programech ladicího programu mapa paměti odkazuje na mapování mezi načtenými spustitelnými (nebo) soubory knihovny a oblastmi paměti. Tyto paměťové mapy se používají k překladu adres paměti (například ukazatelů funkcí ) na skutečné symboly.
Mapa paměti PC BIOS
BIOS pro osobní počítač IBM a kompatibilní poskytuje sadu rutin, které může operační systém nebo aplikace použít k získání rozložení paměti. Některé z dostupných rutin jsou:
Funkce systému BIOS: INT 0x15, AX = 0xE801:
Toto volání přerušení systému BIOS se používá k získání velikosti paměti pro konfigurace 64 MB+. Je podporován BIOSy AMI ze dne 23. srpna 1994 nebo novější. Volající nastaví AX na 0xE801 a poté provede int 0x15. Pokud došlo k nějaké chybě, rutina se vrátí s CF (Carry Flag) nastaveným na 1. Pokud žádná chyba, rutina se vrátí s CF clear a stav registrů je popsán následovně:
Registrovat | Popis hodnoty |
---|---|
EAX | Rozšířená paměť mezi 1M a 16M, v kB. (Maximální hodnota: 0x3C00 = 15360 kB). |
EBX | Počet 64 tisíc bloků nad 16 milionů. |
ECX | Konfigurovaná paměť 1 MB až 16 mil. KB. |
EDX | Počet nakonfigurovaných 64 kB bloků nad 16 milionů. |
Funkce systému BIOS: INT 0x15, AX = 0xE820 - ZÍSKEJTE MEMORY MEMORY MAP:
Vstup:
Registrovat | Popis hodnoty |
---|---|
EAX | 0x0000E820 |
EBX | Hodnota pokračování nebo 0x0 pro začátek na začátku mapy. |
ECX | Velikost vyrovnávací paměti pro výsledek (20 bajtů). |
EDX | 0x534D4150 (ASCII pro 'SMAP') |
ES: DI | segment: offsetové umístění vyrovnávací paměti pro výsledek. |
Struktura vyrovnávací paměti SMAP:
Ofset | Velikost | Popis hodnoty |
---|---|---|
0 | QWORD (8 bajtů) | Základní adresa oblasti paměťové mapy podle EBX. |
8 | QWORD (8 bajtů) | Délka v bajtech. |
16 | DWORD (4 bajty) | Typ rozsahu adres. |
Jak se používá: Operační systém přidělí vyrovnávací paměť SMAP v paměti (vyrovnávací paměť 20 bajtů). Poté nastavte registry podle tabulky "Input". Při prvním volání by měl být EBX nastaven na 0. Dalším krokem je volání INT 0x15. Pokud nedojde k chybě, volání přerušení se vrátí s vymazáním CF a vyrovnávací pamětí naplněnou daty představujícími první oblast mapy paměti. Systém EBX je aktualizován systémem BIOS, takže když operační systém znovu zavolá rutinu, do vyrovnávací paměti se vrátí další oblast. BIOS nastaví EBX na nulu, pokud je vše hotovo.
Viz také
Reference