Википедия говорит

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

...

Размер страницы обычно определяется архитектурой процессора. Традиционно страницы в системе имели одинаковый размер, например 4096 байт. Однако конструкции процессоров часто допускают два или более, иногда одновременных, размера страницы из-за преимуществ и штрафов.

Мы знаем, что 32-разрядный процессор может адресовать максимум 2 ^ 32 байта = 4 ГБ памяти. Почему в расчете используется байт, а не страница?

Если страница имеет размер 4096 байт, то 32-разрядный процессор может адресовать гораздо больший объем памяти.

Я что-то упускаю или неправильно понимаю?

3 ответа3

2

Причина в том, что процессор не обращается к целой странице за раз; он обращается к каждому отдельному байту. Страница - это просто блок, который используется для выделения памяти и установки разрешений для нее. Также в этой статье в Википедии есть ошибка: дисковый ввод-вывод не выполняется в единицах страницы; это делается в секторах, которые обычно составляют 512 байт.

1

В старые времена память мэйнфреймов была описана так много слов. Где слова были определены аппаратными средствами (18,20,30,32,60, ... биты). Когда пришли мини и ПК, память была описана байтами (4K до 64K). Теперь у нас намного больше памяти, и она все еще описывается количеством байтов. То, что вы говорите, правда, и страницы могут быть лучшим способом описания этого. Как вы говорите, 32-битный процессор может адресовать 4 ГБ памяти. Больше и это нужно делать с помощью пейджинга. Эффективно использовать пейджинг для управления памятью. Размер страницы может варьироваться в разных ОС, поэтому байты по-прежнему являются единственным способом узнать фактический объем памяти (с необходимостью узнать размер страницы). В основном я думаю, что так было всегда.

0

Страница Википедии неверна или, в лучшем случае, вводит в заблуждение в нескольких деталях.

Это наименьшая единица данных для выделения памяти, выполняемая операционной системой от имени программы

Исправьте только для тех вызовов выделения памяти, которые работают в единицах страниц. В Windows, например, это будет VirtualAlloc. Но процедуры управления кучей, безусловно, могут работать с меньшими приращениями. (И прежде чем кто-то скажет «но это не операционная система, все подпрограммы кучи находятся в пользовательском пространстве», учтите, что существует куча пространства ядра… и некоторые вещи, которые программы делают из пользовательского режима, требуют, чтобы ОС выделяла ядро куча ... и выделение кучи ядра происходит не по размеру страницы.)

и для передачи между основной памятью и любым другим вспомогательным хранилищем, таким как жесткий диск.

Это тоже не правда. Это верно для переводов из-за подкачки. Но контроллер диска и диска может обрабатывать передачи только одного блока, что обычно означало 512 байт. Утверждение, что любое "другое вспомогательное хранилище" составляет преступление: ленточные накопители могут обрабатывать операции чтения и записи практически произвольной длины блоков.

Как правильно заявили другие ответчики, ЦП адресует байты, и поэтому количество битов, доступных для адресов, определяет количество байтов, которые могут быть адресованы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .