Операционные системы Windows NT/2000/XP 393
Диспетчер виртуальной памяти может быстро и относительно легко удовлетво-
рить программные прерывания типа страничной ошибки (page fault). Что касается
аппаратных прерываний типа страничной ошибки, то они приводят к необходи-
мости подкачки нужных страниц (paging), что снижает производительность систе-
мы. Мы уже говорили (см. главу 3), что в Windows NT, к большому сожалению,
для замещения страниц выбрана дисциплина FIFO, а не более эффективная дис-
циплина LRU или LFU, как это сделано в других операционных системах.
Когда процесс использует код или данные, находящиеся в физической памяти,
система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске.
Это делается с расчетом на то, что данные потребуется выгрузить на диск. Файл
Pagefile.sys представляет собой зарезервированный блок дискового пространства,
который используется для выгрузки страниц, помеченных как «грязные», для ос-
вобождения физической памяти. Заметим, что этот файл может быть как непре-
рывным, так и фрагментированным; он может быть расположен на системном дис-
ке или на любом другом и даже на нескольких дисках. Размер этого страничного
файла ограничивает объем данных, которые могут храниться во внешней памяти
при использовании механизмов виртуальной памяти. По умолчанию размер фай-
ла подкачки в операционных системах Windows NT 4.0 устанавливается равным
объему физической памяти плюс 12 Мбайт, однако пользователь имеет возмож-
ность изменить его размер по своему усмотрению. В следующих системах (Win-
dows 2000/ХР) начальный размер страничного файла подкачки берется равным
полуторакратному объему физической оперативной памяти. То есть, например,
для компьютера, имеющего 512 Мбайт оперативной памяти, по умолчанию раз-
мер файла Pagefile.sys равен 768 Мбайт. Проблема нехватки виртуальной памяти
часто может быть решена за счет увеличения размера файла подкачки. Файл под-
качки может быть не один — система поддерживает до 16 файлов подкачки, поэто-
му лучше создать их несколько и разместить на быстрых жестких дисках.
В системах Windows NT 4.0 объекты, создаваемые и используемые приложениями
и операционной системой, хранятся в так называемых пулах памяти (memory
pools). Доступ к этим пулам может быть получен только в привилегированном ре-
жиме работы процессора, в котором функционируют компоненты операционной
системы. Поэтому для того чтобы объекты, хранящиеся в пулах, стали видимы
потокам выполнения приложений, эти потоки должны переключиться в привиле-
гированный режим.
Перемещаемый, или нерезидентный, пул (paged pool) содержит объекты, которые
могут быть при необходимости выгружены на диск. Неперемещаемый, или рези-
дентный, пул (nonpaged pool) содержит объекты, которые должны постоянно на-
ходиться в памяти. В частности, к такого рода объектам относятся структуры
данных, используемые процедурами обработки прерываний, а также структуры,
требуемые для предотвращения конфликтов в мультипроцессорных системах.
Исходный размер пулов определяется объемом физической памяти, доступной
Windows NT. Впоследствии размер пула устанавливается динамически и в зави-
симости от работающих в системе приложений и служб может изменяться в Щиро-
ком диапазоне значений.