Взаимодействие MS-DOS и аппаратуры IBM PC выглядит так:
MS-DOS предлагает минимальное окружение для программ пользователя. Программы работающие в MS-DOS, кроме файловой системы не используют практически ничего из стандартного системного ПО.
При разработке MS-DOS предполагалось, что при программировании аппаратуры программист должен будет воспользоваться соответствующей подсистемой MS-DOS, или функцией BIOS. Однако на практике оказалось, что программисты предпочитают программировать аппаратуру напрямую, так как это зачастую более эффективно. Так, например, почти все графические программы работают непосредственно с видеопамятью. Это связано с тем, что вывод пикселя на экран дисплея с помощью функции BIOS на два порядка медленнее, чем при непосредственном обращении к видео -памяти.
Поэтому очень распространен подход программирования «в обход» MS-DOS. При этом это довольно просто ввиду открытости IBM PC. Это привело к очень большим срокамразработки программ.
Однако, с увеличением производительности компьютеров, при разработке коммерческих программа первый план выступают не эффективность самих программ (скорость ее работы и оптимальность использования памяти), а сроки разработки и возможность их эксплуатации на всех совместимых компьютерах (программно-открытая совместимость).
Разработчик программы под MS-DOS должен был пройти следующие этапы:
1) постановка задачи;
2) разработка интерфейса;
3) разработка собственной или выбор универсальной графической библиотеки;
4) программирование внешних устройств;
5) оптимизация использования памяти - создание оверлейных структур;
6) реализовать проект с учетом совместимости с ранее разработанными библиотеками.
Таким образом, чтобы реализовать в MS-DOS задачу, нужно быть хорошим системным программистом - знать операционную систему, аппаратуру, иметь наработки по интерфейсу и машинной графике. Иметь такие знания удел очень немногих, поэтому разработка программ в MS-DOS - это достаточно элитарное занятие.
На рис.2 приведена функциональная схема взаимодействия Windows 3.1, MS-DOS и аппаратного обеспечения IBM PC.
Windows запускается на выполнение как обычная программа MS-DOS. Однако, загружаясь в оперативную память, она берет на себя почти все функции, всегда являвшиеся прерогативой операционной системы: управление памятью, выполняемыми программами, процессами дисплеем, клавиатурой, мышью, принтером и последовательными портами.
Аппаратура IBM PC при этом обслуживается как MS-DOS, так и Windows. MS-DOS управляет файловой системой. Все остальное делает Windows. В MS-DOS программа самостоятельно управляла практически всеми ресурсами IBM PC.
Программируя в Windows, вы имеете в своем распоряжении богатый набор графических процедур, работающих на всех типах графических устройств.
Для того, чтобы преобразовать универсальную графику в команды конкретного дисплея, принтера или плоттера, в Windows используются специальные драйвера устройств.
Драйверпредставляет собой библиотеку специальных выполняемых модулей, которая может быть «подсоединена» к нужному устройству и порту. После такого подключения предложение выполняет графический вывод в «контекст» устройства.
Контекст устройства - объединяет в себе драйвер устройства, само устройство и порт связи.
Приложение Windows не имеет права обращаться к устройствам напрямую, а должно использовать для этого внутренние функции Windows (более 600). Библиотека функций Windows называется API - Application Programming Interface.По существу процедурное программирование в Windows заключается в использовании функций API при сохранении структуры и синтаксиса языка С.
Основные функции Windows выполняют три системных модуля:
kernel.exe - ядро Windows, управляет памятью, загрузкой и выполнением программ;
gdi.exe - осуществляет интерфейс с графическими устройствами;
user.exe - делает все остальное.
Модули user.exe и gdi.exe взаимодействуют с аппаратурой IBM PC через драйверы устройств Windows.
В приложении Windows можно использовать многие (но не все) функции стандартной библиотеки языка Си. Но эти функции вызываются не самим приложением напрямую. Приложение обращается к Windows (к модулю kernel.exe), Windows в свою очередь полностью заменяет функцию стандартной библиотеки Си под MS-DOS на соответствующую функцию Windows.
Приведенная схема отражает только общую структуру, но не раскрывает внутренних процессов, происходящих в Windows.
В WIN32 работа MS-DOS эмулируется самой WIN32, т.е. функции, выполняемые MS-DOS, встроены в WIN32. Это позволяет рассматривать WIN32 как самостоятельную операционную систему.