В современной ОС обычно есть виртуальные адреса, которые переводятся в физические адреса.
В 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-разрядные регистры общего назначения) размер виртуального адресного пространства может быть любым, а размер физического адресного пространства может быть любым;и максимальный объем ОЗУ, который вы можете иметь в физическом адресном пространстве, может быть любым.