На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 7 / Урок истории Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Урок истории

Включение спецификации расширенной памяти в MS-DOS 4.0 сделало полноправным данный стандарт в качестве метода увеличения памяти во всех системах MS-DOS. Несмотря на все возрастающее быстродействие и сложность IBM-совместимых персональных компьютеров на базе DOS, их предельные аппаратурная и программная производительность была подвержена ограничениям, накладываемым структурой системы и архитектурой процессора 8088, встроенными в исходный персональный компьютер IBM. До недавнего времени один из таких пределов, барьер 640К, являлся постоянным источником затруднений для пользователей и программистов систем MS-DOS. Обозначающий максимальную величину ОЗУ пользователя, поддерживаемого MS-DOS, предел памяти в 640К появлялся в качестве постоянного препятствия к неумолимой тенденции разрабатывать и применять более мощные программные средства.


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


Вся промышленность персональных компьютеров вступила в настоящее время в сотрудничество для создания работающего решения для преодоления предела памяти в MS-DOS по схеме расширения памяти, именуемой расширенной памятью, которая обеспечивает программам MS-DOS доступ максимум к 32 мегабайтам ОЗУ помимо 640К, поддерживаемых MS-DOS. К сожалению, расширенная память не может использоваться приложениями MS-DOS автоматически. Любая программа должна писаться специальным образом для ее распознавания и применения. Хотя процесс распознавания и применения не является автоматическим, он не особенно сложный или загадочный. Данная глава обеспечит Вам основы и знания, необходимые для добавления этого мощного средства к Вашей собственной базе программирования.


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


Наиболее известным из программных интерфейсов является Lotus /Intel/Microsoft Expanded Memory Specification (LIM EMS) - спецификация расширенной памяти названных фирм. Впечатляющее множество коммерчески доступных систем пользуется расширенной памятью LIM EMS для снятия ограничения DOS. Windows 2.0 фирмы Microsoft и DESQView фирмы Quarterdeck Office Systems используют расширенную память для облегчения нескольких многозадачных приложений. Lotus 1-2-3 и Symphony, Excel фирмы Microsoft, AutoCAD фирмы Autodesk и другие популярные прикладные программы - все используют расширенную память для предоставления пользователям средств решения более объемных и более сложных задач реального мира. PC-DOS и MS-DOS 4.0 содержат драйверы, которые поддерживают стандарт LIM EMS, как часть операционной системы, хотя ранние версии DOS 4.0, по-видимому, не поддерживают функцию 19h EMS, функцию Get/Set Handle Attribute, а первые поставленные с системой драйверы содержали ошибки. PC-DOS и MS-DOS 4.0 используют память LIM EMS 4.0 для буферизации секторов из открытых файлов (управляемая параметром BUFFERS в файле CONFIG.SYS) и проверки элементов каталогов (которую команда FASTOPEN предоставляет с DOS 3.3 и более поздних версий). Первые версии MS-DOS 4.0, видимо, не используют средства многозадачности LIM EMS 4.0 никоим образом. (Заметьте, что во всей данной главе, всегда когда мы ссылаемся на версию 4.0 MS-DOS, мы также включаем и PC-DOS 4.0, если специально не указано иное.)


В данной главе проводится глубокий обзор методов, необходимых для использования расширенной памяти в Ваших собственных программных проектах. Расширенная память может быть мощным, многосторонним средством, увеличивающим возможности Ваших программ для обработки более объемных задач, для быстрого доступа к большим базам данных по заказу, хранящихся на диске, для разделения данных с другими программами или для уменьшения памяти DOS, которая им требуется.


Вы можете удивиться, когда узнаете, что Ваш персональный компьютер даже не нуждается в каком-либо специальном оборудовании или платах дополнительной памяти для Вас, чтобы записывать, тестировать и выполнять приложения расширенной памяти. В данной главе объясняется, каким образом программное обеспечение эмуляции расширенной памяти может снабдить Вас недорогим средством для разработки приложений расширенной памяти.


