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