Распределение оперативной памяти

Отображаемая и расширенная память – спецификации ems и xms

Отображаемая память EMS
(Expanded Memory Specification) – программная спецификация использования дополнительной памяти DOS-программами реального режима. Спецификация
LIM EMS
–соглашение фирм Lotus, Intel, Microsoft на использование EMS. С помощью специальных аппаратных или программных средств любая область дополнительной памяти может быть отображена на небольшие страницы, расположенные в области UMA. В первоначальном варианте можно было использовать 4 страницы по 16 Кбайт,
примыкающие друг к другу, обычно начиная с адреса D0000h (положение страниц можно менять в пределах свободных областей UMA). Обращение прикладных программ к памяти EMS осуществляется через диспетчер памяти, вызываемый по прерыванию Int 67h. Программа, нуждающаяся в дополнительной памяти, должна сначала запросить выделение области, указав ее размер в 16-килобайтных страницах. В ответ на этот запрос (если имеется свободная память) диспетчер сообщает программе номер дескриптора EMS (EMS handler), по которому программа в дальнейшем будет ссылаться на выделенную ей область при управлении отображением. Далее программа через диспетчер назначает отображение требуемой логической страницы из выделенной ей области дополнительной памяти на выбранную физическую страницу, расположенную в области UMA. После этого любые программные обращения процессора к физической странице,
расположенной в пределах первого мегабайта, будут в действительности работать с логической страницей дополнительной памяти, расположенной выше первого мегабайта, причем без переключения в защищенный режим. Для работы с иной логической страницей требуется вызов диспетчера для переназначения отображения. В EMS 4.0,
эмулируемой на процессорах 386 , появилась возможность увеличения числа доступных физических страниц и отображения дополнительной памяти не только на фиксированные области UMA, но и на любые области памяти.

Для поддержки EMS поначалу требовались специальные аппаратные средства. В компьютерах на процессорах 386 и выше появилась возможность программной эмуляции EMS, которую в MS-DOS 5 выполняет драйвер EMM386.EXE.

Предлагаем ознакомиться  КОМПЬЮТЕРНЫЕ ВИРУСЫ: ПРОИСХОЖДЕНИЕ, РЕАЛЬНАЯ УГРОЗА И МЕТОДЫ ЗАЩИТЫ

Система EMS в основном предназначена для хранения данных – для исполняемого в данный момент программного кода она неудобна, поскольку требует программного переключения страниц через каждые 16 Кбайт. EMS используется в основном старым ПО,
фирма Lotus продвигала эту спецификацию для хранения своих больших электронных таблиц. Ее используют для создания виртуальных дисков, хранения очередей заданий для печати, а также и для хранения данных и даже программного кода некоторых резидентных программ (в целях экономии стандартной памяти).

Расширенная память XMS
(extended Memory Specification) – иная программная спецификация использования дополнительной памяти DOS-программами, разработанная компаниями Lotus, Intel, Microsoft и AST для компьютеров на процессорах 286 и выше. Эта спецификация позволяет программе получить в распоряжение одну или несколько областей дополнительной памяти, а также использовать область НМА. Распределением областей ведает диспетчер расширенной памяти – драйвер HIMEM.SYS. Диспетчер позволяет захватить или освободить область НМА (65 520 байт, начиная с 100000h), а также управлять вентилем линии адреса А20. Функции собственно XMS позволяют программе:

  • определить размер максимального доступного блока памяти;
  • захватить или освободить блок памяти;
  • копировать данные из одного блока в другой, причем участники копирования могут быть блоками как стандартной, так и дополнительной памяти в любых сочетаниях;
  • запереть блок памяти (запретить копирование) и отпереть его;
  • изменить размер выделенного блока.

