#operating-system #paging #virtual-address-space
#операционная система #подкачка страниц #виртуальное адресное пространство
Вопрос:
Пример вопроса из прошлого финала операционной системы, как мне вычислить такого рода вопросы?
Компьютер имеет 64-разрядное виртуальное адресное пространство и 2048-байтовые страницы. Запись в таблице страниц занимает 4 байта. Многоуровневая таблица страниц используется потому, что каждая таблица должна содержаться на странице. Сколько уровней требуется?
Как бы мне это рассчитать?
Ответ №1:
Поскольку таблица страниц должна умещаться на странице, размер таблицы страниц составляет 2048 байт, а каждая запись — 4 байта, таким образом, таблица содержит 2048/4 = 512 записей. Для обращения к 512 записям требуется log2 (512) = 9 бит. Общее количество битов, доступных для кодирования записи для каждого уровня страницы, равно 64-log2 (2048) = 53 битам (количество битов адресного пространства минус биты смещения страницы). Таким образом, общее количество требуемых уровней равно 53/9 = 6 (округлено в большую сторону).
Размер таблицы страниц по умолчанию для x86-64 составляет 4096 байт, каждая таблица страниц должна умещаться на странице, а запись в таблице страниц составляет 8 байт. Текущие процессоры реализуют только 48 бит виртуального адресного пространства. Сколько уровней таблицы страниц требуется?
Комментарии:
1. 4096/8 = 512 записей; Для адреса 512 записей log2(512) = 9 бит. Общее количество битов для кодирования каждого уровня страницы равно 48 — log2 (4096) = 36 бит. Таким образом, общее количество требуемых уровней равно 36/9 = 4.
2. Поскольку 2048 указано в байтах, не следует ли его преобразовать в биты, что сделало бы его 50/9 = 6 округленным в большую сторону?
3. Нет, потому что вам нужно знать, сколько битов требуется для адреса 2048 байт, а не битов.
4. Возможно, я отвечу в 2014 году, но большое СПАСИБО!!
Ответ №2:
- Бит логического адреса =64,
- Номер страницы будет= 2^64/2048 = 2^64/2^11 = 2^53
- Страницы у нас есть входной синус таблицы страниц = 4 байта ,
- Количество записей на 1 странице будет = 2048/4=>512,
- бит для представления одной записи = Log (512)=9 бит,
- а бит для страницы равен = 53 битам
- Следовательно, номер уровня = 53/9=> Таблица страниц 6 уровня
Комментарии:
1. 2048 рассчитан на 2 тысячи страниц? Какая ОС их использует? Разве вы не хотите использовать здесь страницы 4K?