На рис.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 как самостоятельную операционную систему.