Upper Memory Area

11-05-2023

Upper Memory Area (UMA), Upper Memory Blocks (UMB), неформально верхняя память — 384 Кб памяти, расположенных между адресами А0000h (640 Кб) и FFFFFh (1024 Кбайт, 1 Мбайт). Особенность архитектуры IBM PC.

Содержание

Зарезервированная область памяти

IBM зарезервировала верхнюю область памяти своего компьютера IBM PC для ПЗУ материнской платы и дополнительных устройств и ОЗУ, а также портов ввода-вывода, адресуемых как память (Memory-Mapped Input/Output). Эта область памяти называется UMA и находится между адресами A0000 (640 Кбайт) и FFFFF (1 Мбайт).

Например, в этой области памяти находятся ОЗУ и ПЗУ EGA-совместимого видеоадаптера и окно отображения расширенной памяти.

Верхняя память условно разделена на три области по 128 Кбайт. Стандартное распределение верхней памяти выглядит таким образом:

  • A0000h…BFFFFh — 128 Кбайт, отведено под видеопамять, чаще всего используется не полностью.
  • C0000h…DFFFFh — 128 Кбайт, загружаются программы BIOS адаптеров (Adapter ROM, Adapter RAM).
  • E0000h…FFFFFh — 128 Кбайт, отведено под использование системного BIOS, но в большинстве случаев используется не полностью (чаще всего заняты последние 64 Кбайт).

Использование свободной верхней памяти

В реальной системе не вся зарезервированная область памяти оказывается занятой. Компьютеры, оснащённые процессором Intel 80386 и выше, способны отображать дополнительную память на свободные участки зарезервированной памяти.

Таким образом, формируются блоки верхней памяти (Upper Memory Block, UMB).

Оставшаяся свободная верхняя память с помощью специального драйвера (например, EMM386.EXE) могла отдаваться для нужд ОС и называлась расширенная память.

MS-DOS, начиная с версии 5.0, поддерживает управление UMB. Для этого в её состав включены драйверы HIMEM.SYS и EMM386.EXE и команды devicehigh и loadhigh.

Чтобы активировать функцию управления UMB, надо включить в файл CONFIG.SYS строки:

device = HIMEM.SYS
device = EMM386.EXE
dos = UMB
devicehigh = ... (этот драйвер будет загружен в UMB)

Резидентные программы также могут загружаться в UMB. Для этого служит команда loadhigh.

Кроме того, любое приложение может самостоятельно перенести себя или часть своих данных в UMB, воспользовавшись функцией DOS 58xx.

Однако следует помнить, что не любое приложение способно корректно работать в UMB.

Также следует помнить, что во время загрузки приложение обычно занимает несколько больше памяти, чем его резидентная часть. MS-DOS как правило выделяет блок максимального размера. В результате UMA оказывается сильно фрагментированной и, несмотря на то, что общий объём свободной UMA больше необходимого, приложение может не поместиться ни в один свободный UMB. Для оптимального заполнения UMA опытный администратор может подобрать правильный порядок загрузки драйверов и резидентных программ, а также воспользоваться расширенным синтаксисом команд devicehigh и loadhigh.

Трудности перевода

Слово англ. Upper обычно переводят на русский как верхний. Но и слово англ. High переводится как верхний. С этим связано множество ошибок перевода на раннем этапе внедрения понятий Upper Memory Area / Upper Memory Block и High Memory Area.

В результате в русскоязычной литературе по прежнему используются оригинальные англоязычные написания — UMB и HMA, а аббревиатура UMA вообще не прижилась.

См. также

Upper Memory Area.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47