Трансляция адресов виртуальной памяти - PullRequest
1 голос
/ 03 марта 2012

Я читал о том, как Виртуальная память и Управление памятью работает в операционной системе. Я понял, как каждый процесс имеет свое собственное смежное логическое адресное пространство. Это адресное пространство не обязательно должно быть непрерывным в физической памяти. Для этого используется пейджинг. Таблицы страниц используются для преобразования логического адреса в физический адрес. Логический адрес разделен на две части, первая часть содержит номер логической страницы, который с помощью таблицы страниц преобразуется в физический номер страницы, а вторая часть смещается на эту страницу. Таким образом, содержимое из памяти извлекается.
Виртуальная память является расширением этого, когда все страницы не обязательно должны быть в основной памяти, и могут быть перенесены туда через ошибки страниц.

Используя мое понимание, я решил 4-й вопрос на этой странице: www.ics.uci.edu / ~ bic / courses / JaverOS / ch8-ex.pdf

Я неправильно понял свои ответы, и я понятия не имею, что такое правильные ответы. Вот как я это сделал:

From the diagram in the question, Page table for Process P1 will look like this according to me:
0-4
1-5
2-6
3-7

So when process P1 makes a reference to 0 i.e is 0000 in 4 bit binary, we divide 
it as 00|00. 
Thus logical page no = 00 and offset = 00.
From the page table, we can see 0 is mapped to 4th physical frame. 
Offset is also 00 here. So I get the 0th entry(offset) in the 4th frame. 
The content at this memory location(i.e Frame No. 4, offset 0) is 0.

Почему это не так? Кто-нибудь может помочь?

Ответы [ 2 ]

3 голосов
/ 03 марта 2012

Я начну с виртуального адреса 8, он должен лучше проиллюстрировать вещи.

8 = 2 × 4 + 0. Физический адрес сохраняется по смещению 0 на странице 2 процесса. Смотрим вторую страницу. Для P1 адрес страницы 2 хранится в PA 4 + 2, и он равен 28. Мы ищем содержимое PA 28 и получаем значение 0. Для P2 адрес страницы 2 сохраняется в PA 12 + 2, это 24 содержание PA 24 составляет 5.

Теперь с виртуальным адресом 15, который иллюстрирует исключительные случаи.

15 = 3 × 4 + 3. Физический адрес сохраняется по смещению 3 страницы процесса 3. Для P1 адрес страницы 3 сохраняется в PA 4 + 3, который содержит -2. Бит знака указывает на то, что страница находится за пределами физической памяти, что означает сбой жесткого диска (ситуация, в которой ОС обрабатывает исключительно, но не ошибку). Для P2 адрес страницы 3 хранится в PA 12 + 3, что, как говорит нам какой-то специальный механизм (ядовитое значение, таблица внешних кадров?), Недопустимо. Это ошибка, и о ней сообщают как об ошибке сегментации.

Последний пример с VA 7 и P1 для объяснения смещений:

7 = 1 × 4 + 3. Физический адрес сохраняется по смещению 3 на странице 1. P1. Страница 1 находится на PA 8, смещение 3 на странице 1 - на PA 8 + 3.

0 голосов
/ 03 марта 2012

Я предполагаю, что диаграмма показывает физическую память и физические адреса слева. Не имеет смысла позволять p1 и p2 напрямую обращаться к своим таблицам страниц и страницам друг друга.

Учитывая, что для виртуального адреса 0 вы выбираете -45 из фрейма страницы 1 для p1 и 0 из фрейма страницы 3 для p2.

Для VA = 1 вы выбираете 8 и -12 соответственно.

Для VA = 4 вы ничего не получаете, потому что это за пределами определенных таблиц страниц для p1 и p2 (так я интерпретирую «Размер каждой страницы и таблицы страниц равен 4» и «Таблица страниц p1 начинается с адреса 4; таблица страниц p2 начинается с адреса 12. "; если моя интерпретация неверна, то и постановка задачи также неверна). То же самое относится и к остальным виртуальным машинам, потому что они больше или равны 4 и выходят за пределы определенных таблиц страниц.

Затем вы можете получить окончательные ответы отсюда.

...