Upper Memory Area

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 14 марта 2013 года; проверки требуют22 правки.
Перейти к навигацииПерейти к поиску
Иное название этого понятия — «UMA»; см. такжедругие значения.
Области памяти IBM PC

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

Содержание

Описание

[править |править код]

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

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

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

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

Использование

[править |править код]

В реальной системе не вся зарезервированная область памяти (UMA) оказывается распределена. Компьютеры с процессором80386 и выше способны отображатьдополнительную память на свободные участки UMA. Таким образом формируются блоки верхней памяти (Upper Memory Block, UMB), которые могут отдаваться под контроль ОС и распределяться между приложениями.

MS-DOS 5.0 и выше поддерживает управление UMB. Для этого в её состав входят драйверыHIMEM.SYS и EMM386.EXE (с помощью которых врежиме виртуального 8086 на UMA отображается дополнительная память) и командыdos=umb,devicehigh иloadhigh. Чтобы отобразить дополнительную память на UMA и активировать функции управления UMB, надо добавить в файлCONFIG.SYS следующие строки:

device = HIMEM.SYSdevice = EMM386.EXE NOEMSdos = UMBdevicehigh = … (этот драйвер будет загружен в UMB)

Существовали также драйверы для отображения в UMBтеневого ОЗУ[англ.] вреальном режиме процессора используя функциичипсета[1][2].

Резидентные программы могут загружаться в UMB с помощьюloadhigh. Однако не все приложения корректно работают, будучи загруженными в UMB.

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

Поскольку во время загрузки приложение может занимать больше памяти, чем его резидентная часть, в DOS, как правило, выделяется блок максимального размера.[3] В результате UMA оказывается сильно фрагментированной и, даже если суммарный объём свободной памяти в блоках будет больше необходимого, приложение может не поместиться ни в один свободный блок. Для оптимального заполнения UMA должен подбираться порядок загрузки драйверов ирезидентных программ и задействован расширенный синтаксис командdevicehigh иloadhigh (с помощью которого можно указывать, в какой блок загружать программу).

Путаница названий

[править |править код]

Словоангл. upper обычно переводят на русский как «верхний» («расположенный наверху»[4]), но и словоhigh может переводиться как «верхний» (или «высокий» — «находящийся вверху»[5]). С этим связано множество неточностей при переводе названий Upper Memory Area (Upper Memory Block) иHigh Memory Area.

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

Кроме того, командыdevicehigh иloadhigh, несмотря на слово high в названии, загружают программы в UMB, а не HMA. HMA DOS использует только для загрузки своего ядра (если использована командаdos=high илиdos=high,umb).

Примечания

[править |править код]
  1. UMBPCI - a hardware UMB driver for DOS and Win95  (неопр.). Дата обращения: 10 декабря 2014. Архивировано 31 декабря 2014 года.
  2. Index of /scene96-2/misc/utilz/rdosumb  (неопр.). Дата обращения: 10 декабря 2014. Архивировано 11 декабря 2014 года.
  3. В заголовке.EXE-файлов имеются поля для указания минимальной и максимальной запрашиваемой памяти; при загрузке программы DOS подбирает для неё наибольший блок, чей размер находится между этим двумя значениями. Но, как правило, в поле максимальной памяти находится значение, говорящее о выделении всей доступной памяти, а в этом случае DOS не ограничивает размер выделяемых блоков. У.COM-файлов нет заголовка, поэтому требование на максимальный блок памяти программы в таком формате подразумевается.
  4. upper  (неопр.). Архивировано изоригинала 18 апреля 2013 года. в Яндекс.словарях
  5. high  (неопр.). Архивировано изоригинала 18 апреля 2013 года. в Яндекс.словарях
Источник —https://ru.wikipedia.org/w/index.php?title=Upper_Memory_Area&oldid=142686164
Категории:
Скрытые категории: