Вычисление размера таблицы страниц
Я читаю пример таблиц страниц и просто нашел это:
Рассмотрим систему с 32-разрядным логическим адресным пространством. Если размер страницы в такой системе составляет 4 КБ (2 ^ 12), тогда таблица страниц может содержать до 1 миллиона записей (2 ^ 32/2 ^ 12). Предполагая, что каждая запись состоит из 4 байтов, каждому процессу может потребоваться до 4 МБ физического адресного пространства только для таблицы страниц.
Я действительно не понимаю, что представляет этот результат 4MB. Означает ли это пространство, которое занимает фактическая таблица страниц?
Ответы
Ответ 1
Поскольку у нас есть виртуальное адресное пространство 2 ^ 32, и размер каждой страницы 2 ^ 12, мы можем хранить (2 ^ 32/2 ^ 12) = 2 ^ 20 страниц. Поскольку каждая запись в эту страницу таблицы имеет адрес размером 4 байта, то мы имеем 2 ^ 20 * 4 = 4 МБ. Таким образом, таблица страниц занимает 4 МБ в памяти.
Ответ 2
Предположим, что логическое адресное пространство равно 32 бит, поэтому суммарные возможные логические записи будут 2 ^ 32, а другая сторона предположит, что размер каждой страницы 4 байт, то размер одной страницы * 2 ^ 2 * 2 ^ 10 = 2 ^ 12... *
теперь мы знаем, что нет. страниц в таблице страниц
pages = общее количество возможных логических адресов/размер страницы
поэтому страницы = 2 ^ 32/2 ^ 12 = 2 ^ 20
Предположим теперь, что каждая запись в таблице страниц занимает 4 байта, тогда общий размер таблицы страниц в физической памяти * будет = 2 ^ 2 * 2 ^ 20 = 2 ^ 22 = 4mb ***
Ответ 3
Так как пространство логического адреса имеет длину 32 бит, это означает, что размер программы составляет 2 ^ 32 байта, то есть 4 ГБ.
Теперь у нас размер страницы 4KB ie2 ^ 12 байтов. Таким образом, количество страниц в программе составляет 2 ^ 20 (количество страниц в программе = размер программы/размер страницы). Теперь размер записи в таблице страниц равен 4 поэтому размер таблицы страниц составляет 2 ^ 20 * 4 = 4 МБ (размер страницы таблицы = количество страниц в файле * размер страницы таблицы страниц). Следовательно, для хранения таблицы страниц в памяти требуется 4 МБ пространства.
Ответ 4
В моем объяснении используются элементарные строительные блоки, которые помогли мне понять. Примечание. Я использую @Deepak Goyal ответ выше, поскольку он обеспечивал ясность:
Нам было предоставлено логическое 32-разрядное адресное пространство (т.е. у нас есть 32-разрядный компьютер)
Рассмотрим систему с 32-разрядным логическим адресным пространством
Нам также сказали, что
размер каждой страницы составляет 4 КБ
- 1 КБ (килобайт) = 1 х 1024 байта = 2 ^ 10 байт
- 4 x 1024 байта = 2 ^ 2 x 2 ^ 10 байтов = > 4 КБ (т.е. 2 ^ 12 байтов)
- Размер каждой страницы, таким образом, 4 KB (Kilo байты не килограммы ).
Как сказал Депаак, мы вычисляем количество страниц в таблице страниц с помощью этой формулы:
Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size
Num_Pages_in_PgTable = 2^32 / 2^12
Num_Pages_in_PgTable = 2^20 (i.e. 1 million)
Авторы продолжают приводить случай, когда каждая запись в таблице страниц занимает 4 байта. Это означает, что общий размер таблицы страниц в физической памяти будет 4 МБ:
Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable
Memory_Required_Per_Page = 4 x 2^20
Memory_Required_Per_Page = 4 MB (Megabytes)
Итак, для каждого процесса потребуется, по меньшей мере, 4 МБ памяти, с шагом 4 МБ.
Пример
Теперь, если профессор хотел сделать вопрос более сложным, чем объяснение из книги, они могут спросить о 64-битном компьютере. Пусть говорят, что они хотят иметь память в битах. Чтобы решить вопрос, мы будем следовать одному и тому же процессу, только обязательно конвертируем MB в Mbits.
Пропустите этот пример.
Гивенс:
- Логическое адресное пространство: 64-разрядное
- Размер страницы: 4KB
- Entry_Size_Per_Page: 4 байта
Отзыв: 64-разрядная запись может указывать на один из 2 ^ 64 физических страниц - Поскольку размер страницы составляет 4 КБ, тогда у нас есть 2 ^ 12 размер страниц байта
- 1 КБ (килобайт) = 1 х 1024 байта = 2 ^ 10 байт
- Размер каждой страницы = 4 x 1024 байта = 2 ^ 2 x 2 ^ 10 байтов = 2 ^ 12 байтов
Сколько страниц в таблице страниц?
`Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size
Num_Pages_in_PgTable = 2^64 / 2^12
Num_Pages_in_PgTable = 2^52
Num_Pages_in_PgTable = 2^2 x 2^50
Num_Pages_in_PgTable = 4 x 2^50 `
Сколько памяти в BITS на странице?
Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable
Memory_Required_Per_Page = 4 bytes x 8 bits/byte x 2^52
Memory_Required_Per_Page = 32 bits x 2^2 x 2^50
Memory_Required_Per_Page = 32 bits x 4 x 2^50
Memory_Required_Per_Page = 128 Petabits
[2]: Концепции операционной системы (9-й редактор) - Ганье, Сильбершац и Галвин
Ответ 5
В 32-битной виртуальной адресной системе у нас может быть 2 ^ 32 уникальный адрес, так как размер страницы 4KB = 2 ^ 12, нам понадобятся записи (2 ^ 32/2 ^ 12 = 2 ^ 20) на странице table, если каждая запись равна 4Bytes, тогда общий размер таблицы страниц = 4 * 2 ^ 20 Bytes = 4MB