Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 100
Текст из файла (страница 100)
Другими словами, виртуальные адресные пространства не задействуют всех аппаратных средств защиты, заложенных в микропроцессор. В результате неправильно написанная 32-разрядная прикладная программа может привестик аварийному сбою всей системы. Все 16-разрядные прикладные программы Windows разделяют общее адресное пространство, поэтому они так же уязвимы другдля друга, как и в среде Windows 3.X.Собственно системный код Windows 9x размещается выше границы 2 Гбайт.
В пространстве с отметками 2 и 3 Гбайт находятся системные библиотеки DLL, используемые несколькими программами. Напомним, что в 32-разрядных микропроцессорахсемейства i80x86 имеется четыре уровня защиты, именуемые кольцами с номерамиот 0 до 3. Кольцо с номером 0 является наиболее привилегированным, то есть максимально защищенным. Компоненты операционных систем Windows 9x, относящиеся к кольцу 0, отображаются на виртуальное адресное пространство между3 и 4 Гбайт. К этим компонентам относятся собственно ядро Windows, подсистемауправления виртуальными машинами, модули файловой системы и драйверы виртуальных устройств (VxD).Область памяти между 2 и 4 Гбайт адресного пространства каждой 32-разряднойприкладной программы совместно используется всеми 32-разрядными прикладными программами.
Такая организация позволяет обслуживать вызовы API непосредственно в адресном пространстве прикладной программы и ограничиваетразмер рабочего множества. Однако за это приходится расплачиваться снижением надежности. Ничто не может помешать программе, содержащей ошибку, произвести запись в адреса, принадлежащие системным библиотекам DLL, и вызватькрах всей системы.В области между 2 и 3 Гбайт также находятся все запускаемые 16-разрядные прикладные программы Windows. С целью обеспечения совместимости эти програм-Глава 1 1 . Операционные системы Windows376мы выполняются в совместно используемом адресном пространстве, где они могут испортить друг друга так же, как и в Windows 3.x.Адреса памяти ниже 4 Мбайт также отображаются в адресное пространство каждой прикладной программы и совместно используются всеми процессами. Благодаря этому становится возможной совместимость с существующими драйверамиреального режима, которым необходим доступ к этим адресам.
Это делает еще однуобласть памяти не защищенной от случайной записи. К самым нижним адресам(менее 64 Кбайт) этого адресного пространства 32-разрядные прикладные программы обращаться не могут, что дает возможность перехватывать неверные указатели, но 16-разрядные программы, которые, возможно, содержат ошибки, могут записывать туда данные.Вышеизложенную модель распределения памяти можно проиллюстрировать спомощью рис. 11.1.4 ГбайтСистемные компоненты,относящиеся к кольцу защиты О3 Гбайт- Системные библиотеки DLL- Прикладные программы Win 16Адреса между 2 и 4 Гбайтотображаются в адресное пространствокаждой 32-разрядной программыи используются совместно- Совместно используемыебиблиотеки DLL2 ГбайтПрикладные 32-разрядныепрограммыВ этой области адресного пространствау каждой прикладной программырасполагается свое собственноеадресное пространство.
«Личные» адресныепространства других программ невидимыдля программы, и, следовательно,она не может никак изменитьих содержимое4 МбайтКомпоненты реального режимаЭта область используетсявсеми процессами64 КбайтОРис. 1 1 . 1 . Модель памяти операционных систем Windows 95/98377Операционные системы Windows 9xВ операционных системах Windows термином модуль (module) называют присутствующую в памяти совокупность кода, данных и других ресурсов (в частноститаких, как битовые массивы). Обычно такая совокупность объектов представляетсобой отдельную прикладную программу или библиотеку DLL.
Windows формирует и поддерживает структуру данных под названием база данных модулей (moduledatabase), в которой учитываются все активные в данный момент модули системы.База данных модулей описывает статическую совокупность объектов в отличие оттой динамической, что поддерживает база данных задач.
Учет загруженных в данный момент модулей необходим, потому что он служит основой поддерживаемогоWindows 9x механизма совместного использования ресурсов. Так, например, когда мы вторично запускаем программу Word или Internet Explorer, операционнаясистема Windows обнаруживает, что сегменты кода и формирующий значок этойпрограммы — битовый массив — уже загружены, и вместо того чтобы загружатьеще одну копию, которая только отнимет память, она попросту заводит дополнительные ссылки на уже используемые ресурсы.На протяжении всего времени работы системы Windows 9x для каждого ресурсаподдерживают счетчик обращений к нему. По мере того как приложения используют тот или иной ресурс, Windows 9x увеличивают значение соответствующегосчетчика, а по завершении работы приложения уменьшают его.
Значение счетчика, равное нулю, свидетельствует о том, что ресурс больше не используется,а значит, система может удалить ресурс и освободить память, которую он занимал.Минимально допустимый объем оперативной памяти, начиная с которого этиоперационные системы могут функционировать, равен 4 Мбайт для Windows 95и 8 Мбайт для Windows 98. Однако при таких маленьких объемах физической памяти пробуксовка столь велика, что быстродействие системы становится слишком малым, и практически работать нельзя.Страничный файл, с помощью которого реализуется механизм виртуальной памяти, по умолчанию располагается в каталоге самой системы Windows и имеет переменный размер.
Система отслеживает его длину, увеличивая или сокращая этотфайл при необходимости. Вместе с фрагментацией файла подкачки это приводитк тому, что быстродействие системы становится меньше, чем если бы этот файлбыл фиксированного размера и располагался в смежных кластерах (был бы дефрагментирован). Создать файл подкачки заданного размера можно либо черезспециально разработанный для этого апплет (Панель управления • Система • Быстродействие • Файловая система), либо просто прописав в секции [386Enh] файлаSYSTEM.INI строки с указанием диска и имени файла подкачки, например:PagingDrive=C:Pagi ngFi1е=С:\PageFiIe.sysMi nPagingFi1eSi ze=65536MaxPagi ngFi1eSi ze=262144Здесь первая и вторая строки описывают размещение страничного файла и егоимя, а две последних — начальный и предельный размеры страничного файла(значения указываются в килобайтах).
Для определения необходимого минимального размера можно рекомендовать запустить уже упомянутую выше программу-378Глава 11. Операционные системы WindowsSYSMON.EXE1 (системный монитор) и, выбрав в качестве наблюдаемых параметровразмер файла подкачки и объем свободной памяти, оценить потребности в памяти, запуская те приложения, с которыми чаще всего приходится работать.Большое влияние на использование оперативной памяти и общую производительность системы оказывает драйвер виртуального устройства VCache, занимающийсякэшированием файлов.
Он взаимодействует с менеджером физической памяти,запрашивая и освобождая области памяти, которые впоследствии могут быть выделены отдельным драйверам файловой системы для выполнения операций кэширования. Этот драйвер работает по методу агрессивного кэширования, в результате он может захватывать почти всю свободную оперативную память. Как нистранно, это не всегда приводит к увеличению скорости работы с файлами, поскольку поиск нужных блоков данных среди блоков, находящихся в кэше, осуществляется простым последовательным перебором, а количество просматриваемыхблоков в этом случае существенно больше.
Поэтому в ряде случаев имеет смыслограничивать «аппетит» драйвера VCache. Сделать это можно путем редактирования все того же файла SYSTEM.INI. Только теперь нужно найти другую секцию файла — [VCache]. В эту секцию следует добавить строки и прописать значения длямаксимального и минимально объемов оперативной памяти, которую операционная система будет предоставлять подсистеме кэширования. Выглядеть эти новыестроки могут, например, так:MinFileCache=16384MaxFileCache=65536ChunkSize=2048NameCache=4096DirectoryCache=128Назначение первой и второй строк представляется очевидным.