Основное различие между 64-битной и 32-битной ОС состоит в том, что просто примитивный тип данных (например, слово) рассматривается как более широкий. Если процессор может физически адресовать только 2 ^ 33 местоположения, это не изменится только потому, что вы используете 64-битную ОС. С другой стороны, использование 32-битной ОС обычно ограничивает вашу адресуемую память, так как 32-битные указатели не могут представлять все возможные значения, которые ваш ЦП может использовать для адресации памяти (в вашем примере 32-битный указатель - это один немного короче).
Короче говоря, ваша адресуемая память ограничена как шириной указателя (ограничение ОС), так и шириной шины адреса данных (физическое ограничение). Некоторые архитектуры имеют умные способы обойти ширину указателя ОС с помощью двух указателей, один для адресации «банка» памяти, а другой для локального адресации внутри банка. Однако в последнее время эти схемы стали модными.
Кроме того, современные операционные системы обычно используют подсистему виртуальной памяти, которая преобразует логические адреса в их соответствующие физические адреса. С кешированием, фактическое физическое расположение памяти может быть в одном (или нескольких!) Компонентах по иерархии памяти (например, кеш процессора, основная память, жесткий диск и т. Д.). Не знаю, как я полностью забыл упомянуть VM, но это определенно поможет вашему пониманию исследовать это.