From mboxrd@z Thu Jan 1 00:00:00 1970 From: jnc@mercury.lcs.mit.edu (Noel Chiappa) Date: Mon, 7 May 2018 11:36:26 -0400 (EDT) Subject: [TUHS] /dev/drum Message-ID: <20180507153626.1DAC918C075@mercury.lcs.mit.edu> > 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 instructions. 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.) Noel