5

Я читаю новую книгу Windows Internals 5 об управлении памятью (глава 9 в разделе PAE расширения физических адресов). Упоминается «32-разрядная система представляет внутренние адреса с 24-разрядными физическими данными» на странице 770. Я полностью сбит с толку, и я думаю, что физическая память x86 должна быть также адресована 32-битной, и именно поэтому система называется 32-битной системой.

Есть идеи, что не так?

3 ответа3

2

Вот больше подробностей о том, что означает загрузка /PAE из главы 7 книги Дэвида Соломона и Марка Руссиновича «Внутри Windows 2000».

Все процессоры семейства Intel x86, начиная с Pentium Pro, включают режим отображения памяти, называемый расширением физических адресов (PAE). При правильном наборе микросхем режим PAE обеспечивает доступ к 64 ГБ физической памяти. Когда x86 выполняется в режиме PAE, модуль управления памятью (MMU) делит виртуальные адреса на четыре поля.

MMU по-прежнему реализует каталоги страниц и таблицы страниц, но над ними существует третий уровень, таблица указателей каталогов страниц. Режим PAE может адресовать больше памяти, чем стандартный режим перевода, не из-за дополнительного уровня трансляции, а потому, что PDE и PTE имеют ширину 64 бита, а не 32 бита. Система представляет физические адреса внутри с 24 битами, что дает x86 возможность поддерживать максимум 2 ^ (24+12) байтов или 64 ГБ памяти

Редактировать: как говорит Джордж Так 24 бита номеров страниц представляют 24+12 = 36 бит байтовых адресов. Это расширение адреса в 32-битном нормальном пространстве.

1

Я читаю главу «Расширение физических адресов» (PAE) в четвертом издании Windows Internals (стр. 435–437) и не могу найти ссылку на 24 бита. Существует ссылка на 25 битов, используемых для адреса базовой страницы, что означает, что адресуемое пространство становится 2 ^ (12 + 25) = 128 ГБ. Но мы вернемся к этому. Сначала давайте посмотрим, как линейный адрес преобразуется в физический адрес (и это прекрасно описано в книге): линейный адрес разбивается на три части:

  • 12 младших битов смещены в пределах страницы, обращаясь к любому байту на странице 4 КБ;
  • следующие 10 битов являются индексом записи в таблице страниц (PTE), которая содержит базовый адрес (физический адрес первого байта) страницы;
  • старшие 10 битов являются индексом записи в таблице каталогов страниц (PDE), которая содержит базовый адрес для PTE.

Каждый элемент в PTE и PDE содержит 32-битную запись, 20 бит которой содержат физический адрес страницы или таблицы следующего уровня соответственно. Другие 12 битов - это флаги, описывающие страницу или таблицу (читаемые / записываемые / исполняемые и т.д.). Так работали 80386, x486 и Pentium.

Теперь Pentium Pro и более новые процессоры при работе в режиме PAE используют записи шириной 64 бита в таблицах PDE и PTE. В этих записях может быть использовано до 40 бит для кодирования базового адреса страницы в памяти. Это означает, что режим PAE теоретически может адресовать 2 ^ 40 страниц (1T страниц) размером 2 ^ 12 (4 КБ каждая). Общее теоретическое адресное пространство составляет 2 ^ (40 + 12) = 2 ^ 52 = 4 Петы байтов. Однако операционные системы не используют все эти 40 бит. Например, Windows использует только 24 из них, что приводит к общему адресуемому адресному пространству в 2 ^ (24 + 12) = 2 ^ 36 = 64 Гбайт.

Видимо, разные версии (разновидности) Windows используют разное количество битов в этой таблице, что кажется немного странным. Согласно 4-му изданию рассматриваемой книги, в этом случае используется 25 бит, что увеличивает адресное пространство до 128 Гб, и это также подтверждается этой страницей. Это является источником несоответствия между 4-м и 5-м изданием, упомянутым выше.

Для более подробного объяснения того, как происходит перевод, взгляните на страницы 4-17 и 4-18 (глава 4.4.2) Руководства разработчика программного обеспечения Intel 64 и IA32 Architectures.

О, да, и система называется 32-битной не потому, что она адресует 2 ^ 32 байта. Это потому, что он работает в режиме, когда внутренние регистры имеют ширину 32 бита (что уже не всегда верно, но достаточно близко к реальности). Если бы адресное пространство определяло имя ОС, то DOS была бы 20-битной ОС, а старые Mac были бы 24-битной ОС

0

Это относится к отображению 32-разрядного виртуального адресного пространства в 24-разрядное физическое адресное пространство. Обычно 20-битный номер виртуальной страницы преобразуется в 12-битный номер физической страницы, а оставшиеся биты смещаются на страницу.

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