Рефераты. DOS-extender для компилятора Borland C++ 3.1

DOS-extender для компилятора Borland C++ 3.1

Министерство образования Республики Беларусь Белорусский Государственный

Университет Информатики и Радиоэлектроники

Кафедра ЭВМ

Пояснительная записка к курсовому проекту по курсу

"СПO ЭВМ", на тему:

"DOS-extender для компилятора Borland C++ 3.1, защищенный режим процессора 80286, организация многозадачной работы процессора”

Выполнил: студент группы 500501

Балахонов Е.В.

Минск 2000

Оглавление.

1. Введение. 2
1.1 Уровни программной поддержки защищенного режима. 2

1.1.1 Интерфейс BIOS. 2

1.1.2 интерфейс драйвера HIMEM.SYS. 2

1.1.3 интерфейс EMS/VCPI. 3

1.1.4 интерфейс DPMI. 3

1.1.5 расширители DOS (DOS-экстендеры). 3
1.2 Текущее положение дел в мире DOS-extender-ов. 4
2. Обоснование выбора средств. 4
3. Реализация работы программы в защищенном режиме процессора 80286. 5
3.1 Адресация защищенного режима процессора 80286. 5
3.2 Переход в защищенный режим процессора 80286 8
3.3 Возврат в реальный режим процессора. 10
3.4 Обработка прерываний в защищенном режиме. 11
3.5 Реализация мультизадачности. 13

3.5.1 Контекст задачи. 14

3.5.2 Переключение задач. 15

3.5.3 Разделение ресурсов. 16

3.5.4 Задачи. 16
4. Полные исходные тексты программы. 17
4.1 Файл TOS.INC. Определение констант и структур для модулей, составленных на языке ассемблера. 17
4.2 Файл TOS.H. Определение констант и структур для модулей, составленных на языке Си. 18
4.3 Файл TOS.H. Основной файл программы. 19
4.4 Файл TASKS.C. Содержит функции задач. 24
4.5 Файл SEMAPHOR.C. Содержит процедуры для работы с семафорами. 26
4.6 Файл TIMER.C. Процедуры для работы с таймером и диспетчер задач. 27
4.7 Файл EXCEPT.C. Обработка исключений. 28
4.8 Файл INTPROC.C. Заглушки для аппаратных прерываний. 29
4.9 Файл KEYB.C. Ввод символа с клавиатуры. 30
4.10 Файл KEYBOARD.ASM. Процедуры для работы с клавиатурой. 30
4.11 Файлы SCREEN.H и SCREEN.C – модуль для работы с видеоадаптером. 34

4.11.1 SCREEN.H 34

4.11.2 SCREEN.C 34
4.12 Файл TOSSYST.ASM. Процедуры для инициализации, перехода в защищённый режим и возврата в реальный режим, для загрузки регистра TR и переключения задач. 36
5. Выводы. 41
6. Литература. 41

1. Введение.

Операционная система MS DOS, не смотря на свое моральное устаревание, все еще довольно часто находит применение на парке старых ПК, а значит, все еще существует необходимость создания программ для нее.

К сожалению, написание программ в реальном режиме процессоров архитектуры Intel x86 осложнено отсутствием возможности использовать в программе оперативную память объемом свыше пресловутых 640 килобайт, а реально свыше 500-620 килобайт. Это ограничение к сожалению преследует MS
DOS и аналогичные ей ОС других производителей, начиная с того момента, как горячо любимый в околокомпьютерных кругах Билл Гейтс заявил, что 640 килобайт достаточно для всех возможных задач ПК. Преодоление барьера 640 килобайт в новых версиях MS DOS усложнялось необходимостью совместимости с старыми программами, которые жизненно необходимо было поддерживать.
Программирование защищенного режима процессора и расширенной памяти требовало от программистов недюжинных знаний архитектуры процессоров Intel и достаточно трудоемкого программирования.


1.1 Уровни программной поддержки защищенного режима.

Инженерная мысль не стоит на месте, особенно в такой области, как программирование. Задача программной поддержки защищённого режима и поддержки работы с расширенной памятью получила не одно, а сразу несколько решений. Этими решениями стали так называемые уровни программной поддержки защищённого режима и поддержки работы с расширенной памятью:

. интерфейс BIOS;

. интерфейс драйвера HIMEM.SYS;

. интерфейс EMS/VCPI;

. интерфейс DPMI;

. расширители DOS (DOS-экстендеры).

1.1.1 Интерфейс BIOS.

Интерфейсом самого низкого уровня является интерфейс BIOS, предоставляемый программам в виде нескольких функций прерывания BIOS
INT 15h. Интерфейс BIOS позволяет программе перевести процессор из реального режима в защищённый, переслать блок памяти из стандартной памяти в расширенную или из расширенной в стандартную. Этим все его возможности и ограничиваются. Интерфейс BIOS используется для старта мультизадачных операционных систем защищённого режима (таких, как OS/2) или в старых программах, работающих с расширенной памятью в защищённом режиме (например,
СУБД ORACLE версии 5.1).

1.1.2 интерфейс драйвера HIMEM.SYS.

