Память обычно управляется выделенным аппаратным обеспечением, называемым Memory Management Unit (MMU).
Любой процессор x86 имеет MMU, но это не означает, что управление памятью должно выполняться аппаратно. Сам Linux может работать, эмулируя MMU в программном обеспечении.
Конечно, без аппаратной поддержки было бы действительно сложно (а в некоторых случаях даже невозможно) реализовать некоторые функции.
С чисто теоретической точки зрения вы могли бы эмулировать в программном обеспечении (пространстве ядра) поведение, подобное сегментации, со всеми сегментами, которые вам нравятся, но в реальном мире это было бы просто плохой идеей.
Как вы сказали, x86_32 поддерживает сегментацию памяти, но, начиная с i386, также поддерживается paging . В настоящее время сегментация считается устаревшей , и нет ни одной современной ОС (AFAIK), которая ее использует (за исключением, может быть, какого-нибудь хакерского патча, такого как grsecurity / PaX и их функция UDEREF).
Также важно отметить, что в x86_64 полностью отсутствует поддержка сегментации.