Смекни!
smekni.com

взаимодействие с периферийными подсистемами, такими, как видеоплаты или

принтеры. В Windows 3.11 драйверы VxD файловой системы используются для

отыскания маршрута доступа к диску в защищенном режиме.

Упрощенная организация системы позволяет получить очень малое рабочее множество

(working set - прикладной и системный код, который необходимо загрузить в память

для любой данной задачи), поэтому Windows 3.1х может успешно выполняться на

компьютерах с ОЗУ ограниченного размера. Такая архитектура также способствует

повышению эффективности исполнения кода, так как программы могут вызывать

функции API из собственного пространства памяти. Недостаток архитектуры состоит

в слабой защите от сбоев при неправильной работе программ. Программы и системные

компоненты видимы друг для друга, модуль, содержащий ошибки, может легко

испортить содержимое памяти, принадлежащей другому процессу. Хотя Windows 3.1х

способна восстанавливать свою работоспособность после некоторых нарушений защиты

общего характера (General Protection Fault), зачастую результатом становится

крах всей системы.

Windows 3.1х одновременно выполняет несколько прикладных программ с помощью

простого механизма планирования, называемого кооперативной многозадачностью. В

этой системе каждая прикладная программа должна добровольно уступить управление,

когда, проверив свою очередь сообщений, она обнаруживает, что та пуста. Но если

прикладная программа не проверит свою очередь сообщений либо по причине

занятости, либо вследствие зависания, то другие прикладные программы лишатся

доступа к совместно используемым ресурсам.

Другой недостаток, долгое время вызывавший недовольство пользователей Windows

3.1х, - ограниченность ресурсов модулей GDI и USER. Эти ограничения возникают в

связи с тем, что системные библиотеки GDI и USER используют несколько 64-Кбайт

динамических областей (хипов) для хранения разнообразных скрытых структур

данных, создаваемых выполняющимися в данный момент прикладными программами.

Когда эти небольшие хипы переполняются, вы получаете сообщение о нехватке памяти

даже если в системе остается много свободной памяти.

WINDOWS 95

Windows 95 представляет собой продукт эволюционного развития системы Windows

3.1х и не означает полного разрыва с прошлым. Хотя она несет в себе много важных

изменений по сравнению с 16-разрядной архитектурой Windows, в ней сохранены

некоторые важнейшие свойства ее предшественницы. Результатом стало появление

гибридной ОС, способной работать с 16-разрядными прикладными программами

Windows, программами, унаследованными от DOS, и старыми драйверами устройств

реального режима и в то же время совместимой с истинными 32-разрядными

прикладными программами и 32-разрядными драйверами виртуальных устройств.

Среди наиболее важных усовершенствований явившихся в Windows 95, - изначально

заложенная в ней способность работать с 32-разрядными многопотоковыми

прикладными программами, защищенные адресные пространства, вытесняющая

многозадачность, намного более широкое и эффективное использование драйверов

виртуальных устройств и возросшее применение 32-разрядных хипов для хранения

структур данных системных ресурсов. Ее наиболее существенный недостаток состоит

в относительно слабой защищенности от плохо работающих программ, содержащих

ошибки.

Каждая собственная прикладная программа Windows 95 видит неструктурированное

4-Гбайт адресное пространство, в котором размещается она сама плюс системный код

и драйверы Windows 95. Каждая 32-разрядная прикладная программа выполняется так,

как будто она монопольно использует весь ПК. Код прикладной программы

загружается в это адресное пространство между отметками 2 и 4 Гбайт. Хотя

32-разрядные прикладные программы "не видят" друг друга, они могут обмениваться

данными через буфер обмена (Clipboard), механизмы DDE и OLE. Все 32-разрядные

прикладные программы выполняются в соответствии с моделью вытесняющей

многозадачности, основанной на управлении отдельными потоками. Планировщик

потоков, представляющий собой составную часть системы управления

виртуальнойпамятью ( VMM), распределяет время среди группы одновременно

выполняемых потоков на основе оценки текущего приоритета каждого потока и его

готовности к выполнению. Вытесняющее планирование позволяет реализовать намного

более плавный и надежный механизм многозадачности, чем кооперативный метод,

используемый в Windows 3.1х.

Системный код Windows 95 размещается выше границы 2 Гбайт. В пространстве между

отметками 2 и 3 Гбайт находятся системные библиотеки DLL кольца 3 и любые DLL

используемые несколькими программами. (В 32- разрядных процессорах фирмы Intel

предоставляются четыре уровня аппаратной защиты, поименованные, начиная с кольца

0 до кольца 3. Кольцо 0 наиболее привилегированно.) Компоненты кольца 0 в

системе Windows 95 отображаются в пространство между 3 и 4 Гбайт. Эти важные

