From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, LOTS_OF_MONEY,MAILING_LIST_MULTI,MONEY_NOHTML,RCVD_IN_DNSWL_NONE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 5686 invoked from network); 30 May 2021 20:35:31 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 30 May 2021 20:35:31 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 3597A9C6D8; Mon, 31 May 2021 06:35:27 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 59D399C20A; Mon, 31 May 2021 06:34:44 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=planet.nl header.i=@planet.nl header.b="qouTU5xA"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id DE1A89C20A; Mon, 31 May 2021 06:34:32 +1000 (AEST) Received: from cpsmtpb-ews02.kpnxchange.com (cpsmtpb-ews02.kpnxchange.com [213.75.39.5]) by minnie.tuhs.org (Postfix) with ESMTP id 6FE159C209 for ; Mon, 31 May 2021 06:34:24 +1000 (AEST) Received: from cpsps-ews26.kpnxchange.com ([10.94.84.192]) by cpsmtpb-ews02.kpnxchange.com with Microsoft SMTPSVC(8.5.9600.16384); Sun, 30 May 2021 22:34:08 +0200 X-Brand: 7abm2Q== X-KPN-SpamVerdict: e1=0;e2=0;e3=0;e4=;e6=(e1=10;e3=10;e2=11;e4=10;e6=1 0);EVW:White;BM:NotScanned;FinalVerdict:Clean X-CMAE-Analysis: v=2.4 cv=VaGUgHl9 c=1 sm=1 tr=0 ts=60b3f6c0 cx=a_idp_e a=YnLMpE5S06+Zisl5ga1zfg==:117 a=soxbC+bCkqwFbqeW/W/r+Q==:17 a=x1i13A_MHe4A:10 a=IkcTkHD0fZMA:10 a=5FLXtPjwQuUA:10 a=LwIZAeD3Mwnb11pvsMwA:9 a=QEXdDO2ut3YA:10 X-CM-AcctID: kpn@feedback.cloudmark.com Received: from smtp.kpnmail.nl ([195.121.84.46]) by cpsps-ews26.kpnxchange.com over TLS secured channel with Microsoft SMTPSVC(8.5.9600.16384); Sun, 30 May 2021 22:34:08 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=planet.nl; s=planet01; h=to:date:message-id:subject:mime-version:content-type:from; bh=TylsAOhDXHW7scXXedoOht7xRLpQ/ToHDVJTC5YbVUA=; b=qouTU5xAFgq6nDa1b4xPTP8hmaH5LPP2U5bhsEaR6/aEv4blwqDY5vETcAZREu/8LSyO0vSY1VEgs kZepU3gc0WEWAzCzg+0VrDv/3zKkInHW+m6hup6KLJNOY4XEwe0MmkkGu4GZV0ocSdcjgYIMnx40v9 XdAy6n5YjWw0W2W8= X-KPN-VerifiedSender: Yes X-CMASSUN: 33|w/3f6Yi7IKV0q/yXzJhgpUC4X10qGCJUEd2TdgND/xJEHFzJW1XjKvj+pwiVrLv 8jyv/97G5au2d9CvjKpmiQw== X-Originating-IP: 80.101.112.122 Received: from mba1.fritz.box (sqlite.xs4all.nl [80.101.112.122]) by smtp.kpnmail.nl (Halon) with ESMTPSA id 620b71a2-c186-11eb-ae27-005056ab7584; Sun, 30 May 2021 22:34:08 +0200 (CEST) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.7\)) Message-Id: <7766607B-92C8-486C-888F-E542F3BD4609@planet.nl> Date: Sun, 30 May 2021 22:34:07 +0200 To: TUHS main list X-Mailer: Apple Mail (2.3445.9.7) X-OriginalArrivalTime: 30 May 2021 20:34:08.0593 (UTC) FILETIME=[2428DC10:01D75593] X-RcptDomain: minnie.tuhs.org Subject: [TUHS] Early Unix paging X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Paul Ruizendaal via TUHS Reply-To: Paul Ruizendaal Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" Following the recent discussion on this list about early paging systems = and John Reiser=E2=80=99s work in this area, I succeeded in reaching out = to him. It is all very long ago, but John=E2=80=99s recollection is that = his paging system work was initially done late in 1979 or maybe 1980. = This matches with Rob Pike=E2=80=99s memory of seeing it demoed in early = 1981. John=E2=80=99s recollection confirms that his design implemented mmap = and copy-on-write, and was integrated with the file buffer cache (all = features that Norman Wilson also remembered). I have appended John=E2=80=99s message below (with permission). I am not = sure I understand - at this time - how John=E2=80=99s code was = multiplexing page table entries with kernel data structures beyond what = is mentioned, but I think it might be an interesting summer project to = see how much of the design can be resurrected using related code, old = documents and memories. Paul =3D=3D=3D=3D > I joined Bell Labs department 1135 ("Interactive Computer Systems = Research") > at Holmdel, NJ in Feb.1977. I soon gained fame by re-writing the C = pre-processor, > which was bug-infested and slow. (" 1.e4 " was recognized as an = opportunity > to expand the macro "e4", instead of as a floating-point constant.) > cpp used to take 15% to 18% of total CPU compile time. My replacement = code > was 2% to 3%. The average improvement was a factor of 7; the minimum: > a factor of 5; the best: a factor of 11 or 12. > During the rest of 1977, I became dissatisfied with our PDP-11/45 (and = other's > PDP-11/70), having spent a few student years at Stanford Univ and its = AI Lab, > where PDP-6 and PDP-10 reigned. So Tom London and I wrote an = "internal grant" > for $250,000 to get a new machine, with a "research goal" of exploring = CCD > (charge coupled device) which was promised to replace spinning = harddrive. > Actual CCD product never appeared until flash memory devices in 1990s > and SSD (current solid state drive) later. >=20 > Our VAX-11/780, the first one delivered to a customer, arrived Feb.12, = 1978 > (Lincoln's Birthday). Tom and I had been preparing using PDP-11/45 = since > December, and we achieved "login: " on the console DECwriter by April = 15 > (the deadline for US income tax filing). The rest of 1978 was = "tuning", > and preparing for the release of "UNIX-32/V" to UC Berkeley. My = annual > performance review in early 1979 said "Well done; but don't ever do it = again" > because it was not regarded as "Research". > So what did I do? I did it again; this time, with demand paging. > I designed and implemented mmap() based on experience with = PDP-10/Tenex > PMAP page mapping system call. I fretted over introducing the first > UNIX system call with 6 arguments. >=20 > The internal design of the paging mechanism "broke the rules" by = having a > non-hierarchical dependency: A1 calls B1 calls A2 calls B2 where {A1, = A2} > are parts of one subsystem, and {B1, B2} are parts of another = subsystem. > (One subsystem was the buffer cache; I forget what was the other = subsystem.) > Our machine started with 512KB of RAM, but within a few months was = upgraded > to 4 MB with boards that used a new generation of RAM chips. > The hardware page size was 512 bytes, which is quite small. Strict = LRU > on 8,192 pages, plus Copy-On-Write, made the second reference to a = page > "blindingly fast". It was impressive, running sometime in 1979 or = 1980, > I think. But it was not "Research", so I got many fewer accolades. > My internal design strategy was to use the hardware page table entry > (4 bytes per page, with "page not present" being one bit which freed > the other 31 bits for use by software) as the anchor to track = everything > about a page. This resulted in a complicated union of bitfield = structs, > which became a headache. When other departments took over the work, > the first thing they did was use 8 bytes per page, which meant = shuffling > between the software and the hardware descriptors: its own mess. > I wasn't interested in maintaining a paging system, so I moved on > to other things such as design of integrated circuits using > Carver-Mead methodology.