Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
17.04.2013
Размер:
374.27 Кб
Скачать

Буфер транслированных адресов

Если полная трансляция адреса будет выполняться при каждом обращении к памяти, то производительность системы будет невысокой. Поэтому в процессорах x86 и Alpha применяется кэширование транслированных адресов - Translation Look-aside Buffers (TLBs). В кэш помещаются пары, состоящие из старшей части виртуального адреса и соответствующего номера физической страницы.

Размер кэша - 32 элемента. Реализован ассоциативный поиск, т.е. сравнение виртуального адреса выполняется одновременно со всеми элементами кэша. Если в кэше находится совпадающий элемент, то пропускается преобразование адреса по каталогу страниц и по таблице страниц. Замещение выполняется по принципу LRU.

Время переключения контекста между процессами в основном определяется временем заполнения кэша новыми элементами, т.к. кэш при переключении контекста необходимо очистить.

Механизм загрузки страниц

Загрузка страниц в память производится по запросу (прерывание по отсутствию страницы). Прерывание, сигнализирующее отсутствие страницы в памяти возбуждается MMU при попытке обратиться к странице, состояние которой равно invalid. Это может случиться как на первом, так и на втором шаге трансляции адреса.

Прерывания по отсутствию страницы обрабатываются компонентой Memory Manager, который определяет по своим внутренним структурам является ли это обращение допустимым для процесса, т.е. предусмотрено ли отображение такого адреса. Если адрес не определен для процесса, то задача аварийно завершается, а если она выполнялась в режиме ядра, то выводится «синий экран».

Состояние устанавливается не только для неопределенных страниц, но и для страниц выгруженных из физической памяти и находящихся в страничном файле. В этом случае Memory Manager должен найти свободное место в памяти и загрузить туда требуемую страницу. Обычно это связано с выгрузкой какой-либо страницы в страничный файл. Затем NT вносит изменение в таблицу страниц и повторно выполняет команду, вызвавшую прерывание.

Рабочие множества

В наибольшей степени Memory Manager влияет на производительность вычислительной системы тем, как он распределяет физическую память между процессами. Число страниц, которое Memory Manager выделяет процессу в физической памяти называют рабочим множеством. Имеется системное рабочее множество, которое принадлежит ядру и драйверам устройств.

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

В NT реализована модифицированная загрузка страницпо запросу (clustered demand paging). Вместе с загрузкой требуемой страницы Memory Manager пытается загрузить и соседние страницы - кластер, размер кластера варьируется от 0 до 7 страниц в зависимости от количества физической памяти в системе и от того к каким данным производится обращение (код или данные). В NT реализована смесь локальной и глобальной стратегиизамещения страниц.

На однопроцессорных системахNT использует простейшую форму LRU, основанную на бите доступа к странице, который содержится в PTE. Рабочее множество каждого процесса характеризуется текущим, минимальным и максимальным размерами (в системе с 64MB памяти минимальный размер рабочего множества - 200KB, максимальный - 1.4MB). Когда процесс начинает выполняться, генерируется большое число прерываний по отсутствию страницы и Memory Manager позволяет рабочему множеству процесса расти до максимального значения. Memory Manager может позволить рабочему множеству превысить максимальный предел, если в данное время имеется в наличии достаточно свободных страниц в физической памяти. Если свободных страниц нет, то производится замещение: просматриваются страницы рабочего множества и если бит доступа к странице установлен, то он очищается, если находится страница с очищенным битом доступа, то она замещается.

На многопроцессорных системахMemory Manager не очищает бит доступа поскольку любая модификация PTE в многопроцессорной системе приводит к сбросу элемента из кэшей всех процессоров. Поэтому применяется случайный алгоритм замещения. Microsoft разработала более эффективный алгоритм замещения на многопроцессорных машинах для NT 5.0.

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

Соседние файлы в папке вар1