Когда страница с ошибкой возвращается с диска в физическую память, где размещается страница? - PullRequest
0 голосов
/ 29 апреля 2019

Я запутался в этом. Разве все адреса физической памяти не соответствуют местам их физической памяти? Например, физический адрес 0x1000 находится в месте физической памяти 0x1000 и т. Д.

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

Возможно, я неправильно понимаю виртуальную память.

1 Ответ

0 голосов
/ 29 апреля 2019

У вас немного смущения. Процессы видят только ЛОГИЧЕСКИЕ АДРЕСА. Логические адреса сопоставляются с ФИЗИЧЕСКИМИ АДРЕСАМИ, используя ТАБЛИЦЫ СТРАНИЦЫ.

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

При возникновении сбоя страницы операционной системе необходимо найти свободную страницу в физической памяти. Это поле может быть где угодно в памяти. Затем операционной системе необходимо сопоставить свободный физический фрейм страницы с логической страницей, которая вызвала сбой страницы, путем обновления таблиц страниц процесса. Затем необходимо скопировать данные страницы из вторичного хранилища VIRTUAL на свободную страницу физической памяти, которая теперь является частью адресного пространства процесса.

...