|
|
|
|
LIM EMS 3.2
Первая широко поддержанная версия LIM EMS за номером 3.2 была опубликована в сентябре 1985 г. Она определила протокол расширенной памяти,
обеспечивавший надлежащим образом спроектированные программные приложения памятью для данных или кодов,
переключаемую банками, объемом до 8 Мбайт. Данная спецификация
включала в себя средства, которые позволяли нескольким активным
приложениям использовать эту память одновременно без взаимного
влияния.
Способность для многих программ, использующих расширенную
память, сосуществовать особенно выгодна разработчикам резидентных
программ, по завершении остающихся в памяти, по крайней мере, в
двух аспектах. Во-первых, такая программа может хранить часть
своих данных или кода в расширенной памяти, что уменьшает объем
обычно занимаемой ею памяти. Во-вторых, конфликтов между такими
и другими программами из-за использования расширенной памяти можно избежать, так как LIM EMS определяет конкретные соглашения по
программированию, которые предотвращают появление таких конфликтов.
Идеи и терминология LIM EMS 3.2
Основная схема LIM EMS 3.2 работает следующим образом:
1. На машине может быть установлено до 8 Мбайт ОЗУ на одной
или нескольких платах. В отличие от многообразных плат памяти накопитель на этих платах делится на страницы по 16 Кбайт. Расширенная память не
адресуется приложениями DOS непосредственно, так
как она не появляется в младших 640 К адресного пространства персонального компьютера.
2. Эти платы памяти также содержат набор регистров соответствия, которые управляются программно для установления отображения
какой-либо из 16-Кбайтных страниц на плате (платах) расширенной
памяти на любую из четырех 16-Кбайтных зон в 64-Кбайтной части
адресного пространства персонального компьютера, именуемого страничным кадром. Страничный кадр размещается где-то в резервном адресном пространстве
персонального компьютера над 640К и ниже предела адресации 8086/8 - 1 М. Каждая зона в страничном кадре
называется физической страницей и определяется числом 0 - 3.
Страничный кадр образует окно, через которое правильно написанная
программа может получить доступ ко всей емкости памяти платы
(плат) расширенной памяти. Процесс изменения содержимого регистров отображения плат для обеспечения доступности страницы расширенной памяти
программе называется страничным отображением.
3. Управление системой расширенной памяти, включая страничное отображение, выполняется программной компонентой, называемой
Менеджер расширенной памяти или ЕММ (Expanded Memory Manager),
которая поставляется изготовителем платы расширенной памяти. Во
многом так же, как DOS и BIOS обеспечивают программный интерфейс
между приложением и аппаратурой ЦВМ, находящейся ниже него, менеджер расширенной памяти обеспечивает программный интерфейс между приложением и
системой расширенной памяти. Менеджер расширенной памяти загружается в память так же, как драйвер клавиатуры
DOS во время загрузки и сообщается с программами через программное прерывание 67h, используя механизм передачи параметров, сравнимый с интерфейсом
прерывания 21h DOS.
4. По запросу программы менеджер расширенной памяти размещает набор из одной или более логических страниц для программы. Он
также размещает обработчик (handle), который программа использует
в последующих запросах расширенной памяти к менеджеру расширенной
памяти, для определения набора страниц расширенной памяти, с которыми нужно работать. Во многом таким же образом как обработчик
файлов DOS используется ОС для отслеживания файлов, открытых каждой программой, обработчики расширенной памяти используются менеджером расширенной
памяти для отслеживания множества активных
страниц расширенной памяти каждой программы. Формат обработчика
неопределен, за исключением того факта, что он является 16-битной
величиной. Номера логических страниц, связанные с обработчиком,
отсчитываются относительно нуля до значения, на единицу меньшего,
чем количество страниц, запрошенных программой.
5. Когда от менеджера расширенной памяти запрашивается обслуживание, программа определяет конкретную страницу в 16К расширенной памяти, которую
она желает использовать, путем задания комбинации обработчика и номера логической страницы.
Примечание: Ранние версии спецификации используют термин
идентификатор (ID) процесса, а не термин обработчик для ссылки на
множество страниц расширенной памяти. Разработчики LIM EMS вначале предполагали, что каждая программа будет размещать только одно
множество страниц, подразумевая соответствие один к одному между
программами и идентификаторами процессов. На практике, однако,
многие программы запрашивают более одного набора страниц расширенной памяти. Как Вы увидите позже, это законный и полезный прием программирования.
Однако, факт, что одна программа могла бы обладать более чем одним идентификатором процесса EMS, запутывал
многих пользователей, что и подсказало изменение терминологии.
6. Менеджер расширенной памяти LIM EMS 3.2 системы расширенной памяти обеспечивает 14 функций, вызываемых пользователем
(плюс две резервные функции), которые приложения используют для получения информации о страницах расширенной памяти и работы с ними.
|
|