Почему 32-битная ОС поддерживает 4 ГБ ОЗУ? - PullRequest
27 голосов
/ 13 июля 2009

Просто читая некоторые заметки в лекции о ОС , где написано:

Программа видит память как массив байты, которые идут от адреса 0 до 2 ^ 32-1 (от 0 до 4 ГБ-1)

Почему 4 ГБ?

Ответы [ 12 ]

56 голосов
/ 13 июля 2009

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

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

25 голосов
/ 13 июля 2009

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

22 голосов
/ 13 июля 2009

Все говорят, что 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 бита, вы уже на 4 ГБ.

11 голосов
/ 13 июля 2009

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

9 голосов
/ 26 октября 2016

Если у вас 4-битная система, это означает, что адрес для каждого байта равен 4 двоичным цифрам , вероятность того, что ваш адрес будет варьироваться от 0000 до 1111, что составляет 2^4 = 16 (2, потому что есть либо 0, либо 1), с четырьмя битами можно создать 16 разных значений нулей и единиц, если у вас есть 16 разных адресов. каждый представляет byte, тогда вы можете иметь максимум 16 bytes

4-битная система будет выглядеть так:

enter image description here

Для 32-битной системы ваш максимум составляет 2^32 = 4294967292 bytes

9 голосов
/ 13 июля 2009
2 ^ 32 = 4 * 1024 * 1024 * 1024

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

5 голосов
/ 13 июля 2009

На самом деле, это не так просто, как 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-разрядном режиме.

2 голосов
/ 13 июля 2009

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

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

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

1 голос
/ 13 июля 2009

Главным образом из-за 32-битной ОС, поддерживающей только 2 ^ 32-1 адреса.

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

0 голосов
/ 19 мая 2019
  1. 32 бит с представляют числа 0..4,294,967,296
  2. 32 бит с может использоваться для адресации 2 ^ 32 байт с (при условии, что блоки байтового размера)
  3. 2 ^ 32 B - максимальный размер

2 ^ 32 B = 4 194 304 КиБ = 4 194 МиБ = 4 ГиБ

...