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.
- Jest to najszybsza i najbardziej elastyczna organizacja pamięci podręcznej wykorzystująca pamięć asocjacyjną . Pamięć asocjacyjna przechowuje zarówno adres, jak i zawartość słowa pamięci.
- W procesie rozruchu mapa pamięci jest przekazywana z oprogramowania układowego w celu poinstruowania jądra systemu operacyjnego o układzie pamięci. Zawiera informacje dotyczące wielkości całkowitej pamięci, wszelkich zarezerwowanych regionów i może również zawierać inne szczegóły charakterystyczne dla architektury.
- W implementacjach pamięci wirtualnej i jednostkach zarządzania pamięcią mapa pamięci odnosi się do tabel stron lub rejestrów sprzętowych , które przechowują mapowanie między układem pamięci wirtualnej określonego procesu a tym, jak ta przestrzeń odnosi się do adresów pamięci fizycznej.
- W natywnych programach z debugerem mapa pamięci odnosi się do mapowania między załadowanymi plikami wykonywalnymi (lub) bibliotekami a regionami pamięci. Te mapy pamięci są używane do rozwiązywania adresów pamięci (takich jak wskaźniki funkcji ) na rzeczywiste symbole.
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