On 9/30/21 5:01 AM, Paul Ruizendaal via TUHS wrote:
For 4.2BSD initially Joy cs. had a different approach
to memory mapped files in mind (see the 1981 tech report #4 from CSRG). By the time of
4.2BSD’s release the manual defined a mmap() system call, but it was not implemented and
it appears to have been largely forgotten until SunOS 4 and dynamic libraries six years
later.
3BSD and I think 4.1BSD had vread() and vwrite(), which looked like
regular read() and write() but accessed pages only on demand. I was a
grad student at Berkeley at the time and remember their genesis. Bill
and I were eating lunch from Top Dog on the Etcheverry Hall plaza, and
were talking about memory-mapped I/O. I remember suggesting the actual
names, perhaps as a parallel to vfork(). I had used both TENEX and
Multics, which both had page mapping. Multics' memory-mapped segments
were quite fundamental, of course. I think we were looking for something
vaguely upward compatible from the existing system calls. We did not
leap to an mmap() right away just because it would have been a more
radical shift than continuing the stream orientation of UNIX. I did not
implement any of this: it was just a brainstorming session.
Dan H