В этой статье Вы познакомитесь с типами программных компонентов, которые можно создавать для Microsoft® Windows 95, и узнаете, какие средства этой операционной системы они могут использовать.
Программные компоненты
Операционная среда Windows 95 состоит из аппаратных устройств компьютера и следующих программных компонентов:
• диспетчера виртуальных машин (Virtual Machine Manager, VММ);
• виртуальных устройств (Virtual Devices, VxDs);
• ПЗУ (ROM) базовой системы ввода/вывода (Basic Input and Output System, BIOS);
• устанавливаемых драйверов устройств (installable device drivers) и рези- дентных программ (Terminate and Stay Resident, TSRs);
• 16- и 32-разрядных динамически подключаемых библиотек (Dynamic-Link Libraries, DLLs) операционной системы Windows 95;
• программ Microsoft® MS-DOS;
• 16- и 32-разрядных Windows-приложений.
Диспетчер виртуальных машин
Диспетчер виртуальных машин (далее VMM) — 32-битная операционная система защищенного режима, действующая на уровне ядра Windows 95 и отвечающая главным образом за создание, запуск, отслеживание и завершение виртуальных машин. VММ предоставляет различные виды сервисов, управляющих памятью, процессами, прерываниями и исключениями (например, нарушениями общей защиты). Работая совместно с виртуальными устройствами — 32-разрядными модулями защищенного режима, он позволяет им генерировать прерывания и нарушения, что обеспечивает контроль за доступом приложений к аппаратным устройствам и программным компонентам, установленным на компьютере.
Как VMM, так и виртуальные устройства исполняются в едином 32-разрядном линейном адресном пространстве с нулевым уровнем привилегий (также называемым кольцом 0). Система создает два селектора глобальной таблицы дескрипторов (Global Descriptor Table, GDT) — один для кода, другой для данных — и использует их в сегментных регистрах CS, DS, SS и ES. Базовый адрес обоих селекторов равен нулю, а предельное значение ограничено 4 гигабайтами (Гб), поэтому все сегментные регистры указывают на один и тот же диапазон адресов. VMM и виртуальные устройства никогда не изменяют содержимое этих регистров.
VMM обеспечивает вытесняющую многозадачность (preemptive multitasking) с многопоточностью (multithreading). Он способен исполнять несколько приложений одновременно, распределяя процессорное время между виртуальными машинами, в которых собственно и исполняются эти приложения. Кроме того, следует отметить, что VMM нереентерабелен, т.е. виртуальным устройствам приходится синхронизировать свой доступ к сервисам VMM. А для этого в нем предусмотрены такие сервисы, как семафоры (semaphores) и события (events).
Подробнее о VMM (и описание сервисов, предназначенных для виртуальных устройств) см. в документации из Microsoft Windows 95 DDK (Device Driver Kit).
Виртуальные устройства
Виртуальные устройства (VxDs) — это 32-разрядные программы, которые обеспечивают аппаратную независимость VMM, принимая на себя управление аппаратными устройствами и программными средствами компьютера. VxD поддерживают все аппаратные устройства обычного компьютера, включая программируемый контроллер прерываний (Programmable Interrupt Controller, PIC), таймер, устройство прямого доступа к памяти (Direct Memory Access, DMA), дисковый контроллер, параллельный и последовательные порты, клавиатуру и видеоадаптер. VxD необходим любому аппаратному устройству, способному работать в нескольких режимах или запоминающему данные на какой-то промежуток времени. Иными словами, если состояние аппаратного устройства может быть нарушено из-за переключения между несколькими виртуальными машинами или приложениями, значит, данному устройству необходимо соответствующее VxD.
Некоторые VxD поддерживают программные, а не аппаратные устройства. В целом, VxD могут предоставлять VММ и другим виртуальным устройствам любой сервис. Windows 95 позволяет устанавливать новые драйверы виртуальных устройств для поддержки дополнительных аппаратных устройств или какого-нибудь общесистемного программного сервиса.
Кроме того, в VxD может быть предусмотрен набор API-функций для приложений, исполняемых в виртуальном 8086-м или защищенном режиме. Такие функции обеспечивают приложениям прямой доступ к функциональным возможностям VxD.
В Windows 95 включен IOCTL-интерфейс устройств (Input and Output Control Interface — интерфейс управления вводом/выводом), позволяющий приложе- ниям на базе Microsoft® Win32® напрямую обращаться к VxD. Через этот интерфейс обычно вызывают отдельные системные функции MS-DOS, получают информацию о каком-то устройстве или выполняют операции ввода/вывода, недоступные через стандартные Win32-функции. Драйверы устройств
Драйвер устройства в Windows — это DLL, используемая операционной системой для взаимодействия с аппаратным устройством (например, видеоадаптером или клавиатурой). Избегая прямого доступа к аппаратным средствам, Windows загружает драйверы устройств и, чтобы заставить эти устройства выполнить те или иные действия, вызывает функции их драйверов. Каждый драйвер устройства экспортирует свой набор функций, благодаря которым Windows и вычерчивает окружности или преобразует скэн-коды. клавиатуры. Естественно, в функциях драйверов присутствует аппаратно-зависимый код, необходимый для управления конкретным устройством на самом низком уровне.
Windows требует драйверов устройств для видеоадаптера, клавиатуры и коммуникационных портов. Если в системе есть дополнительные устройства, для них тоже нужны свои драйверы.
Ресурсы, нужные независимым поставщикам аппаратных (Independent Hardware Vendors, IHVs) и программных средств (Independent Software Vendors, ISVs) для создания драйверов устройств и VxD, совместимых с операционной системой Windows 95, предоставляет Windows 95 DDK. К ним относятся конфигурируемая среда разработки, документация, инструментальные средства, а также заголовочные файлы и библиотеки для нескольких типов устройств. Windows 95 DDK содержит следующие компоненты:
• заголовочные файлы и библиотеки для разработки драйверов устройств и VxD;
• примеры исходного кода драйверов устройств и VxD;
• 16- и 32-разрядные версии инструментальных средств, предназначенных для разработки драйверов. Динамически подключаемые библиотеки Механизм динамического связывания позволяет подключать приложения к библиотекам функций в период выполнения (runtime). Библиотеки содержатся в собственных исполняемых файлах и не копируются в исполняемые файлы программ — как при статическом связывании. Они потому и "связываются динамически", что подключаются к программе не на стадии ее сборки, а при ее загрузке и исполнении. Когда приложение обращается к какой-нибудь DLL, операционная система загружает ее в память, преобразует ссылки на ее функции в соответствующие адреса (чтобы приложение могло вызывать эти функции) и выгружает DLL из памяти, как только необходимость в ней отпадает. Динамическое связывание может осуществляться явно (приложением) или неявно (операционной системой).
DLL-модули разрабатываются как источники ресурсов для приложений. Код в DLL могут использовать сразу несколько программ, а значит, в системе присутствует только один экземпляр этого кода. Кроме того, DLL можно обновлять, не меняя код приложений, использующих этот модуль, — если, конечно, не меняется интерфейс вызова его функций.
Разработчики программного обеспечения могут расширять Windows-среду, создавая DLL -модули с процедурами, позволяющими выполнять какие-либо операции и доступными Windows-приложениям (в дополнение к внутренним процедурам Windows). DLL-модули обычно хранятся как файлы с расширением DLL, но могут храниться и в файлах с другим расширением (ЕХЕ и др.).
Windows 95 поддерживает как 32-разрядные DLL, так и 16-разрядные (написанные для Windows версий З.x). 0 совместном использовании 16- и 32-разрядных компонентов в среде Windows 95 см. статью 32 "Компилятор шлюзов". Программы МS-DOS Windows 95 поддерживает и программы, написанные для MS-DOS. Любую из них можно запускать как в полноэкранном режиме, так и в окне (на рабочем столе Windows 95).
Операционная система способна выполнять сразу несколько программ MS- DOS. В этом случае для каждой программы она создает отдельную виртуальную машину (VM) и распределяет процессорное время между ними и системной VM (в которой исполняются все Windows-приложения). VM может исполнять программу MS-DOS либо в виртуальном 8086-м, либо в защищенном режиме.
Несмотря на то, что большинство программ MS-DOS прекрасно работают и в окне, и в полноэкранном режиме, с отдельными программами MS-DOS дело обстоит все же не так гладко. Поэтому, чтобы добиться абсолютной "преемственной" совместимости для всех программ MS-DOS, в Windows 95 предусмотрен особый режим их исполнения — MS-DOS mode (Режим MS-DOS). В этом режиме Windows 95 единовременно исполняет только одну программу MS-DOS, которой отдаются все ресурсы компьютера (такой режим иногда называют монопольным). Но ни одно Windows-приложение в монопольном режиме не работает; более того, в этом случае операционная система даже не загружает компоненты графического пользовательского интерфейса (Graphical User Interface, GUI).
Windows 95 поддерживает все системные функции и прерывания MS-DOS и предоставляет расширения, позволяющие программам MS-DOS использовать длинные имена файлов и такие функциональные возможности Windows 95, как монопольная блокировка дисковых томов, сервисы виртуальных машин и поддержка информационных файлов программ (PIF-файлов).
Дисковые утилиты и прочие программы, напрямую модифицирующие структуры файловой системы (скажем, элементы каталогов), прежде чем вносить в них какие-то изменения, должны требовать монопольного использования тома. А для этого в Windows 95 предусмотрен набор IOCTL-функций. Монопольное использование тома позволяет избежать случайного изменения состояния файловой системы каким-нибудь приложением в тот момент, когда его модифицирует дисковая утилита.
Сервисы виртуальных машин позволяют программам MS-DOS задействовать преимущества Windows 95 при выполнении в окне. Эти программы могут считывать и устанавливать заголовок своего окна. Кроме того, сервисы виртуальных машин дают возможность программам MS-DOS периодически проверять состояние внутреннего флага — признака закрытия и завершать свою работу, если этот флаг установлен. Windows 95 устанавливает этот флаг, когда пользователь выбирает команду Close (Закрыть) из системного меню окна, в котором выполняется программа MS-DOS. В этом случае пользователь получает альтернативный способ выхода из программы и закрытия ее окна. Приложения могут создавать, просматривать и модифицировать PIF-файлы. Эти файлы содержат подробную информацию, необходимую операционной системе для подготовки виртуальных машин, исполняющих программы MS- DOS. Программы установки и прочие приложения могут открывать PIF-файлы и разрешать пользователю редактировать их содержимое. Windows-приложения Windows 95 поддерживает как 16-разрядные программы, написанные для Windows версий З.х, так и 32-разрядные приложения, использующие API-интерфейсы Win32 или Microsoft® Win32s®. Для 16-разрядных приложений Windows 95 реализует ту же модель кооперативной многозадачности (cooperative multitasking), что и в Windows З.х, т.е. все такие программы совместно используют одно виртуальное адресное пространство, одну очередь сообщений (message queue) и один поток исполнения. В то же время у каждого 32- разрядного Windows-приложения свое адресное пространство, своя очередь сообщений и свои один или несколько потоков исполнения. Кроме того, каждый 32-битный поток работает в условиях вытесняющей многозадачности.
Любые новые приложения должны быть 32-разрядными и использовать Win32 API.
Руководство программиста москва 2005 Подразумевается, что читатель имеет навыки программирования на одном, или нескольких языках для операционных систем Windows nt /...
Загрузчик ос windows Vista/7 Одно из них — способ управления загрузчиком Windows, программой, которая обеспечивает хранение более одной операционной системы на...
Безопасность Windows в Интернет В настоящее время стало очень модно полагать, что опеpационные системы Windows nt и Windows 95 имеют кучу ошибок в защите пpи pаботе...