Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 8 Виртуальная память.doc
Скачиваний:
40
Добавлен:
11.05.2015
Размер:
811.52 Кб
Скачать

8.5. Управление памятью в windows 2000

Система управления виртуальной памятью Windows2000 (W2K) контролирует распределение памяти и работу страничной организации. Диспетчер памяти сконструирован для работы на множестве платформ и использует страницы раз­мером от 4 до 64 Кбайт. На платформахIntel,PowerPCиMIPSразмер страницы составляет 4096 байт, а уDECAlpha— 8192 байт.

Карта виртуальных адресов W2K

Каждый пользовательский процесс W2K получает отдельное 32-битовое адресное пространство, предоставляющее процессу до 4 Гбайт памяти. По умолчанию часть памяти зарезервирована для операционной системы, так что каждому пользователю на самом деле доступны 2 Гбайт виртуального адресного пространства, и все процессы совместно используют одни и те же 2 Гбайт системного пространства. W2Kпредоставляет возможность увеличения пользовательского адресного пространства до 3 Гбайт, оставляя системе только 1 Гбайт. В документации W2K указано, что эта возможность предназначена для поддержки интенсивно использующих большое количество памяти приложений, работающих на серверах со многими гигабайтами оперативной памяти, и что использование большего адресного пространства может существенно повысить производительность таких приложений, как системы поддержки принятия решений или огромных баз данных.

На рис. 8.23 показано виртуальное адресное пространство по умолчанию, видимое пользовательскому процессу. Оно состоит из четырех областей.

• От 0х00000000 до OxOOOOFFFF: предназначено для помощи программисту в перехвате присвоений указателюNULL.

• От 0х00010000 до Ox7FFEFFFF: адресное пространство, доступное пользователю. Это пространство разделяется на страницы, которые могут быть за гружены в основную память.

• От Ox7FFFOOOOOдоOx7FFFFFFF: защитная страница, недоступная пользователю. Эта страница облегчает операционной системе проверку выхода указателя за границы блока памяти.

• От 0х00000000 до OxOOOOFFFF: системное адресное пространство. Этот 2-Гбайтовый процесс предназначен для исполняющей системы W2K, микро­ядра и драйверов устройств.

Страничная организация W2K

При создании процесса в принципе ему полностью доступно пользовательское пространство размером 2 Гбайт (минус 128 Кбайт). Это пространство разделяется на страницы фиксированного размера, каждая из которых может быть загружена в основную память. На практике для простоты учета страница может находиться в одном из трех состояний.

1. Доступна. Страница в настоящее время не используется процессом.

2. Зарезервирована. Множество смежных страниц, которые диспетчер виртуальной памяти предназначает процессу, но которые не учитываются в квоте памяти процесса до их использования. Когда процесс требует записи в па­мять, часть зарезервированной памяти передается процессу.

3. Размещена. Страницы, для которых диспетчер виртуальной памяти выде­ляет память в страничном файле (т.е. дисковом файле, в который записываются страницы при удалении их из основной памяти).

Различие между зарезервированной и размещенной памятью (1) позволяет минимизировать дисковое пространство, предназначенное определенному про­цессу, тем самым сохраняя это пространство для других процессов, и (2) раз­решает потоку или процессу объявить объем памяти, который будет быстро выделен при необходимости.

Схема управления резидентным множеством, используемая в W2K, — переменное распределение с локальной областью видимости (см. табл. 8.4). При первой активации процесса ему в качестве рабочего множества передается некоторое количество кадров основной памяти. Когда процесс обращается к странице, отсутствующей в памяти, одна из резидентных страниц этого процесса выгружается и на ее место загружается требующаяся страница. Рабочие множества активных процессов настраиваются во время работы с использованием следующих общих соглашений.

• При большом размере основной памяти диспетчер виртуальной памяти позволяет расти резидентным множествам активных процессов. Для этого при генерации прерывания из-за отсутствия страницы новая страница загружается в память, но старая при этом не выгружается.

• При малом размере основной памяти диспетчер виртуальной памяти возвращает память системе, удаляя давно не использовавшиеся страницы из рабочих множеств активных процессов, снижая тем самым их размеры.