Карта памяти
В информатике карта памяти — это структура данных (которая обычно находится в самой памяти), которая указывает, как память распределяется . Термин «карта памяти» имеет разные значения в разных контекстах.
- Это самая быстрая и гибкая организация кэша , использующая ассоциативную память . Ассоциативная память хранит как адрес, так и содержимое слова памяти. [ нужны дальнейшие объяснения ]
- В процессе загрузки некоторых компьютеров карта памяти может передаваться из прошивки, чтобы дать операционной системы ядру указание о расположении памяти. Он содержит информацию об объеме общей памяти, любых зарезервированных областях, а также может предоставлять другие сведения, специфичные для архитектуры.
- В виртуальной памяти реализациях и модулях управления памятью карта памяти относится к таблицам страниц или аппаратным регистрам , которые хранят сопоставление между структурой виртуальной памяти определенного процесса и тем, как это пространство связано с адресами физической памяти.
- В собственных программах- отладчиках карта памяти относится к сопоставлению между загруженными исполняемыми файлами (или) библиотеками и областями памяти. Эти карты памяти используются для преобразования адресов памяти (таких как указатели функций ) в реальные символы.
Карта памяти BIOS ПК
[ редактировать ]BIOS для персонального компьютера IBM и совместимых устройств предоставляет набор процедур, которые операционная система или приложения могут использовать для получения структуры памяти. Некоторые из доступных процедур:
Функция BIOS: INT 0x15, AX=0xE801: [1]
Этот вызов прерывания BIOS используется для получения размера памяти для конфигураций более 64 МБ. Он поддерживается версиями BIOS AMI , выпущенными 23 августа 1994 г. или позже. Вызывающая сторона устанавливает AX в 0xE801, а затем выполняет int 0x15. Если произошла какая-то ошибка, процедура возвращается с CF (флагом переноса), установленным в 1. Если ошибок нет, процедура возвращается с очищенным CF, а состояние регистров описывается следующим образом:
Зарегистрироваться | Описание значения |
---|---|
ЕАХ | Расширенная память от 1 МБ до 16 МБ в КБ. (Максимальное значение: 0x3C00 = 15360 КБ). |
ЕВХ | Количество блоков размером 64 КБ выше 16 М. |
ЭКХ | Настроенная память от 1М до 16М, в КБ. |
ЭДКС | Количество настроенных блоков размером 64 КБ превышает 16 МБ. |
Функция BIOS: INT 0x15, AX=0xE820 — ПОЛУЧИТЬ КАРТУ СИСТЕМНОЙ ПАМЯТИ: [2]
Вход:
Зарегистрироваться | Описание значения |
---|---|
ЕАХ | 0x0000E820 |
ЕВХ | Значение продолжения или 0x0, чтобы начать с начала карты. |
ЭКХ | Размер буфера для результата (20 байт). |
ЭДКС | 0x534D4150 (ASCII для SMAP) |
ES:ТУ | сегмент: смещение буфера для результата. |
Структура буфера SMAP:
Компенсировать | Размер | Описание значения |
---|---|---|
0 | QWORD (8 байт) | Базовый адрес области карты памяти, на которую ссылается EBX. |
8 | QWORD (8 байт) | Длина в байтах. |
16 | DWORD (4 байта) | Тип диапазона адресов. |
Как используется: Операционная система должна выделить в памяти буфер SMAP (20-байтовый буфер). Затем установите регистры, как указано в таблице «Вход». При первом вызове EBX должен быть установлен в 0. Следующим шагом является вызов INT 0x15. Если ошибок нет, вызов прерывания возвращается с очисткой CF и заполнением буфера данными, представляющими первую область карты памяти. EBX обновляется BIOS, поэтому, когда ОС снова вызывает процедуру, в буфер возвращается следующий регион. BIOS устанавливает EBX в ноль, если все сделано.