Отображение памяти в виртуальном адресном пространстве (VAS)

В этой [вики-статье] о виртуальной памяти говорится:

Затем процесс начинает выполнять байты в exe-файле. Однако единственный способ, которым процесс может использовать или устанавливать значения «-» в своей VAS, — это попросить ОС сопоставить их с байтами из файла. Обычный способ использования памяти VAS таким образом — сопоставить ее с файлом подкачки.

Схема следующая:

           0                                            4GB
VAS        |---vvvvvvv----vvvvvv---vvvv----vv---v----vvv--|
mapping        |||||||    ||||||   ||||    ||   |    |||
file bytes     app.exe    kernel   user   system_page_file

Я не понял часть values in its VAS is to ask the OS to map them to bytes from a file.

При чем здесь файл системной страницы?


person sjsam    schedule 21.05.2016    source источник
comment
Та статья совершенно бессмысленна. Игнорируйте все, что он говорит.   -  person user3344003    schedule 22.05.2016
comment
@user3344003 user3344003: Я думал, что это так, и поэтому я опубликовал это. Давно пора его убрать. Спасибо за ф/б.   -  person sjsam    schedule 22.05.2016


Ответы (1)


Во-первых, я не могу представить, чтобы в Википедии существовала настолько плохо написанная статья. Нужно быть экспертом, уже знакомым с темой, чтобы понять, о чем идет речь.

Предполагая, что вы понимаете остальную часть статьи, часть «-» представляет собой нераспределенный виртуальный адрес в адресном пространстве размером 4 ГБ, доступном для процесса. Таким образом, предложение «единственный способ, которым процесс может использовать или устанавливать значения '-' в своей VAS, — это попросить ОС сопоставить их с байтами из файла» означает выделение адреса виртуальной памяти, например. в родной программе Windows, вызывающей VirtualAlloc(), или в программе C, вызывающей malloc(), чтобы выделить некоторую память для хранения данных программы, пока эта память еще не существует в виртуальном адресном пространстве текущего процесса.

Когда Windows выделяет память для адресного пространства процесса, она обычно связывает эту память с файлом подкачки на жестком диске. C:\pagefile.sys — это файл подкачки, который является system_page_file, упомянутым в статье. Страница памяти выгружается в этот файл, когда физической страницы недостаточно для удовлетворения спроса.

Надеюсь, это проясняет

person JavaMan    schedule 21.05.2016
comment
Выполняет ли pagefile.sys ту же работу, что и подкачка в Linux? - person sjsam; 21.05.2016