Я читаю главу расширение физического адреса (PAE) в четвертом издании Windows Internals (страницы 435-437), и я не могу найти ссылку на 24 бита. Существует ссылка на 25 бит, используемых для базового адреса страницы, что означает, что адресуемое пространство становится 2 ^ (12 + 25) = 128GB. Но мы к этому еще вернемся. Сначала давайте посмотрим, как линейный адрес преобразуется в физический адрес (и это прекрасно описано в книге): линейный адрес разделяется на три кусочки:
- 12 младших битов смещаются в пределах страницы, адресуя любой байт на странице 4Kb;
- следующие 10 бит-это индекс записи в таблице страниц (PTE), которая содержит базовый адрес (физический адрес первого байта) страницы;
- самые высокие 10 битов индекс показателя в таблице директории страницы (PDE), которая содержит низкопробный адрес для PTE.
каждый деталь в PTE и PDE содержит трицатидвухразрядный показатель, 20 битов которые содержат физический адрес страницы или таблицы следующего уровня соответственно. Остальные 12 бит-это флаги, описывающие страницу или таблицу (читаемые/записываемые/исполняемые и так далее). Так работали 80386, x486 и Pentium.
теперь, Pentium Pro и более новые процессоры, при работе в режиме PAE, использовать 64-разрядные записи в таблицах PDE и PTE. В этих записях можно использовать до 40 бит для кодирования базового адреса страницы в памяти. Это означает, что режим PAE теоретически может адрес 2 ^ 40 страниц (1T страниц) из 2 ^ 12 (4Kb каждая). Общая теоретическая адресного пространства 2 ^ (40 + 12) = 2 ^ 52 = 4Peta байт. Однако, операционные системы не используют все эти 40 бит. Например, Windows использует только 24 из них, что приводит к общему адресному адресному пространству 2 ^ (24 + 12) = 2 ^ 36 = 64G байт.
по-видимому, разные версии (разновидности) Windows используют разное количество бит в этой таблице, что кажется немного странным. Согласно 4-му изданию книги в вопрос, в данном случае используется 25 бит, что доводит адресуемое пространство до 128 ГБ, и это также подтверждается на этой странице. Это является источником расхождения между 4-м и 5-м изданиями, упомянутыми выше.
для более подробного объяснения того, как происходит перевод, взгляните на страницы 4-17 и 4-18 (глава 4.4.2) из Intel 64 и ia32 архитектуры руководство разработчика программного обеспечения
О, да, и система называется 32-битной не потому, что он адресует 2^32 байта. Это потому, что он работает в режиме, в котором внутренние регистры 32-битные (что не всегда верно, но достаточно близко к реальности). Если бы адресуемое пространство определяло имя ОС, то DOS была бы 20-битной ОС, а старые Mac были бы 24-битной ОС