On Sun, Dec 15, 2024 at 03:48:40PM -0500, Douglas McIlroy wrote:
Unix originally imitated the Multics file system, but
not the universal
memory. mmap(2) weakly imitates universal memory by allowing a process
to nominally incorporate a portion of a file into the process address space
at page-level granularity. However, an update is guaranteed to be visible
to the file and other processes only upon specific request.
That's not true with Sun's mmap(). It's coherent across process
boundaries
and it's in sync with read()/write(). This is because Sun got rid of the
buffer cache and _only_ did file IO to/from the page cache. You mapped
the actual page into your address space, if one process wrote it, the
other process will see it.
Does anyone know whether there are implementations of
mmap that
do transparent file sharing? It seems to me that should be possible by
making the buffer cache share pages with mmapping processes.
SunOS 4.0 did what I believe you are asking.
http://mcvoy.com/lm/papers/SunOS.vm_arch.pdf
http://mcvoy.com/lm/papers/SunOS.vm_impl.pdf
--
---
Larry McVoy Retired to fishing
http://www.mcvoy.com/lm/boat