[TUHS] /dev/drum

Noel Chiappa jnc at mercury.lcs.mit.edu
Tue May 8 01:36:26 AEST 2018

    > From: Johnny Billquist

    > My point being that ... pages are invisible to the process segments are
    > very visible. And here we talk from a hardware point of view.

So you're saying 'segmentation means instructions explicitly include segment
numbers, and the address space is a two-dimensional array', or 'segmentation
means pointers explicitly include segment numbers', or something like that?

I seem to recall machines where that wasn't so, but I don't have the time to
look for them. Maybe the IBM System 38? The two 'spaces' in the KA10/KI10,
although a degenerate case (fewer even than the PDP-11) are one example.

I'm more interested in the semantics that are provided, not bits in

It's true that with a large address space, one can sort of simulate
segmentation. To me, machines which explicitly have segment numbers in
instructions/pointers are one end of a spectrum of 'segmented machines', but
that's not a strict requirement. I'm more concerned about how they are used,
what the system/user gets.

Similarly for paging - fixed sizes (or a small number of sizes) are part of
the definition, but I'm more interested in how it's used - for demand loading,
and to simplify main memory allocation purposes, etc.

    >> the semantics available for - and _visible_ to - the user are
    >> constrained by the mechanisms of the underlying hardware.

    > That is not the same thing as being visible.

It doesn't meet the definition above ('segment numbers in
instructions/pointers'), no. But I don't accept that definition.

    > All of this is so similar to mmap() that we could in fact be having this
    > exact discussion based on mmap() instead .. I don't see you claiming
    > that every machine use a segmented model

mmap() (and similar file->address space mapping mechanisms, which a bunch of
OS's have supported - TENEX/TOP-20, ITS, etc) are interesting, but to me,
orthagonal - although it clearly needs support from memory management hardware.

And one can add 'sharing memory between two processes' here, too; very similar
_mechanisms_ to mmap(), but different goals. (Although I suppose two processes
could map the same area of a file, and that would give them IPC mapping.)


More information about the TUHS mailing list