Операционная система Microsoft Windows 3.1 для программиста -том 3


Управление памятью - часть 2


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

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

Поэтому, если создаваемое вами приложение должно работать с нестандартной аппаратурой в режиме реального времени, использовать канал прямого доступа к памяти или аппаратные прерывания, вы должны создать собственный виртуальный драйвер и поставлять его вместе с приложением. Для разработки драйверов вам необходимо приобрести Microsoft Driver Development Kit for Windows 3.1, в состав которого, кроме документации и исходных текстов некоторых стандартных драйверов входит специальная версия ассемблера и редактора связей, а также утилиты, необходимые для создания виртуальных драйверов.

Разработка драйверов для Windows - тема для отдельной книги, которая, возможно, еще будет нами написана. Сейчас мы хотели бы подчеркнуть, что в операционной системе Windows обычные приложения никогда не обращаются напрямую к аппаратуре и не работают с системными областями памяти, такими, как таблицы дескрипторов прерываний или видеопамять.


Начало  Назад  Вперед