Я читаю < Windows через C/С++ > и здесь некоторые цитаты.
Когда процесс создается и задается его адресное пространство, основная часть этого полезное адресное пространство является бесплатным, или нераспределенной. Чтобы использовать части этого адресное пространство, вы должны выделить регионов внутри него путем вызова VirtualAlloc. Акт выделения область называется резервированием.
Чтобы использовать зарезервированный регион адреса пространства, вы должны выделить физическое хранения, а затем сопоставить это хранилище с зарезервированный регион. Этот процесс называется фиксацией физической памяти.
После того, как вы зарезервировали регион, вы необходимо передать физическое хранилище области, прежде чем вы сможете получить доступ к адреса памяти, содержащиеся в нем. Система выделяет физическое хранилище приверженность региону файл подкачки системы.
Вот несколько вопросов:
-
Почему нам нужно следить за парадигмой резерв-comit при использовании памяти? Т.е. почему нам нужно следовать этой двухэтапной парадигме вместо того, чтобы напрямую распределять некоторую физическую память и использовать ее?
-
Если физическое хранилище, выделенное для региона, выделено из файла подкачки системы, зачем нам ОЗУ (звучит смешно)? На мой взгляд, область адресного пространства должна отображаться в ОЗУ (через механизм поискового вызова), а страницы ОЗУ должны поддерживаться файлом подкачки.
Возможно, на этот вопрос можно ответить, объяснив следующие 2 аспекта:
-
Что делает резервирование?
-
Что делает фиксация?
Обновление - 1 2:48 вечера 11/23/2010
Это следующая цитата из < Windows через C/С++ 5th edition > , что делает меня озадаченным.
... Лучше всего думать о физических хранение в качестве данных, хранящихся в пейджинге файл на диске. Поэтому, когда приложение фиксирует физическое хранилище в область адресного пространства вызывая функцию VirtualAlloc, пространство фактически выделено из файл на жестком диске.
После того, как вы зарезервировали регион, вы необходимо передать физическое хранилище области, прежде чем вы сможете получить доступ к адреса памяти, содержащиеся в нем. Система выделяет физическое хранилище, привязанное к региону из файл подкачки системы.
Итак, где ОЗУ? Что делать, если я настраиваю свою машину на отсутствие файла страницы?