Mapa pamięci - Memory map

W informatyce , wykorzystując mapę pamięci jest strukturą danych (co zwykle tkwi w samej pamięci), który wskazuje, w jaki sposób pamięć jest rozplanowany. Termin „mapa pamięci” może mieć różne znaczenia w różnych kontekstach.

Mapa pamięci BIOS komputera

BIOS dla komputera osobistego IBM i kompatybilnych zapewnia zestaw procedur, które mogą być używane przez system operacyjny lub aplikacje w celu uzyskania układu pamięci. Niektóre z dostępnych procedur to:

Funkcja BIOS: INT 0x15, AX=0xE801:

To wywołanie przerwania BIOS jest używane do uzyskania rozmiaru pamięci dla konfiguracji 64 MB+. Jest obsługiwany przez BIOSy AMI z dnia 23 sierpnia 1994 lub późniejsze. Wywołujący ustawia AX na 0xE801, a następnie wykonuje int 0x15. Jeśli wystąpił jakiś błąd, procedura powraca z CF (Carry Flag) ustawioną na 1. Jeśli nie ma błędu, procedura powraca z CF clear, a stan rejestrów jest opisany w następujący sposób:

Zarejestrować Opis wartości
EAX Rozszerzona pamięć od 1M do 16M, w KB. (Wartość maksymalna: 0x3C00 = 15360 KB).
EBX Liczba bloków 64K powyżej 16M.
ECX Skonfigurowana pamięć od 1M do 16M, w KB.
EDX Liczba skonfigurowanych bloków 64K powyżej 16M.

Funkcja BIOS: INT 0x15, AX=0xE820 - POBIERZ MAPĘ PAMIĘCI SYSTEMU:

Wejście:

Zarejestrować Opis wartości
EAX 0x0000E820
EBX Wartość kontynuacji lub 0x0, aby rozpocząć od początku mapy.
ECX Rozmiar bufora na wynik (20 bajtów).
EDX 0x534D4150 (ASCII dla „SMAP”)
ES:DI segment: przesunięcie lokalizacji bufora dla wyniku.

Struktura bufora SMAP:

Zrównoważyć Rozmiar Opis wartości
0 QWORD (8 bajtów) Adres bazowy obszaru mapy pamięci, do którego odwołuje się EBX.
8 QWORD (8 bajtów) Długość w bajtach.
16 DWORD (4 bajty) Rodzaj zakresu adresów.

Sposób użycia: System operacyjny powinien przydzielić bufor SMAP w pamięci (20-bajtowy bufor). Następnie ustaw rejestry zgodnie z tabelą „Input”. Przy pierwszym wywołaniu EBX powinien być ustawiony na 0. Następnym krokiem jest wywołanie INT 0x15. Jeśli nie ma błędu, wywołanie przerwania powraca z wyczyszczeniem CF i buforem wypełnionym danymi reprezentującymi pierwszy region mapy pamięci. EBX jest aktualizowany przez BIOS, więc kiedy system operacyjny ponownie wywołuje procedurę, w buforze zwracany jest następny region. BIOS ustawia EBX na zero, jeśli wszystko jest zrobione.

Zobacz też

Bibliografia