Определение физического адреса из таблицы страниц виртуальной памяти - PullRequest
1 голос
/ 23 января 2011

Предполагая, что система подкачки виртуальной памяти со страницами длиной 4 Кб, мне выдали следующую таблицу

      P A M
0x003 1 1 0
0x04A 0 0 0
0xA78 1 1 1
0x0A1 1 0 0
0x000 1 0 0

*(P = presence digit, A = access digit, ; M = modified digit)*

и спросил, каков реальный адрес 0x003A78.

Я немного растерялся здесь, я думаю, идея состоит в том, чтобы разложить 0x003A78 на 2? Это будет 0x003 A78, так что это будет (2 * 4k) + 0x078?

Это или я заканчиваю на этом?

1 Ответ

2 голосов
/ 23 января 2011

Первый столбец будет «номером физической страницы».Вам просто нужно использовать номер виртуальной страницы (0x3A78 / 0x1000, то есть 3) в качестве индекса для этой таблицы.

Страница присутствует, поэтому номер физической страницы правильный, это означает, что физический адресбудет 0xA1 * 0x1000 + 0xA78 или 0x0A1A78.

...