С помощью функций, предоставляемых этим драйвером, программа может выполнять различные действия с блоками расширенной памяти, а также управлять адресной линией A20. Основное различие между способом работы с расширенной памятью драйвера HIMEM.SYS и интерфейсом прерывания BIOS
INT 15h заключается в том, что первый выполняет выделение программе и внутренний учёт блоков расширенной памяти, а второй рассматривает всю расширенную память как один непрерывный участок. Однако драйвер HIMEM.SYS не открывает для программ доступ к защищённому режиму. Он полностью работает в реальном режиме, а для обращения к расширенной памяти использует либо недокументированную машинную команду LOADALL (если используется процессор 80286), либо возможности процессора 80386, который позволяет адресовать расширенную память в реальном режиме (при соответствующей инициализации системных регистров и таблиц).

1.1.3 интерфейс EMS/VCPI.

Используя трансляцию страниц, некоторые драйверы памяти (например,
EMM386 или QEMM) могут эмулировать присутствие дополнительной памяти, используя расширенную память. При этом стандартный набор функций управления дополнительной памятью, реализованный в рамках прерывания INT 67h, дополнен еще несколькими функциями для работы в защищённом режиме процессора. Эти новые функции реализуют интерфейс виртуальной управляющей программы VCPI
(Virtual Control Programm Interface). Они позволяют устанавливать защищённый и виртуальный режимы работы процессора, работать с расширенной памятью на уровне страниц и устанавливать специальные отладочные регистры процессора i80386. Интерфейс VCPI облегчает использование механизма трансляции страниц, освобождая программиста от необходимости работать с системными регистрами процессора.

1.1.4 интерфейс DPMI.

Интерфейс DPMI (DOS Protected Mode Interface - интерфейс защищённого режима для DOS) реализуется модулем, называющимся сервером DPMI. Этот интерфейс доступен для тех программ, которые работают на виртуальной машине
WINDOWS или OS/2 версии 2.0 (позже мы обсудим некоторые детали, связанные с использованием интерфейса DPMI в WINDOWS). Интерфейс DPMI предоставляет полный набор функций для создания однозадачных программ, работающих в защищённом режиме. В этом интерфейсе имеются функции для переключения из реального режима в защищённый и обратно, для работы с локальной таблицей дескрипторов LDT, для работы с расширенной и стандартной памятью на уровне страниц, для работы с прерываниями (в том числе для вызова прерываний реального режима из защищённого режима), для работы с отладочными регистрами процессора i80386. Это наиболее развитый интерфейс из всех рассмотренных ранее.

1.1.5 расширители DOS (DOS-экстендеры).

Последний, самый высокий уровень программной поддержки защищённого режима - расширители DOS или DOS-экстендеры (DOS-extender). Они поставляются, как правило, вместе со средствами разработки программ
(трансляторами) в виде библиотек и компонуются вместе с создаваемой программой в единый загрузочный модуль. DOS-экстендеры значительно облегчают использование защищённого режима и расширенной памяти в программах, предназначенных для запуска из среды MS-DOS. Программы, составленные с использованием DOS-экстендеров, внешне очень похожи на обычные программы MS-DOS, однако они получают управление, когда процессор уже находится в защищённом режиме. К формируемому с помощью DOS-экстендера загрузочному модулю добавляются процедуры, необходимые для инициализации защищённого режима. Эти процедуры первыми получают управление и выполняют начальную инициализацию таблиц GDT, LDT, IDT, содержат обработчики прерываний и исключений, систему управления виртуальной памятью и т.д.

1.2 Текущее положение дел в мире DOS-extender-ов.

Еще несколько лет назад целые фирмы зарабатывали себе на существование созданием различных модификаций DOS extender-ов. Например довольно известный externder фирмы Phar Lap. После перехода большинства пользователей в среду Win32 необходимость в DOS extender-ах резко сократилась и большинство таких фирм, не сумев сориентироваться в изменившихся условиях, прекратили свое существование.

Многие фирмы, разрабатывавшие компиляторы для DOS, включали в поставку своих сред программирования DOS-extender-ы собственной разработки. Таким примером может служить фирма Borland (ныне подразделение фирмы Corel) с ее
Borland Pascal, Borland C++ и расширителем DOS RTM.

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

Примеры таких программ:

- ZRDX by Sergey Belyakov (http://www.zrdx.da.ru)

Маленький и функциональный DOS-extender для Watcom C++ и 32-х битных исполняемых файлов формата OS/2 LE. Используется в коммерческих программах, таких как антивирус AVP для DOS32.

- WDOSX by Michael Tippach (http://www.wuschel.demon.co.uk)

Самый впечатливший меня DOS-extender. Список поддерживаемых функций просто поражает. Поддерживает все распространенные среды программирования: Visual C++ 4 и позже, Borland C++ 4 и позже,

Delphi 2 и позже. При желании никто не запрещает использовать

Assembler.

2. Обоснование выбора средств.

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

В настоящий момент науке известны всего один DOS-extender для Borland
C++ 3.1. Это программа фирмы Phar Lap, не имеющая собственного названия.
Фирмы, к сожалению, давно уже нет, как и исходных текстов этого DOS- extender-а. В него входил собственная программа – линкер и набор специальных библиотек функций специально для Borland C++ 3.1, которой и проводилась окончательная сборка EXE-файла.

Написание собственной среды разработки, вроде программ-линкеров и собственных трансляторов языка Ассемблера явно выходит за переделы данного курсового проекта. Поэтому остановимся на разработке набора функций, позволяющих:

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.