Где находятся адреса виртуальной памяти?

Я знаю, что если страница не находится в основной памяти, процессор извлечет ее из файла подкачки. Поэтому, если виртуальный адрес не имеет своего аналога физического адреса, ЦП перенесет его с диска. Таким образом, сопоставление с виртуальным адресом может осуществляться в одном из двух мест: либо в физической памяти, либо на диске. Мой вопрос: где находится сам виртуальный адрес? Потому что ЦП нужен этот виртуальный адрес для выполнения сопоставления. Где процессор получает этот адрес? и когда мы используем gdb для просмотра виртуального адресного пространства, где gdb берет все эти виртуальные адреса?

Например:

Виртуальный адрес 0x420000
Таблица таблицы 20
RAM 0x800000

Здесь 20 (запись таблицы страниц) находится в оперативной памяти.
0x800000 (физический адрес) находится в оперативной памяти.
Где находится информация 0x420000? CPU нужна эта информация откуда-то, иначе как он будет выполнять преобразование адресов?

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

2

Решение

Информация о виртуальных страницах (их статус, физическое местоположение и т. Д.) Хранится в таблица страниц. То, как реализована сама таблица страниц и где она хранится, во многом зависит от специфики ОС и базовой аппаратной поддержки. Хотя на первый взгляд это может показаться сложным, сама таблица страниц может даже храниться в виртуальной памяти.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]