Что такое рабочий набор и для чего он используется?
Рабочий набор - это подмножество виртуальных страниц, находящихся в физической памяти.
В Windows существует несколько видов рабочих наборов:
Рабочие наборы процессов содержат страницы, на которые ссылаются потоки в рамках одного процесса.
Рабочий набор System содержит резидентное подмножество системного кода с возможностью подкачки (в основном это ядро и загруженные драйверы), среди выгружаемого пула и системного кэша.
Рабочие наборы сеансов, которые содержат резидентные подмножества данных сеанса в режиме ядра, выделенных подсистемой Windows, выгружаемый пул сеансов, представления с отображением сеансов и другие драйверы сеансов.
По сути, рабочий набор используется, чтобы решить, сколько физической памяти можно использовать, чтобы избежать большого количества подкачки. Когда происходит сбой страницы , проверяются пределы рабочего набора и объем свободной памяти в системе. При необходимости диспетчер памяти позволяет процессу расти до максимума рабочего набора. Если памяти недостаточно, Windows заменит страницу в рабочем наборе при возникновении сбоя страницы.
Windows попытается сохранить доступную память, записывая измененные страницы на диск. Если памяти мало, менеджер рабочих наборов попытается обрезать большинство рабочих наборов, чтобы увеличить объем доступной физической оперативной памяти, доступной для системы. Процессы с большим количеством страниц имеют более высокую склонность к просмотру.
Рабочий набор по умолчанию для процесса состоит минимум из 50 страниц и имеет максимум до 345 страниц. Пределы могут быть изменены, но значения по умолчанию будут достаточными в большинстве случаев использования, также следует отметить, что максимальный размер рабочего набора не может превышать общесистемный максимум, рассчитанный во время загрузки.
Windows сообщает об общем, пиковом и частном объеме физической памяти, используемой страницами виртуального рабочего набора для процесса. Приватный указывает на память, которая не разделяется между процессами.
Что такое фиксация и для чего она используется?
Страницы в виртуальном адресном пространстве процесса свободны, зарезервированы или зафиксированы. Приложения могут зарезервировать адресное пространство, а затем зафиксировать его ; резервирование само по себе не занимает памяти или файлового пространства страницы, оно в основном делается для уменьшения памяти путем отсрочки выполнения обязательств страницы.
Зафиксированные страницы - это страницы, которые при обращении в конечном итоге преобразуются в действительные страницы в физической памяти; они могут быть как частными, так и общими или отображаться в виде раздела. Раздел может быть общей памятью или отображенными файлами ; Таким образом, если зафиксированные страницы сопоставлены с частью сопоставленного файла, их, возможно, потребуется перенести с диска при доступе.
Самым распространенным известным отображаемым файлом является файл подкачки. Он хранит измененные страницы, которые все еще используются каким-либо процессом, но должны были быть записаны на диск. Делая это более агрессивно, можно легче освободить память без необходимости делать записи ввода / вывода до этого.
Диспетчер памяти отслеживает частную плату за фиксацию в глобальном масштабе и для каждого процесса в виде квоты файла подкачки. Эти значения затем используются для определения частоты записи в файл подкачки. Обратите внимание, что освобождение памяти осуществляется с помощью механизма рабочего набора ...
Когда чего-то больше нет в памяти, оно загружается из файла подкачки.
Отчеты Windows фиксируют плату как общий объем памяти, используемый процессом, для которого нет резервного хранилища; он по существу суммирует объемы физической ОЗУ, которые все еще отсутствуют в файле подкачки, и вычитает из этого другие сопоставленные файлы.
Резервное хранилище - это хранилище с резервной копией данных; например, если вы отобразите изображение в память, оно будет как в памяти, так и на вашем диске; поэтому не имеет смысла вычислять этот образ как использование памяти, учитывая, что вы всегда можете получить к нему доступ с диска, когда это необходимо в условиях высокой памяти.
Что такое кучи памяти и для чего они используются?
Известный как выгружаемый и невыгружаемый пул ...
Системные потоки ядра не имеют адресного пространства, как у процессов; следовательно, они должны выделять любое динамическое хранилище в кучах памяти операционной системы, это в основном формируется из выгружаемого или невыгружаемого пула.
Выгружаемый пул состоит из виртуальной памяти, которая может быть выгружена в систему и из нее. Драйверы устройств, которым не требуется доступ к памяти на низком уровне диспетчеризации (более высокий приоритет), могут свободно использовать выгружаемые пулы.
Не выгружаемый пул состоит из виртуальной памяти, которая гарантированно постоянно находится в физической памяти, и, таким образом, к ней можно получить доступ в любое время, не вызывая ошибки страницы. Драйверы устройств, которые должны получать доступ к памяти на более низком уровне диспетчеризации, ДОЛЖНЫ использовать пул без постраничной передачи, чтобы обеспечить доступ к данным, так как вызовы ввода-вывода недоступны в этот момент, так или иначе, на этом уровне в основном имеется критический код ...
Эти пулы имеют минимальный и максимальный размер, они определяются как небольшой процент доступной оперативной памяти. Хотя они могут расти, обратите внимание, что они не будут превышать определенный процент доступной оперативной памяти. Хотя невыгружаемый пул достаточно прочный, учитывая, что он предназначен только для более критичной памяти, выгружаемый пул будет расширяться в файл подкачки.
Это одна из наиболее часто встречающихся проблем, когда люди отключают свой файл подкачки. Среди других проблем со стабильностью и производительностью , которые обязательно стоит проверить, если вы отключили файл подкачки.
- Источник : выдержки из книги Windows Internals, переписанные в понятный текст.