Пора поговорить про физические страницы памяти. Рассмотрим как они сопоставляются с виртуальными страницами и какие свойства имеют.

Физические страницы памяти и их состояния

В Windows есть такая база данных — PFN (Page Frame Nubber). Она содержит все страницы физической памяти и их состояния. Состояния у станиц могут быть следующие:

  • Active (valid) — на эту страницу есть корректная PTE запись. Это означает что если поток захочет прочитать данную страницу, то сразу прочитает её а не получит ошибку памяти.
  • Transition — временное состояние страницы, означает что со страницей осуществляется операция ввода / вывода. При этом страницы пока еще нет ни в рабочем наборе ни в файле подкачки.
  • Standby — страница была в рабочем наборе, но была удалена из него, при этом страница не изменялась с момента последний записи на диск.
  • Modified — как standby, но страница была изменена, и еще не успела записаться на диск.
  • Modified no-write — как modified, но помечена, чтобы не быть записанной на диск. Возможно такая страница чего-то ждет, может завершения транзакции, прежде чем будет возможность записать её на диск.
  • Free — свободная страница. Но она содержит некие данные, оставленные предыдущим потоком. Такие страницы вначале проходят процедуру обнуления, прежде чем будут выданы новому потоку.
  • Zeroed — обнуленные страницы. Это свободные страницы прошедшие процедуру обнуления. Эти страницы готовы для работы с новыми потоками.
  • Room — такая страница может использоваться только для чтения.
  • Bad — страница в отношении которой была получена ошибка, например ошибка четности. Поэтому страница не может быть использована.

Изучение страниц с помощью утилиты RamMap

Посмотреть на состояния страниц можно с помощью утилиты RamMap:

Столбцы в этой утилите показывают состояния страниц. А строки — чем эти страницы используются. Состояния страниц мы уже разобрали выше. Теперь пробежимся по строкам:

  • Process Private — такие страницы используются процессами в системе;
  • Mapped File — а эти страницы выделены для замапленных файлов;
  • Shareable — общие страницы памяти, используемые разными процессами;
  • Page Table — страницы в которых хранятся таблицы страниц;
  • Paged Pool — выгружаемый пул;
  • Nonpages Pool — невыгружаемый пул;
  • System PTE — пул системных страниц. Таких как пространство ввода-вывода, стеки ядра и списки дескрипторов памяти, также тут могут находиться страницы виртуальных машин;
  • Session Private — память, которая является частной для определенного сеанса, вошедшего в систему. Она будет выше на серверах RDS;
  • Metafile — часть системного кеша который содержит метаданные NTFS;
  • AWE (Address Windowing Extensions) — позволяет приложению отображать различные представления физической памяти в свое адресное пространство, обычно это используется SQL или другими приложениями баз данных;
  • Driver Locked — страницы, заблокированные драйверами. Это может быть сделано для временных целей например ввод-вывод, или для постоянных например для RAM диска;
  • Kernel Stack — страницы, используемые стеками потоков ядра;
  • Unused — неиспользуемые страницы;
  • Large Page — большие страницы (> 2 MB).

Обратите внимание — все обнуленные страницы у нас не используются (Unused). Некоторые приватные страницы процессов и страницы невыгружаемого пула находятся в переходном состоянии (transition). Страницы в состоянии modified no-write это метафайлы файловой системы (ожидают окончания транзакций).

Перемещение страниц

Страничные блоки перемещаются следующими способами:

  • когда диспетчеру памяти нужна обнуленная страница, он ищет их в списке обнуленных страниц;
  • если список обнуленных страниц пуст, то страница берется из списка свободных страниц и обнуляется;
  • а если и список свободных страниц пуст, то происходит поиск среди ожидающих страниц (standby и modified).

Когда страница выходит из рабочего набора она может быть в двух состояниях:

  • modified — еще не записались изменения на диск. Такие страницы проходят подсистему записи измененных страниц и становятся standby.
  • standby — уже записались изменения на диск. Такие страницы могут стать свободными (free), а после прохода через поток обнуления — обнуленными (zeroed).

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

Перемещение страниц

Подсистема записи измененных страниц записывает страницы либо в обычные файлы (которые есть на файловой системе), либо в файл подкачки если реального файла для этой страницы нет.

Поток обнуления страницы заполняет страницу нулями, чтобы следующий поток не получил доступ к данным предыдущего потока.

Наблюдение за свободными и обнуленными страницами

Давайте понаблюдаем за свободными и обнуленными страницами в Process Explorer. Для этого перейдите по пунктам меню «View System Information«:

Для примера можете запустить Testlimit64.exe -d 1 -c 1500 и в системе появится процесс, который займет 1500 МБ памяти. А в момент завершения процесса (нажатия ctrl+c) в системе образуется много свободных страниц, которые затем перейдут в список обнуленных страниц.

Приоритеты страниц памяти

Каждая страница в системе имеет свой приоритет, это видно в утилите Process Explorer, если перейти по меню «View / System Information«:

Устройство Windows. Физические страницы памяти, изображение №3

Страницы в списке ожидания (standby) с наименьшим приоритетом используются раньше, чем процессы с наивысшим приоритетом.

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

Лимиты физической памяти

Ну и раз мы говорим про физическую память, оставлю здесь таблицу с лимитами физической памяти для Windows.

На ограничение физической памяти влияет:

  • разрядность системы (32 / 64)
  • версия системы (Windows 7, Windows 8, Windows 10)
  • версия лицензии (Home, Professional)
Версия / Редакция ОС32-разрядная64-разрядная
Windows 7 Home Basic4 GB8 GB
Windows 7 Home Premium4 GB 16 GB
Windows 7 Professional4 GB192 GB
Windows 10 Home4 GB128 GB
Windows 10 Professional4 GB2 TB
Windows 10 Enterprise4 GB6 TB
Windows Server 2012 R2 Essentials64 GB
Windows Server 2012 R2 Standart и Datacentr4 TB
Windows Server 2019 Essentials64GB
Windows Server 2019 Standard и Datacentr 24 TB

Вернуться к оглавлению

Сводка
Физические страницы памяти для Windows
Имя статьи
Физические страницы памяти для Windows
Описание
Пора поговорить про физические страницы памяти. Рассмотрим как они сопоставляются с виртуальными страницами и какие свойства имеют.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *