Распределение первого мегабайта памяти компьютера
Первые 640 Кбайт адресного пространства называются основной или стандартной CMA- памятью и по принципу работы являются памятью с произвольным доступом, допускающей как считывание, так и запись данных (ОЗУ или в англоязычной транскрипции RAM – Random Access Memory). Это та область, которую могли адресовать первые версии DOS. Оставшаяся часть памяти объёмом 384 Кбайт (область верхней памяти – UMA) использовалась видеоадаптером и ПЗУ BIOS. Начальный килобайт памяти занят векторами прерываний (256 векторов по 4 байта). Далее, над таблицей векторов, располагается область данных BIOS, которая занимает объём в 256 байт. В этой области хранятся разнообразные данные, используемые BIOS в процессе управления периферийным оборудованием. Этими данными могут пользоваться и разработчики прикладных программ на ассемблере (см. табл. 2). Начиная с сегментного адреса 0050h, располагается область данных DOS. К некоторым данным этой области (данные не являются документированными) можно обращаться только через посредство программных прерываний. Выше резидентной части командного процессора обычно загружаются необходимые резидентные программы (русификаторы, антивирусные программы). Оставшаяся часть CMA- памяти для загрузки прикладных DOS-программ, как правило, не превышает ~ 500 Кбайт. Таблица 2 Содержание некоторых полей области данных BIOS
Блоки верхней памяти UMA различаются как по принципу работы – ОЗУ или ПЗУ, так и по месту расположения в компьютере. Видеопамять (тип OЗУ) – обычно находится в составе видеоадаптера, программы BIOS (тип ПЗУ) – на материнской плате компьютера. Всё, что выше первого мегабайта, получило название расширенной или XMS- памяти (см. табл. 1). Как уже отмечалось выше, доступ к расширенной памяти осуществляется в защищённом режиме и она не доступна для DOS. Однако в составе DOS имеются два драйвера, которые позволяют пользоваться XMS- памятью в ограниченном объёме. Первый драйвер Himem.sys разрешает DOS загрузить себя в первый сегмент расширенный памяти, получившей название высокой памяти – High Memory (HMA). Второй – Emm386.exe- может выполнять две альтернативные функции: – отображение расширенной памяти на свободные адреса верхней UMA- памяти (Expanded memory – EMS), – загрузку драйверов и резидентных программ DOS (системных и прикладных) из CMA- памяти на свободные адреса верхней памяти UMA. Указанные функции реализуются посредством модификации конфигурационных файлов Config.sys и Autoexec.bat. В начале файла Config.sys помещаются две строки, осуществляющие загрузку данных файлов (в начале Himem.sys, затем Emm386.exe), затем, в третьей строке, – директиву DOS с параметрами: High и UMB. Параметр High пролонгирует назначение драйвера Himem.sys, UMB – разрешает DOS управлять блоками верхней памяти через посредство драйвера Emm386.exe. Вот, к примеру, как это выглядит для Windows 9x: ........ Device=C: \Windows\Himem.sys Device=C: \Windows\Emm386.exe Noems Dos=High, Umb В конце второй строки добавляется ключевое слово Ram, если требуется реализация от драйвера функции отображения расширенной памяти в umb, или noems – для указанной выше альтернативной функции. В дальнейшем записываются строки, загружающие драйвера (при наличии noems) в верхнюю память с помощью команды Devicehigh. Например: Devicehigh=C: \Windows\Command\Ansi.sys При этом загрузка резидентов выполняется в Autoexec.bat командой Loadhigh(Lh). Выполнение подобной работы позволяет освободить CMA- память для загружаемых команд до уровня ~ 600 Кбайт. Для просмотра памяти можно воспользоваться следующими командами: Mem/d/p – постраничный просмотр модулей и драйверов всей памяти; Mem/m: < filename> – вывод подробных сведений об использовании памяти заданным модулем. При установке на компьютер системы Windows 2000 функция загрузки подсистемы DOS в память HMA, через посредство драйвера Himem.sys, выполняется по умолчанию. Кроме того, драйвер Emm386. exe в этой системе уже не используется, а его функции в файле Config.nt частично выполняет команда Emm. Описание данной команды приведено в виде комментариев в файле Config.nt для Windows 2000. Рассмотренные выше строчки в Config.nt можно представить в виде: ........ device=%SystemRoot%\system32\himem.sys Emm=Ram[2] Dos=High, Umb Devicehigh=C: \Windows\Command\Ansi.sys Вообще система Windows 2000 автоматически оптимизирует использование памяти для подсистемы MS-DOS и её программ. Для резервирования за программой DOS определённых объёмов памяти различных типов щёлкните правой кнопкой на значке исполняемого файла программы и выберите из контекстного меню команду Свойства. В окне свойств откройте вкладку Память (рис. 3).
Рис. 3. Окно свойств с открытой вкладкой Память · В рамке Обычная память задаётся необходимый для работы программы объём памяти в Кбайтах (от 0 до 640 Кб.). В раскрывающемся списке Переменные среды задаётся объём памяти (в байтах) для интерпретатора команд Command.com (проявляет себя только при запуске Windows 9x). Установка флажка Защищённый режим препятствует изменению программой установленной структуры и объёма обычной памяти, что защищает систему от зависания в случае ошибок в программе. · В рамке Отображаемая (EMS) память указывается максимальный объём физической памяти, отображаемой в диапазоне свободных адресов верхней памяти, который может быть выделен программе. · В рамке Дополнительная (XMS)-память можно установить флажок Использовать HMA для загрузки программы в высокую память, однако если в HMA- память загружена DOS (что более необходимо), положение флажка не играет роли. · В рамке Память DPMI для защищённого режима MS-DOS задаётся предельный объём памяти DPMI для защищённого режима DOS, который может быть выделен программе (проявляет себя только при запуске Windows 9x). Для просмотра памяти можно воспользоваться следующими командами: mem/d– выводит сведения о загруженных программах и внутренних драйверах, а также вывод других сведений о программах (при необходимости используйте постраничный вывод с помощью команды more, например, mem/d|more); mem/c – выводит сведения о программах, загруженных в обычную память и в верхнюю область памяти, а также итоговые сведения об использовании памяти.
|