Защищенный режим процессоров Intel

       

DOS-экстендеры


Вы уже наверное заметили, что все программы, приведённые в этой книге, не поддаются отладке с помощью обычных отладчиков, таких как Borland Turbo Debugger или Microsoft Code View. Эти отладчики зависают уже на этапе загрузки регистра дескрипторной таблицы прерываний IDTR, до перехода в защищённый режим дело так и не доходит. И это понятно - такие отладчики рассчитаны на обычные программы реального режима.

Другая трудность связана с тем, что программе, работающей в защищённом режиме, недоступны прерывания MS-DOS и BIOS. Программа должна работать с аппаратурой на уровне регистров и аппаратных прерываний.

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

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

Кроме того, DOS-экстендер предоставляет программе возможность обращения к прерываниям MS-DOS и BIOS! В своих программах, работающих в защищённом режиме под управлением DOS-экстендера вы можете пользоваться привычными вам функциями MS-DOS и BIOS (правда, не всеми, а только документированными). Возможности этих функций возрастут. Например, с помощью функции DOS можно будет заказать для программы буфер размером в несколько мегабайт.

Модуль DOS-экстендера, прикомпонованный к программе, может использовать интерфейсы DPMI, VCPI, XMS (драйвер HIMEM.SYS), INT15h, или может использовать собственную схему управления памятью в защищённом режиме и собственные средства переключения режима процессора или состояния адресной линии A20. В спецификации DPMI приведены рекомендации для разработчиков DOS-экстендеров по использованию перечисленных выше интерфейсов.
DOS- экстендер должен проверять наличие интерфейсов и по возможности использовать более высокоуровневый интерфейс. Проверка должна выполняться в следующем порядке:

  • DPMI
  • EMS/VCPI
  • XMS
  • Функции прерывания INT 15h
К сожалению, не все поставляющиеся DOS-экстендеры следуют этим рекомендациям. В результате могут возникнуть проблемы при попытке запустить разработанную с помощью DOS-экстендера программу на виртуальной машине WINDOWS в режиме "Enhanced 386 Mode" или в MS-DOS при установленных драйверах EMM386 или QEMM.

Необходимость обеспечения совместимости с интерфейсами DPMI, VCPI и XMS требует тщательного выбора DOS-экстендера. Так как в настоящее время операционная система WINDOWS находится в состоянии взрывообразного распространения среди пользователей персональных компьютеров, неудачный выбор DOS-экстендера может привести к тому, что огромное количество потенциальных покупателей не смогут использовать вашу программу в среде WINDOWS. То же относится и к значительному количеству пользователей дрйверов расширенной памяти EMM386 и QEMM. В документации на DOS-экстендер должно содержаться подтверждение совместимости с интерфейсами DPMI, VCPI и XMS. Такой DOS-экстендер будет совместим с современными операционными системами и драйверами расширенной памяти.

Примерами программ, созданных с использованием несовместимых с DPMI интерфейсом служат СУБД ORACLE версии 5.1 и FOXPRO версии 2.0. Эти программные продукты не будут работать на виртуальной машине WINDOWS в режиме "Enhanced 386 Mode".

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

DOS-экстендеры поставляются в комплекте с трансляторами, редакторами связей, отладчиками и библиотеками стандартных функций (например, библиотеками для транслятора языка Си).Поэтому создание и отладка программ защищённого режима, созданных с использованием DOS-экстендеров, обычно не вызывает затруднений.

Мы кратко рассмотрим возможности двух DOS-экстендеров: 386-DOS/Extender фирмы Phar Lap и виртуальную машину операционной системы WINDOWS в режиме "Enhanced 386 Mode".


Содержание раздела