Имеется система виртуальной памяти, которая использует 32-битный виртуальный адрес.Таблица страниц, которая занимает 1 МБ памяти на процесс.Каждый PTE (запись таблицы страниц требует 4 байта. Всего в системе доступно 256 мегабайт памяти.
Я понимаю, что таблица страниц - это, по сути, список записей (PTE), которые обеспечивают отображение виртуальной памяти.адреса к физическому адресу.
Мне нужно рассчитать размер каждой виртуальной страницы. Но я понятия не имею, как. Пока все, что у меня есть, это 2 ^ 20 (размер таблицы страниц) / 2 ^2 (размер PTE) = 2 ^ 18, это дает мне общее количество записей, которые я могу иметь в таблице страниц. Я даже не уверен, полезно ли это для определения размера каждой виртуальной страницы.
Может ли кто-нибудь указать мне правильное направление? Возможно, я неправильно понимаю, как эти показатели соотносятся с размером виртуальной страницы.
Редактировать: я обнаружил, что размер страницы определяется следующимВиртуальный адрес состоит из битов для указателя страницы и смещения. Последние биты виртуального адреса называются смещением, которое представляет собой разность местоположений между желаемым байтовым адресом и началомстраница.Требуется достаточное количество битов в смещении, чтобы можно было добраться до любого байта на странице. Для страницы 4K требуется (4K == (4 * 1024) == 4096 == 212 ==) 12 битов смещения.
Указатель страницы может быть определен по количеству записей в таблице.Это была просто моя формула до 2 ^ 20 (размер таблицы страниц) / 2 ^ 2 (размер PTE) = 2 ^ 18 записей.Это означает, что в моем виртуальном адресе для моего указателя страницы используется 18 бит.Я могу определить смещение 2 ^ 32 (размер виртуального адреса) / 2 ^ 18, что дает мне 2 ^ 14.Поэтому мой размер страницы для моего виртуального адреса составляет 2 ^ 14 или 16 КБ.