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
digress...
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:
http://gunkies.org/wiki/Virtual_memory
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.
Noel