Подтвердить что ты не робот

Вычисление размера таблицы страниц

Я читаю пример таблиц страниц и просто нашел это:

Рассмотрим систему с 32-разрядным логическим адресным пространством. Если размер страницы в такой системе составляет 4 КБ (2 ^ 12), тогда таблица страниц может содержать до 1 миллиона записей (2 ^ 32/2 ^ 12). Предполагая, что каждая запись состоит из 4 байтов, каждому процессу может потребоваться до 4 МБ физического адресного пространства только для таблицы страниц.

Я действительно не понимаю, что представляет этот результат 4MB. Означает ли это пространство, которое занимает фактическая таблица страниц?

4b9b3361

Ответ 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