Почему 32-битная ОС поддерживает до 4 ГБ оперативной памяти - PullRequest
0 голосов
/ 28 января 2019

Итак, я знал, что 32-битная ОС может поддерживать 2 32 различных значений, что примерно равно 4x10 9 .

Я бы предположил, что внутреннее представление каждого значения выглядит следующим образом:

0000 0000 0000 0000 0000 0000 0000 0000

.....

1111 1111 1111 1111 1111 1111 1111 1111

Таким образом, у нас есть примерно 4x10 9 различных паттернов здесь.Но поскольку каждый адрес состоит из 4 байтов (32/8 = 4), разве ОЗУ не должно быть 4x4x10 9 ?

Ответы [ 4 ]

0 голосов
/ 28 января 2019

В современной ОС обычно есть виртуальные адреса, которые переводятся в физические адреса.

В 32-разрядной ОС виртуальные адреса часто (но не обязательно) 32-разрядные.С помощью байтовой адресации это означает, что вы можете иметь 1234 процесса, каждый из которых имеет 4 ГБ виртуального пространства (или всего 4936 ГБ виртуального пространства).Однако обычно каждое виртуальное адресное пространство разделяется на «пространство пользователя» в одной части и «пространство ядра» в другой части;так что это может быть больше как 2 ГиБ для каждого процесса плюс 2 ГиБ для ядра (или всего 2470 ГиБ для 1234 процессов).

Однако, поскольку виртуальные адреса преобразуются в физические адреса размером с виртуальныйадрес не должен совпадать с размером физического адреса.Это означает, что даже если виртуальные адреса являются 32-разрядными, физический адрес может быть больше (или меньше), чем 32-разрядный.Например, для большинства более старых процессоров 80x86 есть функция «Расширения физических адресов» (PAE), которая расширяет размер физического адреса до 36 бит (что дает вам физическое адресное пространство до 16 ГиБ), а для современных процессоров 80x86 (которые способныпод управлением 64-разрядной ОС) PAE был усовершенствован, чтобы позволить 32-разрядной ОС использовать физические адреса до («текущего архитектурного максимума») 52 бит, что дает размер физического адресного пространства до 4096 ТБ для 32-бит ОС (в теории).

Конечно, физическое адресное пространство содержит ОЗУ, некоторое ПЗУ, некоторые области для устройств и т. д. Например, с 16 ГБ физического адресного пространства, 1,5 ГБ может быть зарезервировано для вещейэто не ОЗУ, поэтому максимальный объем ОЗУ, который вы можете иметь (и максимум, который может использовать 32-разрядная ОС), может составлять 14,5 ГБ.

К сожалению (?), большинство материнских плат не поддерживаютмаксимальный объем оперативной памяти, который может использовать процессор.Например, многие современные процессоры поддерживают 48-битные физические адреса (256 ТБ физического адресного пространства), но я никогда не видел материнскую плату, способную поддерживать более 8 ТБ ОЗУ, а большинство современных материнских плат даже не поддерживают 1TIB RAM.

Таким же образом, различные операционные системы имеют свои ограничения.Например, большинство 32-разрядных версий Windows не поддерживают PAE (сначала из-за проблем с совместимостью драйверов устройств, а затем из-за того, что все приняли 64-разрядные версии, так что никого это не беспокоило);поэтому, если у вас был компьютер с (например) 8 ГБ ОЗУ, ОС не может использовать большую часть ОЗУ (и, вероятно, сможет использовать только 3 ГБ ОЗУ, потому что 1 ГБ пространства, вероятно, зарезервировано / используется ПЗУ)., устройства и т. д.).

Обратите внимание, что для 64-битных операционных систем на 80x86;виртуальные адреса являются 48-разрядными (не 64-разрядными), а физические адреса - от 32-разрядных (Atom) до 52-разрядных (а также не 64-разрядных);и Intel думала о расширении «5-уровневого пейджинга», которое позволит использовать 57-битные виртуальные адреса (которые по-прежнему не будут 64-битными).

