Today pretty much all kernels use virtual memory provided by the MMU. They do that with the global page table, the address of which is located in a CPU register, and a page supervisor/mapper of pages to processes. The "vm" in vmlinuz
, for example, means that the linux kernel supports virtual memory.
All that is possible because the MMU maps continuous addresses of memory to the memory segments understood by the x86 architecture.
The original UNIX kernel did have a vmunix
version, which, I believe, must have used a similar technique. Yet, the original UNIX kernel was written before MMUs were available. If I'm not mistaken the original UNIX kernel (called simply unix
), was written before the existence of the x86 architecture. Historically it did run on the PDP-9 and PDP-11.
How that kernel performed memory addressing and management? Was it a segment based addressing (two numbers) or full memory addressing (a single number)? How it separated memory between processed?