Иллюстрированный самоучитель по SVGA

Расширенная память (Extended Memory)

Формат GDT должен строго соблюдаться, поэтому обратите внимание на то, в каких случаях в примере Б.9 употребляются директивы db, а в каких dw. Важно также правильно указывать коды доступа к источнику и приемнику, в частности, эзь разрешает чтение и запись.

Коды адресов источника и приемника 24-разрядные. Адрес обычной памяти вычисляется по схеме, показанной в табл. Б.1. Адрес Extended memory может изменяться в пределах ОТ 10:ООООп до OFF:OFFFFh.

Замечание
Именно эту функцию используют: DOS для загрузки своей резидентной части в старшую память, задача memmaker.exe для перемещения драйверов в старшую память, а также драйверы vdisk и ramdrive. Для ее использования прикладными задачами в Extended memory надо выделить блок нужного размера. Для этого в файле config.sys после имени драйвера himem.sys укажите ключ /intlS = xxxx, где хххх соответствует размеру (в килобайтах) пространства ОЗУ, которое будет доступно при работе с функцией 87п прерывания int 15h
.

Функция 88h Get Extended Memory Size возвращает В регистре ах размер доступного пространства расширенной памяти, выраженный в килобайтах. Это то значение, которое указано при установке драйвера himem.sys, адрес его первого байта юооооь (1 Мбайт).

При работе с Extended memory задача, прежде всего, должна издать эту функцию для проверки наличия требуемого пространства ОЗУ. Если его недостаточно, то выполнение задачи надо прервать, поскольку она не может затребовать дополнительный объем расширенной памяти. Доступным пространством памяти задача распоряжается самостоятельно. Ни DOS, ни драйвер himem.sys не выполняют никаких функций контроля и распределения пространства Extended memory.

Функция 89h Enter Protected Moded выполняет действия, необходимые для перехода в защищенный режим и переводит микропроцессор в этот режим, т. е. после возврата из BIOS задача уже будет выполняться в защищенном режиме. Напомним, что временный переход в защищенный режим производится при выполнении функции 87h перед пересылкой блока, но он не заметен для задачи. В данном случае речь идет о полном переходе на выполнение задачи в защищенном режиме.

Перед обращением к BIOS надо сформировать специальную структуру данных (Global Descriptor Table и Interrupt Descriptor Table). Для заполнения этой структуры вы должны иметь представление о том, что такое дескриптор сегментного регистра, зачем и как надо изменять содержимое векторов прерываний и другие особенности перехода из реального режима в защищенный и обратно. Поэтому советуем отложить эксперименты с данной функцией до тех пор, пока вы не начнете изучать программирование для защищенного режима.

Виртуальный диск

Если на компьютере установлен достаточно большой объем оперативной памяти, то часть его можно использовать для размещения виртуального (или электронного) диска. Большой объем понятие условное, но при наличии 64 Мбайт памяти 32 Мбайт можно отдать под виртуальный диск, причем с явной пользой для дела. Если, например, вы измените настройки Windows так, чтобы область свопинга находилась на виртуальном диске, то система будет работать гораздо быстрее.

В состав устаревших версий DOS входил специальный драйвер vdisk.sys, предназначенный для создания и поддержки работы диска в дополнительной памяти ПК. Для чтения с диска и записи на него драйвер использовал функцию 87ь прерывания int I5h, т. е. при каждом обращении к виртуальному диску происходил временный переход в защищенный режим.

В состав современных версий DOS входит улучшенная версия драйвера ramdrive.sys. При его установке можно выбирать способ доступа к дополнительной памяти. При указании ключа /Е диск будет расположен в области Extended memory, а при указании ключа З /А – В Expanded memory. При каждом обращении к диску в первом случае будет происходить временный переход в защищенный режим, а во втором случае для пересылки данных будут использоваться функции EMS, описанные в предыдущем разделе.

Для установки виртуального диска в конец файла config.sys надо записать следующую команду:

device = c:\dos\ramdrive.sys 8192 /а.

В данном случае предполагается, что файл ramdrive.sys хранится на диске С: в каталоге DOS, а для размещения виртуального диска выделяется 8192 байта В Expanded memory.

Если ваша графическая задача будет использовать виртуальный диск для выборки и временного хранения данных, то это ускорит ее работу. Только не забывайте, что содержимое виртуального диска теряется при выключении или перезагрузке ПК.

Заключение
При создании задач, предназначенных для выполнения в реальном режиме работы микропроцессора, дополнительную память ПК имеет смысл использовать как Expanded memory. Функции EMS позволяют прикладным задачам распоряжаться пространством расширенной памяти без существенных ограничений. Работа с Extended memory применяется, если задача выполняется в защищенном режиме. В таком случае использовать функции EMS не целесообразно, поскольку задаче доступно все свободное пространство оперативной памяти без каких-либо ограничений
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.