Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 246 из 715





Шестнадцатиричный адрес 58432

Двоичный 0101 1000 0100 0011 0010

Номер страницы, смещение внутри страницы 01 0110 0001 00 0011 0010

В шестнадцатиричной системе161 32



Рисунок 6.3. Адресация физической памяти по страницам



Логический номер страницы Физический номер страницы

0 177

1 54

2 209

3 17



Рисунок 6.4. Отображение логических номеров страниц на физические

Ядро устанавливает соотношение между виртуальными адресами области и машинными физическими адресами посредством отображения логических номеров страниц в области на физические номера страниц в машине, как это показано на Рисунке 6.4. Поскольку область это непрерывное пространство виртуальных адресов программы, логический номер страницы служит указателем на элемент массива физических номеров страниц. Запись таблицы областей содержит указатель на таблицу физических номеров страниц, именуемую таблицей страниц. Записи таблицы страниц содержат машинно-зависимую информацию, такую как права доступа на чтение или запись страницы. Ядро поддерживает таблицы страниц в памяти и обращается к ним так же, как и ко всем остальным структурам данных ядра.

На Рисунке 6.5 приведен пример отображения процесса в физические адреса памяти. Пусть размер страницы составляет 1 Кбайт и пусть процессу нужно обратиться к объекту в памяти, имеющему виртуальный адрес 68432. Из таблицы областей видно, что виртуальный адрес начала области стека — 65536 (64К), если предположить, что стек растет в направлении увеличения адресов. После вычитания этого адреса из адреса 68432 получаем смещение в байтах внутри области, равное 2896.

|< Пред. 244 245 246 247 248 След. >|

Java книги

Контакты: [email protected]