Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SysSoft.doc
Скачиваний:
520
Добавлен:
16.03.2016
Размер:
4.36 Mб
Скачать

Распределение оперативной памяти вMicrosoftWindows95/98

С точки зрения базовой архитектуры ОС Windows95/98 они обе являются 32-разрядными, многопотоковыми ОС с вытесняющей многозадачностью. Основ­ной пользовательский интерфейс этих ОС – графический.

Для своей загрузки они используют операционную систему MS-DOS7.0 (MS-DOS98), и в случае если в файлеMSDOS.SYSв секции [Options] прописаноBootGUI = 0, то процессор работает в обычном реальном режиме (см. следующий раздел). Распределение памяти вMS-DOS7.0. такое же, как и в предыдущих версияхDOS. Однако при загрузке GUI-интерфейса перед загрузкой ядраWin­dows95/98 процессор переключается в защищённый режим работы и начинает распределять память уже с помощью страничного механизма.

Использование так называемой плоской модели памяти,при которой все возмож­ные сегменты, которые может использовать программист, совпадают друг с дру­гом и имеют максимально возможный размер, определяемый системными согла­шениями данной ОС, приводит к тому, что с точки зрения программиста память получается неструктурированной. За счёт представления адреса как пары (Р, i) память можно трактовать и как двумерную, то есть «плоскую», но при этом её можно трактовать и как линейную, и это существенно облегчает создание сис­темного программного обеспечения и прикладных программ с помощью соот­ветствующих систем программирования.

Таким образом, в системе фактически действует только страничный механизм преобразования виртуальных адресов в физические. Программы используют клас­сическую «small»(малую) модель памяти [73]. Каждая прикладная программа определяется 32-битными адресами, в которых сегмент кода имеет то же значе­ние, что и сегменты данных. Единственный сегмент программы отображается не­посредственно в область виртуального линейного адресного пространства, который, в свою очередь, состоит из 4 килобайтных страниц. Каждая страница может располагаться где угодно в оперативной памяти (естественно, в том месте, куда её разместит диспетчер памяти, который сам находится в невыгружаемой облас­ти) или может быть перемещена на диск, если не запрещено использовать стра­ничный файл.

Младшие адреса виртуального адресного пространства совместно используются всеми процессами. Это сделано для обеспечения совместимости с драйверами устройств реального режима, резидентными программами и некоторыми 16-раз­рядными программами Windows. Безусловно, это плохое решение с точки зре­ния надёжности, поскольку оно приводит к тому, что любой процесс может непреднамеренно (или же, наоборот, специально) испортить компоненты, нахо­дящиеся в этих адресах.

В Windows95/98 каждая 32-разрядная прикладная программа выполняется в сво­ем собственном адресном пространстве, но все они используют совместно один и тот же 32-разрядный системный код. Доступ к чужим адресным пространствам в принципе возможен. Другими словами, виртуальные адресные пространства не используют всех аппаратных средств защиты, заложенных в микропроцессор. В результате неправильно написанная 32-разрядная прикладная программа мо­жет привести к аварийному сбою всей системы. Все 16-битовые прикладные программыWindowsразделяют общее адресное пространство, поэтому они так же уязвимы друг перед другом, как и в средеWindows3.x.

Системный код Windows95 размещается выше границы 2 Гбайт. В пространстве с отметками 2 и 3 Гбайт находятся системные библиотекиDLL1, используемые несколькими программами. Заметим, что в 32-битовых микропроцессорах се­мействаi80x86 имеются четыре уровня защиты, именуемые кольцами с номера­ми от 0 до 3. Кольцо с номером 0 является наиболее привилегированным, то есть максимально защищённым. Компоненты системыWindows95, относящиеся к кольцу 0, отображаются на виртуальное адресное пространство между 3 и 4 Гбайт. К этим компонентам относятся собственно ядроWindows, подсистема управле­ния виртуальными машинами, модули файловой системы и виртуальные драй­веры (VxD).

Область памяти между 2 и 4 Гбайт адресного пространства каждой 32–разрядной прикладной программы совместно используется всеми 32-разрядными приклад­ными программами. Такая организация позволяет обслуживать вызовы APIне­посредственно в адресном пространстве прикладной программы и ограничивает размер рабочего множества. Однако за это приходится расплачиваться снижени­ем надёжности. Ничто не может помешать программе, содержащей ошибку, про­извести запись в адреса, принадлежащие системнымDLL, и вызвать крах всей системы.

В области между 2 и 3 Гбайт также находятся все запускаемые 16-разрядные прикладные программы Windows. С целью обеспечения совместимости эти про­граммы выполняются в совместно используемом адресном пространстве, где они могут испортить друг друга так же, как и вWindows3.х.

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

Вышеизложенную модель распределения памяти можно проиллюстрировать с помощью рис. 2.11.

Минимально допустимый объём оперативной памяти, начиная с которого ОС Windows95 может функционировать, равен 4 Мбайт, однако при таком объёме пробуксовка столь велика, что практически работать нельзя. Страничный файл, с помощью которого реализуется механизм виртуальной памяти, по умолчанию располагается в каталоге самойWindowsи имеет переменный размер. Система отслеживает его длину, увеличивая или сокращая этот файл при необходимости. Вместе с фрагментацией файла подкачки это приводит к тому, что быстродейст­вие системы становится меньше, чем если бы файл был фиксированного размера и располагался в смежных кластерах (был бы дефрагментирован).

Рис. 2.11.Модель памяти ОСWindows95/98

Сделать файл подкачки заданного размера можно либо через специально разработанный для этого апплет (Панель управления СистемаБыстродействиеФайловая систе­ма), либо просто прописав в файлеSYSTEM.INIв секции [386Enh] строчки с указа­нием диска и имени этого файла, например:

PagingDrive=C:

PagingFile=C:\PageFile.sys

MinPagingFileSize=65536

MaxPagingFileSize=262144

Первая и вторая строчки указывают имя страничного файла и его размещение, а две последних – начальный и предельный размер страничного файла (значе­ния указываются в килобайтах). Для определения необходимого минимального размера этого файла можно рекомендовать запустить программу SysMon1(сис­темный монитор) и, выбрав в качестве наблюдаемых параметров размер файла подкачки и объём свободной памяти, оценить потребности в памяти, запуская те приложения, с которыми чаще всего приходится работать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]