Работа с памятью в Windows - таблицы страниц и данные - PullRequest
0 голосов
/ 07 сентября 2011

Я пытался понять следующее:

  • Я знаю, что таблицы страниц созданы для преобразования между виртуальной памятью и физической памятью менеджером виртуальной памяти в какой-то момент.Поскольку в системе запущено много процессов, хотя одновременно активен только один процесс, мне было интересно, перемещаются ли таблицы страниц для неактивного процесса в файл подкачки в любой момент времени?Учитывая тот факт, что нижняя область 2 ГБ зарезервирована для окон, было бы разумно, чтобы окна сохраняли таблицы страниц для всех процессов в системе.Хотя было бы также разумно, чтобы они были перемещены в файл подкачки, если текущий процесс переключен?

  • То же самое касается страниц с возможностью записи (данных).Будут ли окна сохранять все страницы данных для всего процесса в памяти или перемещать их в файл подкачки в какой-то момент.На моей машине диспетчер задач говорит, что из 3 ГБ используется 1,5 ГБ оперативной памяти, а на вкладке производительности 1,5 - системный кэш, поэтому я понимаю, что данные остаются в физической памяти для всех приложений.Но будет ли время, когда его нужно переместить в файл подкачки?

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Мне было интересно, перемещаются ли таблицы страниц для неактивного процесса в файл страниц в любой момент времени?

Да, таблицы страниц доступны для просмотра страниц.

Будут ли окна сохранять все страницы данных для всего процесса в памяти или перемещать их в файл подкачки в какой-то момент.

Что касается политики подкачки Windows, существует два вида памяти: страничная и нестраничная.На самом деле не имеет значения, к какому процессу он принадлежит или даже принадлежит ли он к самой O / S, если он доступен для постраничного вывода, он подлежит удалению.Так что, да, Windows при необходимости выведет на экран страницы данных процесса.

Я предлагаю прочитать главу по управлению памятью в книге Windows Internals, она должна охватывать все это.

-scott

0 голосов
/ 07 сентября 2011

Вы на самом деле задаете два вопроса здесь.

  1. Какова политика подкачки в отношении таблиц страниц.
  2. Какова политика подкачки для страниц с возможностью записи данных (т. Е. Виртуальная память с разрешениями R / W).

Сначала я немного поправлю тебя.

Учитывая тот факт, что нижняя область 2 ГБ зарезервирована для окон, это имеет смысл, что окна будут хранить таблицы страниц для всех процессов на система

Если быть точным, то верхний 2 ГБ, которые зарезервированы для окон, точнее - могут быть доступны в режиме ядра только ядром и драйверами Windows.

Теперь это может вас удивить, но память ядра тоже может быть разрешена! Так что технически совершенно не важно, какая часть 32-битного адресного пространства видна в режиме пользователя / ядра. Это не относится к подкачке.

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

На самом деле Windows сохраняет страницы памяти в файл подкачки до того, как они должны быть освобождены. Фактически он сбрасывает все страницы памяти в файл подкачки (кроме тех, которые связаны с другими файлами, такими как сопоставленные разделы) в фоновом режиме. Для этого есть две причины:

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

Итак, ответы на ваши вопросы:

  1. Не знаю наверняка, но это зависит от деталей реализации ОС. Я не вижу причин, по которым таблица страниц для каждого процесса не может быть выгружена. Это необходимо во время переключения контекста и изменения виртуальной памяти процесса. Обе ситуации не относятся к критичным по времени событиям.
  2. Определенно страницы памяти «записываемых данных» сохраняются в файле подкачки. Они удалены из физической памяти? Только по требованию, во время загрузки системы, в порядке наименьшего использования.
...