Я знаю, что если страницы нет в основной памяти, то ЦП принесет ее из файла подкачки. Таким образом, если виртуальный адрес не имеет своего аналога физического адреса, ЦП доставит его с диска. Таким образом, сопоставление с виртуальным адресом может быть в одном из двух мест: либо в физической памяти, либо на диске. Мой вопрос: где находится сам виртуальный адрес? Потому что ЦП нужен этот виртуальный адрес для выполнения сопоставления. Откуда ЦП берет этот адрес? и когда мы используем gdb для просмотра виртуального адресного пространства, откуда gdb берет все эти виртуальные адреса?
Например:
Виртуальный адрес 0x420000
Таблица страниц 20
RAM 0x800000
Здесь 20 (запись таблицы страниц) находится в оперативной памяти. 0x800000 (физический адрес) находится в оперативной памяти. Где находится информация 0x420000? Процессору откуда-то нужна эта информация, иначе как бы он выполнял трансляцию адресов?
теперь я думаю, что знаю, откуда берется информация о виртуальном адресе. Он поступает из самой прикладной программы со счетчика ПК, после чего он передает его ЦП, а затем ЦП выполняет преобразование.