Почему 32-разрядная ОС поддерживает 4 ГБ RAM?

Clojure с помощью 37 символов:

user=> (defn p[s](=(seq s)(reverse(seq s))))
#'user/p
user=> (p "radar")
true
user=> (p "moose")
false
27
задан Sinan Ünür 13 July 2009 в 15:18
поделиться

10 ответов

Потому что 32 бита могут представлять числа до 2 32 - 1 = 4294967295 = 4 ГиБ - 1 и, следовательно, адрес до 2 32 отдельные байты, которые тогда составили бы 4 ГиБ.

Однако есть способы обойти это. Например, используя PAE , даже 32-разрядная операционная система может поддерживать больше памяти. Однако исторически это чаще всего использовалось на серверах. Кроме того, не серверные SKU Windows не поддерживают его. Однако к настоящему времени все это под вопросом, учитывая, что 64-битные процессоры, операционные системы и поддержка драйверов стали обычным явлением.

56
ответ дан 28 November 2019 в 04:01
поделиться

4 ГБ = 2 ^ 32 байта.

11
ответ дан 28 November 2019 в 04:01
поделиться

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

27
ответ дан 28 November 2019 в 04:01
поделиться

Все говорят, что 2 ^ 32 = 4 ГиБ, и это правильно. На всякий случай вот как мы к этому пришли:

32-битная машина использует 32 бита для адресации памяти. Каждый бит имеет значение 0 или 1. Если у вас 1 бит, у вас есть два возможных адреса: 0 или 1. Двухбитная система (не считая каламбура) имеет четыре возможных адреса: 00 = 0, 01 = 1, 10 = 2, 11 = 3. 2 ^ 2 = 4. Три бита имеют 8 возможных адресов: 000 = 0, 001 = 1, 010 = 2, 011 = 3, 100 = 4, 101 = 5, 110 = 6 и 111 = 7.

Каждый бит удваивает потенциальное адресное пространство, поэтому 2 ^ n сообщает вам, сколько адресов вы используете для данного количества бит. 2 ^ 1 = 2, 2 ^ 2 = 2 * 2 = 4, 2 ^ 3 = 2 * 2 * 2 = 8 и т. Д.

К тому времени, когда вы перейдете к 32 битам, вы достигнете 4GiB.

22
ответ дан 28 November 2019 в 04:01
поделиться

На самом деле, это не так просто, как 2 ^ 32 = 4294967296 байтов. Вы видите, что в защищенном режиме x86 с включенным разбиением по страницам (то есть тем, что вы получаете при использовании любой современной ОС) вы не обращаетесь к ячейкам памяти напрямую, даже несмотря на то, что механизм трансляции подкачки прозрачен для клиентских приложений.

логический 32-битный адрес памяти при использовании страниц 4K:

  • биты 22-31 относятся к каталогу страниц
  • биты 12-21 относятся к таблице страниц
  • биты 11-0 относятся к смещению в 4096 байтовая страница

Как видите, у вас есть каталоги страниц 2 ^ 10 (1024), в каждом каталоге страниц у вас есть таблицы страниц 2 ^ 10, и каждая страница имеет длину 2 ^ 12 (4096) байтов, следовательно, 2 ^ 32 = 4294967296 байт. Ширина шины памяти для удобства совпадает с длиной слова процессора, но совсем не обязательно. Фактически, более современные процессоры x86 поддерживают PAE, который позволяет адресовать более 4 ГБ (или ГиБ) даже в 32-битном режиме.

5
ответ дан 28 November 2019 в 04:01
поделиться
2 ^ 32 = 4 * 1024 * 1024 * 1024

Это в байтах определение 4 ГБ. Другими словами, 32-битный регистр в качестве указателя памяти может адресовать 4 ГБ памяти и не более.

9
ответ дан 28 November 2019 в 04:01
поделиться

В основном из-за того, что 32-битная ОС выбрала поддержку только 2 ^ 32-1 адресов.

Если ЦП имеет более 32 адресных строк на FSB, то 32-битная ОС может выбрать использование механизма подкачки для доступа к более чем 4 ГБ. (Например, выпуски Windows 2000 Advanced Server / Data Center на чипах Intel / AMD с поддержкой PAE)

1
ответ дан 28 November 2019 в 04:01
поделиться

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

Но на самом деле это не всегда так (в большинстве случаев это не так. t), ОС может обрабатывать больше физической памяти, чем это (с PAE), а приложения могут использовать менее 4 ГБ виртуальной памяти (поскольку часть этой виртуальной памяти сопоставлена ​​с ОС, например, 1 ГБ в Linux и 2 ГБ в Windows ).

Другой сценарий, в котором это неприменимо: если память адресована словами, а не байтами, то общая адресуемая память будет, например, 16 ГБ.

2
ответ дан 28 November 2019 в 04:01
поделиться

Как ранее указывалось другими пользователи, 32-битные ОС Windows используют 32-битные слова для хранения адресов памяти.

Фактически, большинство 32-битных чипов в наши дни используют 36-битную адресацию с использованием модели Intel Physical Address Extension (PAE) . Некоторые операционные системы поддерживают это напрямую (например, Linux).

Как указывает Рэймонд Чен, в Windows 32-битное приложение может выделять более 4 ГБ памяти, и вам не нужна 64-битная Windows сделать это . Или даже PAE.

В этом отношении 64-битные микросхемы не поддерживают все 64-битное пространство памяти.

0
ответ дан 28 November 2019 в 04:01
поделиться

4 ГБ = 2 ^ 32 байта. Но помните, что его максимум 4 ГБ выделяется 32-битной ОС. В действительности, ОС будет видеть меньше, например, после выделения VRAM.

0
ответ дан 28 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: