При создании процесса в принципе ему полностью доступно пользовательское пространстворазмером 2 Гбайт (минус 128 Кбайт). Это пространство разделяется на страницы фиксированного размера, каждая из которых может быть загружена в основную память.На практике для простоты учета страница может находиться в одном из трех состояний.
1. Доступна. Страница в настоящее время не используется процессом.
2. Зарезервирована. Множество смежных страниц, которые диспетчер виртуальной памяти предназначает процессу, но которые не учитываются в квоте памяти процесса до их использования. Когда процесс требует записи в память, часть зарезервированной памяти передается процессу.
3. Размещена. Страницы, для которых диспетчер виртуальной памяти выделяет память в страничном файле (т.е. дисковом файле, в которыйзаписываются страницы при удалении их из основной памяти).
Различие между зарезервированной и размещенной памятью (1) позволяет минимизировать дисковое пространство, предназначенное определенному процессу, тем самым сохраняя это пространство для других процессов, и (2) разрешает потоку или процессу объявить объем памяти, который будет быстро выделен при необходимости.
Схема управления резидентным множеством, используемая в W2K, — переменное распределение с локальной областью видимости (см. табл. 8.4). При первой активации процесса ему в качестве рабочего множества передается некоторое количество кадров основной памяти. Когда процесс обращается к странице, отсутствующей в памяти, одна из резидентных страниц этого процесса выгружается и на ее место загружается требующаяся страница. Рабочие множества активных процессов настраиваются во время работы с использованием следующих общих соглашений.
• При большом размере основной памяти диспетчер виртуальной памяти позволяет расти резидентным множествам активных процессов. Для этого при генерации прерывания из-за отсутствия страницы новая страница загружается в память, но старая при этом не выгружается.
• При малом размере основной памяти диспетчер виртуальной памяти возвращает память системе, удаляя давно не использовавшиеся страницы из рабочих множеств активных процессов, снижая тем самымих размеры.
РЕЗЮМЕ. КЛЮЧЕВЫЕ ТЕРМИНЫ И КОНТРОЛЬНЫЕ ВОПРОСЫ
Для эффективного использования процессора и систем ввода-вывода желательно поддерживать в основной памяти как можно большее количество процессов одновременно. Кроме того, желательно освободить программиста от ограничений, накладываемых на размер создаваемых им программ.
Решение обеих задач состоит в использовании виртуальной памяти. При использовании виртуальной памяти все адреса являются логическими, преобразуемыми в процессе работы в физические. Это позволяет процессу располагаться в произвольном месте основной памяти, а также изменять свое местоположение в памяти в процессе работы. Кроме того, виртуальная память позволяет разделить процесс на несколько частей, которые не обязательно должны располагаться в смежных блоках основной памяти, более того — не все должны находиться в основной памяти во время работы процесса.
Виртуальная память опирается на два основных подхода — страничную организацию и сегментацию. При страничной организации каждый процесс разделяется на относительно малые страницы фиксированного размера. Сегментация же позволяет использовать части различного размера. В одной схеме управления памятью могут совместно использоваться и сегментация, и страничная организация.
Схема управления виртуальной памятью требует как программной, так и аппаратной поддержки. Аппаратная поддержка, обеспечиваемая процессором, включает динамическое преобразование виртуальных адресов в физические и генерацию прерывания при отсутствии адресуемой страницы или сегмента в основной памяти. Это прерывание обрабатывается программным обеспечением управления памятью.
При разработке системы управления памятью следует решить множество связанных с ней вопросов, включающих следующие.
• Стратегия выборки. Страницы могут загружаться в основную память как по требованию процесса, так и с использованием стратегии предварительной выборки, при которой происходит загрузка страниц кластерами.
• Стратегия размещения. В случае выбора системы с использованием только сегментации все вновь загружаемые сегменты должны быть размещены в доступном пространстве в памяти.
Стратегия замещения.При заполнении памяти следует принять решение о том, какая страница (или страницы) будет замещена загружаемыми в память.
• Управление резидентным множеством. Операционная система должна решать, какой именно объем памяти должен быть отведен тому или иному процессу при его загрузке в память. Этот объем может быть выделен статически, в момент создания процесса,либо изменяться динамически в процессе работы.
• Стратегия очистки. Измененные страницы процесса должны быть записаны при их замещении; однако возможно использование стратегии предварительной очистки, при которой за одну операцию производится запись кластера страниц.
• Управление загрузкой. Управление загрузкой заключается в определении количества процессов, которые должны быть резидентны в основной памяти в данный момент.