logo search
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

51. Файл подкачки страниц

В Windows 95 и Windows NT управление памятью принципиально отличается принятого в Windows 3.1. В них вся оперативная память обслуживается исключительно системой, и ни одно приложение не может напрямую контролировать эту память.

Так что в Win32-системах физическую память следует рассматривать как данные хранимые в дисковых файлах со страничной структурой — страничных файлах (pag files). Поэтому, когда приложение передает физическую память какому-нибудь регистру адресного пространства (вызывая VirtualAlloc), она на самом деле выделяется из файла, размещенного на жестком диске. Размер страничного файла в системе — главный факт определяющий количество физической памяти, доступное приложениям. Реальный объем оперативной памяти имеет гораздо меньшее значение.

Теперь посмотрим, что происходит, когда поток пытается получить доступ к блоку данных в адресном пространстве своего процесса. Произойти может одно из двух (см. р 5-4). В первом сценарии данные, к которым обращается поток, находятся в оперативной памяти. В этом случае процессор отображает виртуальный адрес данных на физический поток и получает доступ к нужным ему данным.

Во втором сценарии данные, к которым обращается поток, отсутствуют в оперативной памяти, но размещены где-то в страничном файле. Попытка доступа к данным генерирует ошибку страницы (page fault), и процессор, таким образом, уведомляет операционную систему об этой попытке. Тогда операционная система начинает искать свободную страницу в оперативной памяти; если таковой нет, система вынуждена освободить одну из занятых страниц. Если занятая страница не модифицировалась, она просто освобождается; в ин< случае она сначала копируется из оперативной памяти в страничный файл. После это система переходит к страничному файлу, отыскивает в нем запрошенный блок данных, загружает этот блок на свободную страницу оперативной памяти и, наконец, отображает адрес данных в виртуальной памяти на соответствующий адрес в физической памяти.

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

Windows NT может использовать несколько страничных файлов, и, если они расположены на разных физических дисках, операционная система работает гораздо быстрее, поскольку способна вести запись одновременно на нескольких дисках