below....
On Wed, Dec 7, 2016 at 11:46 AM, Erik E. Fair <fair-tuhs(a)netbsd.org> wrote:
Which is to say, when did Unix run on (and properly
use) computers with
memory management units (MMU)?
Two answers .... the 11/20 did not have an MMU officially.
DEC's Custom Special Systems (CSS) group (the same group that spliced an
11/15 disk on to the PDP-7 for Bell Labs) build a simple base/limi register
device, soon after the 11/20 was released. Ken and Dennis had one of
theses. So an early version of after the original 11/20 port from the
PDP-7 had this however.....
I would look at Warren's First Edition work to see if there were dregs of
this in that code base to start to try to date it.
As Noel points out the first "official" PDP-11with an MMU as standard with
it, was indeed the 11/45 (the 11/40 class which included the 35, 60, 34
etc.. came later). Ken & Dennis got one of the first 11/45s. It is also
noted that the 45 class system (45/55/70/44) had "17th" address bit - i.e.
split I/D space. I believe that this is when "magic numbers" were really
introduced so that could be supported. I think this is around 3th or 4th
edition.
One imagines that many pointer mistakes (bugs) in assembly or C were
discovered and squashed in that version, modulo the historical unhappiness
resulting from address zero containing a zero if dereferenced ("NULL
pointers") in process address space.
What year did that come about?
Diomidis is incorrect that SunOS was the first Unix to set page 0 to zero.
This was actually forced by a number of the Unix ports much, much
earlier. The "NUXI" problem and the Page 0 were two of the issues that
guys that did the port to the IBM Series/1. I want to say that was 1979 or
maybe 1980 timeframe. IIRC: that was the Winter Usenix in Boulder CO
("The Black Hole" - conference) when I first remember it being described.
It was a well known issue when many of the 7th edition ports began. The
problem was the some UNIX application bet in it, The biggest sinner that
relied on that behavior for the Bourne Shell and how it did memory
management. Almost every port that could not name page 0 writable and
with a 0 in location, had difficulties with their Unix port, although most
created some strategy to find and fix the issues.
By the time of SunOS, a number of firms were making it page zero and opton,
including BSD itself. By the early 1980s, while I can not claim I invented
it, as I had seen other folks do/talk about it previously at USENIX
conferences, but thought it was a good idea. So, I had hacked up the CAD
system at UCB's because our team wanted it for debugging some of the codes
we were getting from an unnamed computer company who's OS worked different.
It was an optional link and not for production, I thought of it as a
debug tool. I know I gave the hack to Sam at one point, but I do not
remember it making it into the mainline.
But by the mid 1980s, a number of firms made it either standard or an
option like SunOS - because it was a useful debugging tool.
Clem