On 8/17/20, Larry McVoy <lm(a)mcvoy.com> wrote:
On Mon, Aug 17, 2020 at 03:27:15PM -0400, Noel Chiappa
wrote:
[regarding mmap(2)]
Bill Joy imagined it, the prototype is in one the 4.x BSD releases.
Sun (Joe Moran) actually implemented it first in any Unix variant.
It's possible the concept existed in some other OS but I'm not aware
of it.
VAX/VMS had the equivalent of mmap(2) back in 1978. You can specify a
range of contiguous pages in virtual memory and associate that with a
(page-aligned) range of blocks in a file. The blocks in the file act
as backing store for the virtual memory. VMS also has a system call
$CRETVA (create virtual address space) that lets you associate a VA
range using the system page file as backing store. The VMS image
activator (runtime loader in Unix-speak) used these primitives to load
program images into virtual memory. More than one process can map the
same region of a file. This is how sharing of read-only program
segments such as .text is implemented.
I think Burroughs OSes had this concept even before VMS.
There is also $EXPREG (expand address region), which is more or less
equivalent to sbrk().
-Paul W.