Как указатели стека конвертируются из виртуальной в физическую память - PullRequest
0 голосов
/ 11 июля 2019

Я работал со многими сборками, и, просматривая виртуальную память, я столкнулся с новой путаницей.

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

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

Где адрес (mov eax, [0xDEADBEEF]) переводится из виртуального адресного пространства в физическое адресное пространство с помощью таблицы страниц вОС без специального вызова ОС?

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Просто потому, что ЦП поддерживает этот вид перевода напрямую, используя таблицы страниц . ОС заранее устанавливает эти таблицы страниц, чтобы указать процессору, где искать, когда ссылается на адрес памяти. Вот как перевод происходит прозрачно.

0 голосов
/ 11 июля 2019

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

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

Операционная система должна сохранять копию адресного пространства процесса во вторичном хранилище. Это «виртуальная» память. Когда происходит сбой страницы, операционная система определяет, существует ли ссылка на страницу в виртуальной памяти. Если это так, обработчик ошибок страницы считывает страницу в физическую память, изменяет таблицы страниц так, чтобы логический адрес соответствовал правильному физическому адресу, а затем перезапускает инструкцию.

Если виртуальная страница не существует, операционная система выдает исключение нарушения прав доступа.

...