Вы узнаете, как расширенная память подгоняется к архитектуре аппаратурного и программного обеспечения персональных компьютеров, совместимых с IBM PC. Вы также узнаете о соглашениях по программированию и протоколах, которые необходимы для того, чтобы использовать расширенную память без вмешательства в другие приложения, включая:


- Как определить, когда на персональном компьютере присутствует расширенная память, и, если присутствует, то, сколько ее установлено.


- Как разместить, освободить и работать с до 32 мегабайтами расширенной памяти, с помощью интерфейса прерывания 67h менеджера расширенной памяти, определенного спецификацией расширенной памяти Lotus/Intel/Microsoft.


- Как эксплуатировать функциональные и легко используемые усовершенствования, включенные в последнюю версию (4.0) LIM EMS.


- Как интерпретировать и реагировать на условия ошибок, возвращаемые подсистемой расширенной памяти.


В данной главе мы дадим ссылочные материалы, подробно определяющие конкретный механизм прерываний и соглашения по использованию регистров, требующиеся для применения интерфейса программирования LIM EMS. Мы также поможем Вам определять типы структур данных, которые наиболее пригодны для сохранения в расширенной памяти.


Мы проследим историю и мотивы спецификации расширенной памяти Lotus/Intel/Microsoft и усовершенствованной спецификации расширенной памяти AST/Qadram/Ashton-Tate (AQA EEMS). Вы увидите, каким образом различные средства этих стандартов включаются для способствования преодоления ограничениям памяти DOS для почти любого типа программ, включая драйверы устройств, утилиты, остающиеся резидентно в памяти после завершения, и усовершенствования ОС. В данной главе будут приведены соображения по технике и совместимости, относящиеся к каждой из спецификаций расширенной памяти, включая поддержку EMS 4.0, встроенную в MS-DOS 4.0, так, что приложения, которые Вы пишете, будут совместимы с широчайшим множеством реализаций расширенной памяти.


Для того, чтобы Вы могли начать программировать расширенную память, в данной главе содержится ряд программ интерфейса низкого уровня, написанных на языке С фирмы Microsoft версия 5.0, и пример приложения. Пример состоит из двух законченных, работающих программ и дает Вам демонстрацию от начала до конца ключевых методов программирования LIM EMS, представленных в данной главе. Некоторые из сложных способов, иллюстрируемых данным приложением, включают в себя разделение данных между двумя программами и использование расширенной памяти в программе обслуживания прерывания.


Мы начинаем рассмотрение опций расширенной памяти с истории и событий в промышленности персональных компьютеров, совместимых с IBM, которые вызвали ее разработку и использование.


В 1981 г. типичный персональный компьютер мог адресовать не более 64 килобайт основной памяти. Серьезные программисты, работавшие на этих машинах, тратили неординарное количество времени для наскребывания последних нескольких байтов, необходимых для введения еще одного дополнительного средства. Появление персонального компьютера IBM с ОЗУ, которое было на порядок величины больше, чем у предшественников, казалось предлагает продолжительный перерыв в нехватке памяти.


Едва прошло три года, аналог закона Паркинсона для памяти ЦВМ (работа расширяется, чтобы заполнить время, доступное для ее выполнения) обеспечил для IBM PC то же, что было для всех предыдущих поколений ЦВМ. Сегодня электронные таблицы, интегрированные приложения, сети и поток резидентных утилит сделали пространство памяти IBM PC столь же заполненным и ограниченным, как и у предшественников.


Идеального решения для предела ОЗУ не существует. Даже, хотя микропроцессор Intel 8088 в IBM PC поддерживает адресное пространство 1 Мбайт, 384 Кбайт адресного пространства между 640К и пределом адресации 1 Мбайт зарезервированы для буферов видеоадаптеров, системного и Бейсик ПЗУ и модулей ПЗУ BIOS других плат ввода/вывода. Новые приложения PC-DOS загнаны в ловушку в границах 640 Кбайт пользовательского ОЗУ, с которым семейство IBM PC было рождено.


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


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz