гантского существующего оборудования и программного обеспечения
ограничивают ее немедленную пригодность в качестве решения.
Поскольку LIM EMS практична, немедленно доступна и совмести-
ма вверх со всеми существующими системами, работающими под управ-
лением MS-DOS, она стала коммерчески и технически успешным спосо-
бом для программ DOS для преодоления барьера 640К. Фактически,
некоторые промышленные наблюдатели предполагают, что эффектив-
ность решения LIM EMS в действительности удлинит жизнь систем на
основе MS-DOS на несколько лет за точку их предполагавшегося тех-
нологического устаревания.
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),
которая поставляется изготовителем платы расширенной памяти. Во
- 7-6 -
многом так же, как DOS и BIOS обеспечивают программный интерфейс
между приложением и аппаратурой ЦВМ, находящейся ниже него, ме-
неджер расширенной памяти обеспечивает программный интерфейс меж-
ду приложением и системой расширенной памяти. Менеджер расширен-
ной памяти загружается в память так же, как драйвер клавиатуры
DOS во время загрузки и сообщается с программами через программ-
ное прерывание 67h, используя механизм передачи параметров, срав-
нимый с интерфейсом прерывания 21h DOS.
4. По запросу программы менеджер расширенной памяти размеща-
ет набор из одной или более логических страниц для программы. Он
также размещает обработчик (handle), который программа использует
в последующих запросах расширенной памяти к менеджеру расширенной
памяти, для определения набора страниц расширенной памяти, с ко-
торыми нужно работать. Во многом таким же образом как обработчик
файлов DOS используется ОС для отслеживания файлов, открытых каж-
дой программой, обработчики расширенной памяти используются ме-
неджером расширенной памяти для отслеживания множества активных
страниц расширенной памяти каждой программы. Формат обработчика
неопределен, за исключением того факта, что он является 16-битной
величиной. Номера логических страниц, связанные с обработчиком,
отсчитываются относительно нуля до значения, на единицу меньшего,
чем количество страниц, запрошенных программой.
5. Когда от менеджера расширенной памяти запрашивается обс-
луживание, программа определяет конкретную страницу в 16К расши-
ренной памяти, которую она желает использовать, путем задания
комбинации обработчика и номера логической страницы.
Примечание: Ранние версии спецификации используют термин
идентификатор (ID) процесса, а не термин обработчик для ссылки на
множество страниц расширенной памяти. Разработчики LIM EMS внача-
ле предполагали, что каждая программа будет размещать только одно
множество страниц, подразумевая соответствие один к одному между
программами и идентификаторами процессов. На практике, однако,
многие программы запрашивают более одного набора страниц расши-
ренной памяти. Как Вы увидите позже, это законный и полезный при-
ем программирования. Однако, факт, что одна программа могла бы
обладать более чем одним идентификатором процесса EMS, запутывал
многих пользователей, что и подсказало изменение терминологии.
6. Менеджер расширенной памяти LIM EMS 3.2 системы расширен-
ной памяти обеспечивает 14 функций, вызываемых пользователем
(плюс две резервные функции), которые приложения используют для
получения информации о страницах расширенной памяти и работы с
ними.
Улучшенная спецификация расширенной памяти
Вскоре сформировалось второе объединение в компьютерной про-
мышленности для продвижения улучшенной спецификации расширенной
памяти. Результатом его усилий, которое поддерживалось корпораци-
ями AST Research, Quadram и Ashton-Tate была вверх совместимая (с
LIM EMS 3.2) схема расширенной памяти, именуемая AQA EEMS.
Ограничение размера окна
Основное ограничение схемы LIM EMS 3.2 с точки зрения AQA
заключалось в ничтожном размере окна страничного кадра, равном 64
Кбайт. Через такое небольшое окно в расширенную память программа
может иметь доступ только к 4 16-Кбайтным страницам расширенной
памяти из 512 возможных (8 мегабайт), поддерживаемых спецификаци-
- 7-7 -
ей. AQA EEMS позволяет программе обращаться, по крайней мере в
теории, к максимум 64 16-Кбайтных страниц расширенной памяти в
любой данный момент времени. Быстрый подсчет (думающие в двоичном
коде могут сдвигать биты) показывает, что при этом память, при-
годная для отображения должна составлять до 1 Мбайта! Но подож-
дите, спросите Вы, как там насчет всех видеобуферов и ПЗУ BIOS в
пространстве над 640К, не говоря о DOS и приложениях в пространс-
тве ниже 640К? Учтено ли это в регистрах отображения?
Нет. Действительность, с которой имеет дело EEMS та же, с
которой обращается LIM EMS; AQA EEMS просто работает с этой ре-
альностью более смело. LIM EMS 3.2 - пример консервативной в са-
мом худшем смысле философии проектирования. Например, разработчи-
ки определили, что персональный компьютер с платой улучшенного
графического адаптера (EGA) и сетевой платой, содержащей ПЗУ, мо-
жет обладать только 64 К неиспользуемого адресного пространства
над 640К. Адресным пространством ниже 640К уже твердо управляет
DOS. Таким образом, для разработчиков LIM EMS 3.2 остался
64-Кбайтный страничный кадр.
Разработчики AQA оценивали задачу с другой точки зрения. Они
рассуждали, что стандартный персональный компьютер с CGA или MDA
обладает достаточным адресным пространством выше 640К для отобра-
жения, по крайней мере, 12 страниц EMS одновременно. И фирма
Quarterdeck Office Systems, не уступая ничего DOS, разработала
расширитель ОС, называемый DESQView, который может менять местами
программы ниже и выше 640К. Если бы DESKView была способна под-
ставлять почти мгновенную операцию отображения страниц вместо от-
носительно медленного процесса обмена местами (своппинга), ее по-
тенциал в качестве высокопроизводительной многозадачной системы
для IBM PC сильно возрос бы.
Фирма AST разработала плату, способную к отображению памяти
через адресное пространство 1 Мбайт, снабдив таким образом
DESKView механизмом, необходимым для быстрого переключения между
программами. Практические ограничения, однако, препятствуют пере-
отображение тех частей адресного пространства, которые занимаются
ПЗУ BIOS, дисплейным адаптером и памятью на основной плате, необ-
ходимой для загрузки системы.
Схема EEMS на рынке пользуется ограниченным успехом. Сочета-
ние путаницы в продаже продукции, вызванной AST и Quadram, и вя-
лой поддержки ее функциональных расширений другими основными раз-
работчиками программного обеспечения персонального компьютера
ограничили ее рост в качестве главного альтернативного стандарта
для LIM EMS. Разработчики были довольны, что EEMS, по крайней ме-
ре, совместима вверх с LIM EMS, но многие из них, очевидно, не
думают, что данные расширения, которые она предлагает, стоят за-
трат, если расширения влекут за собой потерю совместимости вниз
со схемой LIM.
LIM EMS 4.0
Вне зависимости от результатов рынка кто-то в лагере LIM
должен был найти в AQA EEMS что-либо привлекательное. Поскольку
приближался к выпуску продукт фирмы Microsoft - Windows 2.0 (а
величина памяти, требовавшаяся для работы с ним, все росла), идея
получить возможность переключать задачи быстро в памяти ниже 640К
должна была приобрести заметную привлекательность. И может быть,
пространство над 640К не было заполнено целиком, поскольку даже
IBM PS/2 с контроллером дисплея VGA имел пространство для, по
- 7-8 -