участки кода с максимальным уровнем привилегий содержат подсистему управления

виртуальными машинами (VMM), файловую систему и драйверы VxD.

Область памяти между 2 и 4 Гбайт отображается в адресное пространство каждой

32-разрядной прикладной программы, т. е. оно совместно используется всеми

32-разрядными прикладными программами в вашем ПК. Такая организация позволяет

обслуживать вызовы API непосредственно в адресном пространстве прикладной

программы и ограничивает размер рабочего множества. Однако за это приходится

расплачиваться снижением надежности. Ничто не может помешать программе,

содержащей ошибку произвести запись в адреса, принадлежащие системным DLL, и

вызвать крах всей системы.

В области между 2 и 3 Гбайт также находятся все запускаемые вами 16-разрядные

прикладные программы Windows. С целью обеспечения совместимости эти программы

выполняются в совместно используемом адресном пространстве, где они могут

испортить друг друга так же, как и в Windows 3.1х.

Адреса памяти ниже 4 Мбайт также отображаются в адресное пространство каждой

прикладной программы и совместно используются всеми процессами. Благодаря этому

становится возможной совместимость с существующими драйверами реального режима,

которым необходим доступ к этим адресам. Это делает еще одну область памяти

незащищенной от случайной записи. К самым нижним 64 Кбайт этого адресного

пространства 32-разрядные прикладные программы обращаться не могут, что дает

возможность перехватывать неверные указатели, но 16-разрядные программы,

которые, возможно, содержат ошибки, могут записывать туда данные.

Некоторые системные DLL Windows 95, в частности USER и GDI, все еще содержат

16-разрядный код. Одно из прискорбных следствий этого состоит в том, что 64-

Кбайт локальные хипы модулей USER и GDI и сопутствующие им ограничения системных

ресурсов по-прежнему остаются. К счастью, в Windows 95 некоторые структуры

данных переместились в 32-разрядные хипы, благодаря чему теперь стало намного

сложнее истощить системные ресурсы, чем в среде Windows 3.1х. Другая проблема,

связанная c l6-разрядным системным кодом, - эффект Win16Mutex. Так как

16-разрядный системный код нереентерабелен, только один поток может обращаться к

16-разрядным DLL в каждый момент времени, потенциально затормаживая другие

процессы, которым нужен доступ к этим библиотекам.

Windows NT Workstation

Windows NT Workstation 3.51 по существу представ лает собой операционную систему

сервера, приспособленную для использования на рабочей станции. Этим обусловлена

архитектура, в которой абсолютная защита прикладных программ и данных берет верх

над соображениями скорости и совместимости. Чрезвычайная надежность Windows NT

обеспечивается ценой высоких системных затрат, поэтому для получения приемлемой

производительности необходимы быстродействующий ЦП и по меньшей мере 16-Мбайт

ОЗУ. В системе Windows NT безопасность нижней памяти достигается за счет отказа

от совместимости с драйверами устройств реального режима. В среде Windows NT

работают собственные 32-разрядные NT-прикладные программы, а также большинство

прикладных программ Windows 95. Так же как и Windows 95, система Windows NT

позволяет выполнять в своей среде 16-разрядные Windows- и DOS-программы.

Схема распределения памяти Windows NT разительно отличается от распределения

памяти системы Windows 95. Собственным прикладным программам выделяется 2 Гбайт

особого адресного пространства, от границы 64 Кбайт до 2 Гбайт (первые 64 Кбайт

полностью недоступны). Прикладные программы изолированы друг от друга, хотя

могут общаться через буфер обмена Clipboard, механизмы DDE и OLE.

В верхней части каждого 2-Гбайт блока прикладной программы размещен код,

воспринимаемый прикладной программой как системные библиотеки DLL кольца 3. На

самом деле это просто заглушки, Выполняющие перенаправление вызовов, называемые

DLL клиентской стороны (client-side DLLs). При вызове большинства функций API из

прикладной программы библиотеки DLL клиентской стороны обращаются к локальным

процедурам (Local Process Communication - LPC), которые передают вызов и

связанные с ним параметры в совершенно изолированное адресное пространство, где

содержится собственно системный код. Этот сервер-процесс (server process)

проверяет значение параметров, исполняет запрошенную функцию и пересылает

результаты назад в адресное пространство прикладной программы. Хотя

сервер-процесс сам по себе остается прикладного уровня, он полностью защищен от

вызывающей его программы и изолирован от нее.

Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компоненты

Windows NT кольца 0, в том числе ядро, планировщик потоков и диспетчер

виртуальной памяти. Системные страницы в этой области наделены привилегиями

супервизора, которые задаются физическими схемами кольцевой защиты процессора.