В общем (если вы игнорируете конкретные процессоры);размер регистра общего назначения, размер виртуального адреса и размер физического адреса могут быть совершенно разными;и для 32-разрядной ОС (использующей 32-разрядные регистры общего назначения) размер виртуального адресного пространства может быть любым, а размер физического адресного пространства может быть любым;и максимальный объем ОЗУ, который вы можете иметь в физическом адресном пространстве, может быть любым.

0 голосов
/ 28 января 2019

Каждый адрес обращается к одному байту в типичных современных системах.

Даже если аппаратное обеспечение может передавать только четыре байта или восемь байтов за раз, каждому байту в таком блоке присваивается свой собственный адрес.Процессор может взаимодействовать только с аппаратным обеспечением памяти, используя 28 или 29 или другое количество бит, но он использует дополнительные биты для различения байтов в словах.

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

Итак, с 32 битами в адресе, 2 32 = 4 294 967 296 адресов доступны, и 4 294 967 296 адресов могут быть адресованы.В типичном современном оборудовании каждая из этих вещей является одним байтом.Часто не все из них доступны для пользовательских программ, так как некоторые адреса зарезервированы для специальных целей.

0 голосов
/ 28 января 2019

x86 - адрес байта, что означает, что каждый байт имеет уникальный адрес.Это делает (при нормальных обстоятельствах) общий объем адресуемой памяти равным 2^32 bytes (примерно 4 GB).А неадресуемая память (память, для которой у вас не может быть адреса) совершенно непригодна.

Из всего адресного пространства не все адреса относятся к основной памяти.Часть этого зарезервирована для ввода-вывода, поэтому максимальный объем ОЗУ даже ниже, чем 4 GB.


Я попытаюсь устранить вашу путаницу

Итак, мыздесь примерно 4x10 9 различных шаблонов.

правильно

Но поскольку каждый адрес состоит из 4 байтов (32/8 = 4)

не имеет значения

Разве ОЗУ не должно быть 4x4x10 9 ?

нет

Числобитов адреса определяет, сколько может быть разных значений.Мы уже определили, что 32 bits дает нам ровно 2^32 ≈ 4^10 разных адресов.Поэтому мы можем иметь ≈4^10 различных объектов, которые имеют уникальные адреса.Терпите меня, давайте подумаем немного за пределами коробки.Если бы адреса были адресами городов, то мы могли бы иметь максимум ≈4^10 городов.Если бы адреса были адресами улиц, мы могли бы иметь максимум ≈4^10 улиц.Если бы адреса были адресами яблок, мы могли бы иметь максимум ≈4^10 яблок.Со мной?Если бы адреса были адресами 64-bit QWORDS, то мы могли бы иметь максимум ≈4^10 64-bit qwords.Если бы адреса были адресами 32-bit DWORDS, то мы могли бы иметь максимум ≈4^10 32-bit qwords.Но в x86 адрес не является ни одним из вышеперечисленных.В x86 адрес - это адрес байта (8 бит), поэтому мы можем иметь максимум ≈4^10 bytes aka ≈4 GiB.

Как видите, ширина адреса дает только числоразличных объектов мы можем обратиться.В x86 эти объекты являются байтами, поэтому мы можем иметь максимум 2^32 адресуемых байтов.


Нормальный предел 2^32 bytes можно преодолеть с помощью Расширение физического адреса .Для этого требуется поддержка как ОС, так и аппаратного обеспечения (ЦП, чипсет и материнская плата), и даже если они выполнены, каждая программа может работать только с адресами 32 bit.

0 голосов
/ 28 января 2019

[ Скорее всего, я неправильно понял вопрос.Я мог бы удалить этот ответ позже. ]

Для системы с 32-битными (4-байтовыми - предполагается 8-битными) адресами существует 2 32 различных адресовценности.Если пространство памяти полностью заполнено ОЗУ, то вы можете использовать 32-битный адрес для обращения к любому из 2 32 байтов памяти в системе.

Но вы можете 't хранить все эти 2 32 значения адресов в памяти одновременно.Как вы говорите, вам потребуется 4 * 2 32 байт для хранения всех этих значений адреса.

К счастью, нет необходимости хранить все эти различные значения адресов памяти в памяти.Вам нужно хранить только те значения адресов, которые вы фактически используете.

(я игнорирую проблемы виртуальной и физической памяти.)

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