в новое поколение плат спецификации расширенной памяти, - мно-
жество наборов регистров отображения. Этим будет обеспечиваться
практически мгновенное переключение контекста между двумя или бо-
лее задачами путем назначения разных наборов регистров отображе-
ния для каждого контекста. Еще одно средство, именуемое "наборы
регистров ПДП", позволит многозадачным операционным системам пе-
реключать задачи, пока другая задача ожидает завершения передачи
по ПДП. Поддержка многих наборов регистров отображения и одновре-
менных передач ПДП включена в девять подфункций функции 28 "Из-
менить набор регистров отображения".
Программное обеспечение операционных сред может определять,
какие новые возможности аппаратуры поддерживаются данным менедже-
ром расширенной памяти, путем выдачи функции 26 "Получить инфор-
мацию об аппаратуре расширенной памяти". Она возвращает количест-
во альтернативных наборов регистров отображения, наборов
регистров ПДП и индикатор способности аппаратуры расширенной па-
мяти обнаруживать, когда выполняется ПДП. Также она возвращает
размер исходных страниц, поддерживаемый менеджером расширенной
памяти.
Аппаратура, содержащая в себе эти средства, только начинает
появляться на рынке. Чтобы позволить выполнять разработку много-
задачного программного обеспечения до того, как аппаратура нового
поколения станет легко доступной, в спецификации расширенной па-
мяти LIM 4.0 обеспечена программная имитация альтернативных набо-
ров регистров отображения путем сохранения и восстановления об-
ластей сохранения контекста, которая обеспечивается многозадачным
монитором и находится внутри него.
- 7-46 -
Неразрушаемая память
Две функции, добавленные в спецификации расширенной памяти
LIM 4.0, поддерживают сохранение расширенной памяти в течение пе-
резапуска из памяти. Программное обеспечение, которое отображает
память в отображаемую обычную память (память ниже 640К) должно
перехватывать все условия, ведущие к перезапуску из памяти (пре-
рывание 19h BIOS), и выдавать функцию 29 "Подготовить аппаратуру
расширенной памяти для перезапуска из памяти". Платы расширенной
памяти с соответствующим оборудованием смогут сохранить содержи-
мое отображаемой обычной памяти, так же как и текущий контекст
отображения на время перезапуска из памяти. Менеджеры расширенной
памяти для существующих плат не реализуют данную опцию, поскольку
платы зависят от схемы регенерации системной памяти, которая бло-
кируется на время перезапуска из памяти.
Функция 19 "Получить/установить атрибут обработчика" поз-
воляет приложению определить, поддерживает ли менеджер расширен-
ной памяти возможность сохранения содержимого страниц обработчика
в течение перезапуска из памяти. Если да, приложение может запро-
сить, чтобы менеджер расширенной памяти или сохранил страницы
указанного обработчика на время перезапуска из памяти путем уста-
новки атрибута обработчика на неразрушаемость, или разрешил ме-
неджеру расширенной памяти освободить обработчик и сбросить со-
держимое связанных страниц во время перезапуска из памяти
(разрушаемый обработчик). По умолчанию у всех обработчиков внача-
ле атрибут установлен на разрушаемость.
Управление доступом
Важной особенностью набора функций операционных сред являет-
ся то, что многозадачный менеджер может запретить доступ к функ-
циям менеджера расширенной памяти, ориентированным на операцион-
ную систему, для любой программы, кроме самого себя. Функция 30
"Разрешить/запретить набор функций операционных сред" позволяет
многозадачному менеджеру блокировать функции 26, 28 и 30 перед
тем, как он передаст управление прикладному программному обеспе-
чению и разблокировать доступ для собственных нужд.
Заключение
Для многих типов приложений расширенная память предлагает
практическое программное решение для 640-Кбайтного ограничения PC
DOS. Наиболее современным определением программного интерфейса
между приложением и механизмом управления памяти, переключаемой
банками, является спецификация расширенной памяти LIM 4.0. Этот
программный интерфейс реализует менеджер расширенной памяти, ко-
торый обычно загружается как драйвер символьного устройства DOS
во время загрузки. Системы расширенной памяти могут строиться с
помощью сложного оборудования спецификации расширенной памяти,
механизма страниц процессора 80386 Intel или регистрами отображе-
ния на некоторых типах плат расширения памяти PS/2 или системы
расширенной памяти могут быть чисто программными.
Приложения выдают запросы функций для менеджера расширенной
памяти через механизм программного прерывания 67h, сходным обра-
зом с интерфейсом прерывания 21h DOS. Параметры передаются через
регистры и/или структуры данных, резидентные в памяти, механизм,
наиболее естественный для программистов на языке ассемблера. При-
- 7-47 -
ложения, написанные на языках высокого уровня, также могут обра-
щаться к расширенной памяти, если эти языки обеспечивают способы
выдачи программных прерываний, обработки регистров процессора и
определяют удаленные указатели для кодовых объектов и данных.
Спецификация расширенной памяти LIM 3.2 определяет 8-Мбайт-
ное расширенное адресное пространство, разбитое на 16-Кбайтные
страницы. До 64К из этого пространства может быть доступно однов-
ременно через 64-Кбайтный кадр страниц, размещенный в пространс-
тве памяти над 640К. Также определяется набор из 14 функций отно-
сительно низкого уровня, которые могут применяться для доступа и
обработки кодовых объектов и данных в расширенной памяти. Эти 14
функций могут быть разделены на три группы: информационные, уп-
равления данными и управления контекстом.
Спецификация расширенной памяти LIM 4.0 - дополнение, сов-
местимое вверх, спецификации 3.2, которое сейчас включается как
часть в MS-DOS версии 4.0. Она содержит несколько средств, при-
сутствующих в усовершенствованной спецификации расширенной памяти
AQA, включая кадр страниц, больший 64К, и способность поддержи-
вать отображаемую память ниже 640К. Она также добавляет класс
функций, разработанных, чтобы непосредственно поддерживать быст-
рое переключение задач многозадачными операционными средами. Спе-
цификация 4.0 увеличивает адресное пространство расширенной памя-
ти до 32 Мбайт и предлагает набор функций более высокого уровня,
чем те, которые были возможны в спецификации 3.2.
Пользоваться расширенной памятью могут как нерезидентные,
так и резидентные приложения. Резидентные приложения должны поль-
зоваться функциями управления контекстом для сохранения и восста-
новления контекста менеджера расширенной памяти, так как такие
программы должны сохранять состояние процессора при входе и вос-
станавливать это состояние при выходе.
Функции поддержки операционной системы спецификации 4.0 спо-
собны пользоваться преимуществами усовершенствованных аппаратных
средств, которые могут появиться в новых разработках расширенной
памяти. Одним из таких средств является множество наборов отобра-
жения страниц, которое позволяет многозадачной операционной среде
почти мгновенно переключать контекст путем назначения набора ре-
гистров отображения задаче. Другое средство - неразрушаемая па-
мять - позволит содержимому расширенной памяти сохраняться во
время перезапуска из памяти. Платы, обеспечивающие аппаратную
поддержку для этих функций, только теперь появляются в продаже.
Литература
Duncan, Ray. "Lotus/Intel/Microsoft Expanded Memory", Byte,
11, no.11, 1986 (Специальное издание IBM).
Как писать программы с помощью спецификации расширенной па-
мяти LIM 3.2. Даны примеры - части программы RAMDISK, в которой
используется расширенная память.
Hansen, Marion, and John Driscoll. "LIM EMS 4.0: A
definition for the Next Generation of Expanded Memory", MSJ3, no.
1, Jan.88.
Описание средств, введенных в спецификации расширенной памя-
ти LIM 4.0. Примеры программ на Си и языке ассемблера показывают
улучшенные методы для сохранения экрана, разделения данных между
программами и выполнения кода из расширенной памяти.
- 7-48 -
Hansen, Marion, Bill Krueger, and Nick Stueklen. "Expanded
Memory: Writing Programs That Break the 640K Barrier", MSJ2,
no.1, Mar.87.
Описание спецификации расширенной памяти LIM 3.2. Примеры
программ на С и языке ассемблера показывают, как выполнять сохра-
нение экрана и исполнять код из расширенной памяти.
Lefor, John A., and Karen Lund. "Reaching into Expanded
Memory", PCTJ5, no.5, May 86.
Рассмотрение спецификации расширенной памяти LIM 3.2 и усо-
вершенствованной спецификации расширенной памяти AQA, ориентиро-
ванное на приложения. Примеры законченных программ, которые полу-
чают параметры расширенной памяти и распечатывают данные из
расширенной памяти.
Lotus/Intel/Microsoft. "Lotus/Intel/Microsoft Expanded
Memory Specification, Version 4.0", Document number 300275-05,
Oct 87.
Полная спецификация самой последней версии спецификации рас-
ширенной памяти. Включает примеры программ на Турбо-Паскале и
языке ассемблера.
Mirecki, Ted. "Expandable Memory", PCTJ4 no.2, Feb 86.
Описание спецификации расширенной памяти LIM 3.2 и усовер-
шенствованной спецификации расширенной памяти AQA. Тесты изделий
расширенной памяти фирм Intel и AST.
Yao, Paul. "EMS Support Improves Microsoft Windows 2.0
Application Performance", MSJ3, no.1, Jan 88.
Техническое рассмотрение способа, в котором в программе
Windows 2.0 используется спецификация расширенной памяти LIM 4.0
для поддержания многих параллельно работающих приложений.
- 7-49 -
Программы сопряжения на низком уровне и пример приложения
Если данная глава выполнила свое назначение, то у Вас должно
быть хорошее представление того, как работает расширенная память,
и как программы DOS могут использовать мегабайты дополнительной
памяти для кодов и данных. Теперь мы поможем Вам применять потен-