вместо 4 ГБ, что максимум для 32-битной ОС.
Программы в Linux (и в большинстве операционных систем) не имеют дело с физической памятью напрямую - они работают с виртуальными адресами, которые переводятся аппаратными средствами в соответствии с отображением, которое настраивает ОС.
Таким образом, хотя 32-разрядные системы используют 32-разрядные указатели, и программа не может видеть более 4 ГБ виртуальной памяти одновременно, таблицы страниц (отображения виртуальной памяти в физическую) могут фактически представлять более длинные физические адреса, чем этот. Соответствующая функция x86 называется расширением физических адресов (также) и позволяет этим сопоставлениям разрешать 36-битные физические адреса.
Это означает, что вы можете одновременно сопоставлять несколько процессов разным виртуальным областям размером 4 ГБ в физическом пространстве до 64 ГБ. (То же самое происходит, если вы запускаете 32-битные процессы в 64-битной ОС.)
Аналогично, 16-разрядные системы могут использовать более 64 КБ физической памяти с помощью таких хитростей, как сегментация (которая на 8086 позволяла эффективно использовать 20-разрядные физические адреса) или переключение банков (что позволило переназначить одни и те же адреса памяти в разные физические области, например, C64 или MS-DOS XMS/EMS).