[TUHS] Systematic approach to command-line interfaces
Larry McVoy
lm at mcvoy.com
Thu Sep 30 05:12:18 AEST 2021
On Wed, Sep 29, 2021 at 02:07:42PM -0400, Noel Chiappa wrote:
> > From: Larry McVoy
>
> > If you read(2) a page and mmap()ed it and then did a write(2) to the
> > page, the mapped page is the same physical memory as the write()ed
> > page. Zero coherency issues.
>
> Now I'm confused; read() and write() semantically include a copy operation
> (so there are then two copies of that data chunk, and possible consistency
> issues between them), and the copied item is not necessarily page-sized (so
> you can't ensure consistency between the original+copy by mapping it in). So
> when one does a read(file, &buffer, 1), one gets a _copy of just that byte_
> in the process' address space (and similar for write()).
>
> Yes, there's no coherency issue between the contents of an mmap()'d page, and
> the system's idea of what's in that page of the file, but that's a
> _different_ coherency issue.
That "different" coherency issue is the one I was talking about. SunOS
got rid of it, when HP-UX etc grudgingly implemented mmap() they did not
have a unified page cache, they had pages that were mmapped but the data
was copied from the buffer cache. It was a mess for years and years.
More information about the TUHS
mailing list