[TUHS] /dev/drum

Noel Chiappa jnc at mercury.lcs.mit.edu
Sat May 5 23:06:53 AEST 2018

    > From: Johnny Billquist

    >> in MERT 'segments' (called that) were a basic system primitive, which
    >> users had access to.

    > the OS gives you some construct which can easily be mapped on to the
    > hardware.

Right. "A logical segment is a piece of contiguous memory, 32 to 32K 16-bit
words long ... Associated with each segment are an internal segment
identifiern and an optional global name." So it's clear how that maps onto the
PDP-11 memory management hardware - and a MERT 'segment' might use more than
one 'chunk'.

    >> I understand your definitions, and like breaking things up into
    >> 'virtual addressing' (which I prefer as the term, see below),
    >> 'non-residence' or 'demand loaded', and 'paging' (breaking into
    >> smallish, equal-sized chunks), but the problem with using "virtual
    >> memory" as a term for the first is that to most people, that term
    >> already has a meaning - the combination of all three.

Actually, after some research, it turns out to be only the first two. But I

    > It's actually not my definition. Demand paging is a term that have been
    > used for this for the last 40 years, and is not something there is much
    > contention about.

I wasn't talking about "demand paging", but rather your use of the term
"virtual memory":

    >>> Virtual memory is just *virtual* memory. It's not "real" or physical
    >>> in the sense that it has a dedicated location in physical memory
    >>> ... Instead, each process has its own memory, which might be mapped
    >>> somewhere in physical memory, but it might also not be.  And one
    >>> processes address 0 is not the same as another processes address
    >>> 0. They both have the illusion that they have the full memory address
    >>> range to them selves, unaware of the fact that there are many
    >>> processes who also have that same illusion.

I _like_ having an explicit term for the _concept_ you're describing there; I
just had a problem with the use of the _term_ "virtual memory" for it - since
that term already has a different meaning to many people.

Try Googling "virtual memory" and you turn up things like this: "compensate
for physical memory shortages by temporarily transferring data from RAM to
disk". Which is why I proposed calling it "virtual addressing" instead.

    > I must admit that I'm rather surprised if the term really is unknown to
    > you.

No, of course I am familiar with "demand paging".

Anyway, this conversation has been very helpful in clarifying my thinking
about virtual memory/paging. I have updated the CHWiki article based on it:


including the breakdown into three separate (but related) concepts: i) virtual
addressing, ii) demand loading, and iii) paging. I'd be interested in any
comments people have.

    > Which also begs the question - was there also a RK11-A?

One assumes there much have been RK11-A's and -B's, otherwise they wouldn't
have gotten to RK11-C... :-)

I have no idea if both existed in physical form - one might have been just a
design exercise). However, the photo of the non-RK11-C indicator panel
confirms that at least one of them was actually implemented.

    > And the "chunks" on a PDP-11, running Unix, RSX or RSTS/E, or something
    > similar is also totally invisible.

Right, but not under MERT - although there clearly a single 'software' segment
might use more than one set of physical 'chunks'.

Actuallly, Unix is _somewhat_ similar, in that processes always have separate
stack and text/data 'areas' (they don't call them 'segments', as far as I
could see) - and separate text and data 'areas' too, when pure code is in
use; and any area might use more than one 'chunk'.

The difference is that Unix doesn't support 'segments' as an OS primitive, the
way MERT does.


More information about the TUHS mailing list