Карта памяти

редактировать
Не путать с файлом с отображением в память.

В информатике, карта памяти представляет собой структуру данных (которые, как правило, находится в самой памяти), что указывает на то, как память выложена. Термин «карта памяти» может иметь разные значения в разных контекстах.

  • Это самая быстрая и гибкая организация кеш-памяти, использующая ассоциативную память. Ассоциативная память хранит как адрес, так и содержание слова памяти.
  • В процессе загрузки карта памяти передается из прошивки, чтобы проинструктировать ядро операционной системы о структуре памяти. Он содержит информацию о размере общей памяти, любых зарезервированных областях, а также может предоставлять другие детали, специфичные для архитектуры.
  • В реализациях виртуальной памяти и единицах управления памятью карта памяти относится к таблицам страниц или аппаратным регистрам, которые хранят отображение между макетом виртуальной памяти определенного процесса и тем, как это пространство соотносится с адресами физической памяти.
  • В собственных программах отладчика карта памяти относится к отображению между загруженными исполняемыми (или) файлами библиотеки и областями памяти. Эти карты памяти используются для преобразования адресов памяти (таких как указатели функций ) в фактические символы.

Карта памяти ПК BIOS

BIOS для персонального компьютера IBM и совместимых устройств предоставляет набор процедур, которые могут использоваться операционной системой или приложениями для получения структуры памяти. Некоторые из доступных процедур:

Функция BIOS: INT 0x15, AX = 0xE801:

Этот вызов прерывания BIOS используется для получения объема памяти для конфигураций 64 МБ +. Поддерживается версиями AMI BIOS от 23 августа 1994 г. или более поздних версий. Вызывающий устанавливает AX в 0xE801, затем выполняет int 0x15. Если произошла какая-то ошибка, процедура возвращается с CF (флаг переноса), установленным в 1. Если ошибок нет, процедура возвращается с CF очищенным, а состояние регистров описывается следующим образом:

регистр Описание значения
EAX Расширенная память от 1 до 16 МБ в КБ. (Максимальное значение: 0x3C00 = 15360 КБ).
EBX Количество блоков размером 64К больше 16М.
ECX Настроенная память от 1 МБ до 16 МБ в КБ.
EDX Количество сконфигурированных блоков размером 64К больше 16М.

Функция BIOS: INT 0x15, AX = 0xE820 - ПОЛУЧИТЬ КАРТУ СИСТЕМНОЙ ПАМЯТИ:

Вход:

регистр Описание значения
EAX 0x0000E820
EBX Значение продолжения или 0x0, чтобы начать с начала карты.
ECX Размер буфера для результата (20 байт).
EDX 0x534D4150 (ASCII для SMAP)
ES: DI сегмент: расположение смещения буфера для результата.

Структура буфера SMAP:

Компенсировать Размер Описание значения
0 QWORD (8 байт) Базовый адрес области карты памяти, на которую ссылается EBX.
8 QWORD (8 байт) Длина в байтах.
16 DWORD (4 байта) Тип диапазона адресов.

Как используется: операционная система должна выделить буфер SMAP в памяти (20-байтовый буфер). Затем установите регистры, как указано в таблице «Входные данные». При первом вызове EBX должен быть установлен в 0. Следующим шагом будет вызов INT 0x15. Если ошибок нет, вызов прерывания возвращается с очисткой CF и заполнением буфера данными, представляющими первую область карты памяти. EBX обновляется BIOS, поэтому, когда ОС снова вызывает подпрограмму, следующая область возвращается в буфере. BIOS устанавливает EBX в ноль, если все сделано.

Смотрите также

использованная литература

  • v
  • т
  • е
Последняя правка сделана 2024-01-02 06:55:37
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте