Обзор архитектуры Windows 3.x,Windows 95,OS2 Warp,Windows NT


WINDOWS 95 - часть 2


Системный код 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.1x.

Адреса памяти ниже 4 Мбайт также отображаются в адресное пространство каждой прикладной программы и совместно используются всеми процессами. Благодаря этому становится возможной совместимость с существующими драйверами реального режима, которым необходим доступ к этим адресам. Это делает еще одну область памяти незащищенной от случайной записи. К самым нижним 64 Кбайт этого адресного пространства 32-разрядные прикладные программы обращаться не могут, что дает возможность перехватывать неверные указатели, но 16-разрядные программы, которые, возможно, содержат ошибки, могут записывать туда данные.

Некоторые системные DLL Windows 95, в частности USER и GDI, все еще содержат 16-разрядный код. Одно из прискорбных следствий этого состоит в том, что 64-Кбайт локальные хипы модулей USER и GDI и сопутствующие им ограничения системных ресурсов по-прежнему остаются. К счастью, в Windows 95 некоторые структуры данных переместились в 32-разрядные хипы, благодаря чему теперь стало намного сложнее истощить системные ресурсы, чем в среде Windows 3.1x. Другая проблема, связанная с 16-разрядным системным кодом, - эффект Win16Mutex. Так как 16-разрядный системный код нереентерабелен, только один поток может обращаться к 16-разрядным DLL в каждый момент времени, потенциально затормаживая другие процессы, которым нужен доступ к этим библиотекам.




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