В ответ на запрос выделения области диспетчер выдает номер дескриптора блока (16-битное число XMS handler), по которому выполняются дальнейшие манипуляции с этим блоком. Размер блока может достигать 64 Мбайт. Спецификация XMS позволяет программам реального режима устраивать «склады» данных в дополнительной памяти, которая им непосредственно недоступна, копируя в нее и из нее данные доступных областей первого мегабайта памяти. Доступ к диспетчеру XMS осуществляется через прерывание Int 2Fh. Заботу о переключении в защищенный режим и обратно для получения доступа к дополнительной памяти берет на себя диспетчер. По умолчанию HIMEM.SYS позволяет использовать до 32 дескрипторов блоков, но это число можно увеличить, задав параметр /NUMHANDLES=xx в строке загрузки драйвера HIMEM.SYS.

Предлагаем ознакомиться  ― Spline

Кроме работы с дополнительной памятью спецификация XMS определяет пару функций и для работы с блоками UMB – захватить блок требуемого размера (или определить максимально доступный блок) и освободить его.

Как видно, спецификации EMS и XMS отличаются по принципу действия: в EMS для доступа к дополнительной памяти выполняется отображение (страничная переадресация) памяти, а в XMS – копирование блоков данных. На компьютерах с процессорами 386 эти спецификации мирно сосуществуют при использовании драйвера HIMEM.SYS, поверх которого может быть загружен и драйвер EMM386.EXE,
пользующийся памятью XMS для эмуляции EMS-памяти. Память, доступная EMS и XMS,
может выделяться динамически из числа дополнительной. Ключ NOEMS в строке запуска EMM386 запрещает выделение памяти под использование по спецификации EMS.

Теневая память – shadow rom и shadow ram

В области верхней памяти UMA обычно располагаются устройства с медленной памятью: системная BIOS (System ROM BIOS), расширения BIOS на графическом адаптере (Video ROM BIOS), на контроллерах дисков и интерфейсов (Adapter ROM), ПЗУ начальной загрузки на сетевой карте (Boot ROM), видеопамять (Video Memory Buffer). Они, как правило, реализованы на 8- или 16-битных микросхемах с довольно большим временем доступа. Обращение к полноразрядному системному ОЗУ выполняется гораздо быстрее. Для ускорения обращений к памяти этих устройств применяется
теневая память (Shadow Memory)
– подмена ее системным ОЗУ. Теневая память появилась на развитых моделях АТ-286, где она была реализована аппаратно. Процессоры класса 386 позволяют ее реализовать программно, с помощью страничной переадресации. Затенение ОЗУ и ПЗУ выполняется по-разному.

При инициализации теневого ПЗУ
(Shadow ROM)
содержимое затеняемой области копируется в ОЗУ, и при дальнейшем чтении по этим адресам подставляется ОЗУ, а запись в эту область блокируется.

Предлагаем ознакомиться  Enhanced Mode Support On

При использовании теневого ОЗУ
(Shadow RAM)
запись производится одновременно в физическую память затеняемой области и в системное ОЗУ,
наложенное на эту область. При чтении затененной области обращение идет только к системной памяти, что происходит гораздо быстрее. Особенно велик эффект от затенения видеопамяти старых графических адаптеров, которая по чтению бывает доступна только во время обратного хода развертки, и процессору приходится долго ждать этого момента. Однако затенение областей разделяемой памяти, модифицируемых со стороны адаптеров, недопустимо – эти изменения не будут восприняты процессором. К разделяемой относится буферная память сетевых адаптеров,
видеопамять адаптеров с графическими сопроцессорами (акселераторами). Из этого следует, что затенение видеопамяти применимо только к примитивным графическим картам, устанавливаемым в слот ISA, и то не во всех режимах.

Обычно теневая память включается через CMOS Setup отдельными областями размером по 16 Кбайт или более крупными, и для каждой области указывают режим затенения (Shadow ROM или Shadow RAM). Возможно ее включение и драйверами ОС (например, драйвером EMM386). На современных системных платах затенение области системной BIOS выполняется всегда, на старых платах затенением этой области можно было управлять. Затенение BIOS видеоадаптера (Video BIOS Shadowing) для работы в среде Windows с «родными» драйверами графического адаптера может и не давать прирост производительности.

Оцените статью
Техничка
Adblock detector