On Sun, Jun 23, 2019 at 06:08:56PM -0400, Noel Chiappa wrote:
Hammer-nail syndrome.
When the only tool you have for creating separate subsystems is processes, you
wind up with a lot of processes. Who'd a thunk it.
A system with a segmented memory which allows subroutine calls from one subsystem
to another will have a lot less overhead. It does take hardware support to be
really efficient, though. The x86 processors had that support, until Intel dropped
it from the latest ones because nobody used it.
One of the real problems with how x86 implemented segments was that
the segments were layered on top of the 32-bit virtual address space
implemented by the page tables. So if you wanted to use a pure
segmented architecture, ala Multics, you run into the same problem as
32-bit IP addresses. If you need to allow for segments to grow, you
very quickly fragment the 32-bit address space.
If I recall correctly, this wasn't an issue with Multics because the
DPS-8 had page tables for each segment.
Maybe if Intel/AMD had kept segmentation support when x86_64 was
developed, trying to do something more novel with segments could have
worked when we went to 64-bits (or maybe, like IPv6, what's really
needed is 128-bits of address space :-P). But, Itanic was supposed to
be the dominant 64-bit architecture that was going to take over the
whole world, and when that turned out not to be the case, AMD threw
together x86_64 as the "just good enough" architectural extension.
- Ted