если у меня есть виртуальный адрес: 0xF3557100, как мне преобразовать его в физический адрес и каковы значения смещения, каталога страниц и таблицы страниц?
PTE (запись таблицы страниц) для этого адреса имеет значение 0x87124053.
спасибо
если у меня есть виртуальный адрес: 0xF3557100, как мне преобразовать его в физический адрес и каковы значения смещения, каталога страниц и таблицы страниц?
PTE (запись таблицы страниц) для этого адреса имеет значение 0x87124053.
спасибо
К сожалению, то, что вы спрашиваете, зависит от системы. Для начала вам нужно знать размер страницы.
В простейшем случае младшие биты, соответствующие размеру страницы, являются смещением, а оставшиеся старшие биты определяют запись в таблице страниц.
Вы говорите, что у вас есть значение записи таблицы страниц. Затем вам нужно знать структуру записи таблицы страниц. Часть этого будет указывать на физический адрес. Другие части будут определять атрибуты страницы.
Короче говоря, нам нужно знать намного больше информации.
В общем из этой инфы нельзя перевести ВА в ПА. Каждая архитектура имеет некоторое постоянное значение для PAGE_SHIFT. поскольку ваш адрес 32-битный, большая часть такой архитектуры имеет 12-битное значение PAGE_SHIFT. это значение определяет значение смещения, поэтому ваше значение смещения составляет 12 бит. Это также означает, что размер вашей страницы составляет 4096 байт. даже несмотря на то, что архитектура может поддерживать более одного значения для PAGE_SHIFT, мы принимаем случай 12-битного смещения, которое обычно является значением по умолчанию в большинстве систем, создающих страницу 4096.
PTE содержит адрес кадра/номера страницы вместе с другой информацией о состоянии и защите. Младшие 12 бит в PTE используются для состояния и защиты, а остальные 20 бит используются для PPN. как правило, номер виртуального кадра сопоставляется с номером физического кадра, и смещение в обоих случаях одинаково. поэтому исключите младшие 12 бит из PTE и добавьте 12 младших битов из va.
поэтому смещение от va равно 0x100, поэтому физический адрес равен 0x87124100 в соответствии с правилом 10-10-12 (для этого деления нет общего правила)
смещение = 12 бит
таблица страниц = каталог страниц = 10 бит
теперь вы МОЖЕТЕ легко вычислить соответствующее значение битов по заданному адресу.
1111001101 0101010111 000100000000
смещение каталога страниц = 1111001101
смещение таблицы страниц = 0101010111
смещение страницы = 000100000000