From: "Greg A. Woods" <woods@robohack.ca>
To: The Unix Heritage Society mailing list <tuhs@tuhs.org>
Subject: Re: [TUHS] Systematic approach to command-line interfaces
Date: Thu, 30 Sep 2021 10:31:20 -0700 [thread overview]
Message-ID: <m1mVztw-0036wTC@more.local> (raw)
In-Reply-To: <20210929165715.GN18305@mcvoy.com>
[-- Attachment #1: Type: text/plain, Size: 2928 bytes --]
At Wed, 29 Sep 2021 09:57:15 -0700, Larry McVoy <lm@mcvoy.com> wrote:
Subject: Re: [TUHS] Systematic approach to command-line interfaces
>
> On Wed, Sep 29, 2021 at 09:40:23AM -0700, Greg A. Woods wrote:
> > I think perhaps the problem was that mmap() came too soon in a narrow
> > sub-set of the Unix implementations that were around at the time, when
> > many couldn't support it well (especially on 32-bit systems -- it really
> > only becomes universally useful with either segments or 64-bit and
> > larger address spaces). The fracturing of "unix" standards at the time
> > didn't help either.
>
> I think you didn't use SunOS 4.x. mmap() was implemented correctly
> there, the 4.x VM system mostly got rid of the buffer cache (the
> buffer cache was used only for reading directories and inodes, there
> was no regular file data there). 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.
Implementation isn't really what I meant to talk directly about -- I
meant "integration", and especially integration outside the kernel.
> This was not true in other systems, they copied the page from the
> buffer cache and had all sorts of coherency problems. It took
> about a decade for other Unix implementations to catch up and I
> think that's what you are hung up on.
Such implementation issues are just a smaller part of the problem,
though obviously they delayed the wider use of mmap() in such broken
implementations.
The fact wasn't even available at all on many kernel implementations at
the time (the way open(2), read(2), write(2), et al were/are), is
equally important too of course -- 3rd party software developers
effectively wouldn't use it because of this.
So, the main part of the problem to me is that mmap() wasn't designed
into any unix deprived or unix-like system coherently (i.e. including at
user level) (that I'm aware of). It wasn't integrated into languages or
system libraries (stdio f*() functions could probably even have used it,
since I think that's how stdio was (or could have been) emulated on
Multics for the C compiler and libc).
It all reminds me of how horrible the socket(2)/send(2)/sendmsg(2) hack
is -- i.e. socket descriptors should have just been file descriptors,
opened with open(2). I guess pipe(2) kind of started this mess, and
even Plan 9 didn't seem to do anything remarkable to address pipe
creation as being subtly different from just using open(2). Maybe I'm
going to far with thinking pipe() could/should have just been a library
call that used open(2) internally, perhaps connecting the descriptors by
opening some kind of "cloning" device in the filesystem.
--
Greg A. Woods <gwoods@acm.org>
Kelowna, BC +1 250 762-7675 RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com> Avoncote Farms <woods@avoncote.ca>
[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
next prev parent reply other threads:[~2021-09-30 17:32 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-31 12:25 Michael Siegel
2021-07-31 13:05 ` Dan Halbert
2021-07-31 14:21 ` Adam Thornton
2021-07-31 14:25 ` Adam Thornton
2021-07-31 15:45 ` Richard Salz
2021-07-31 16:03 ` Clem Cole
2021-07-31 16:06 ` Richard Salz
2021-07-31 16:21 ` Clem Cole
2021-07-31 16:17 ` Clem Cole
2021-07-31 16:30 ` Dan Cross
2021-07-31 15:56 ` Paul Winalski
2021-07-31 16:19 ` Dan Cross
2021-08-01 17:44 ` Chet Ramey
2021-08-01 21:53 ` Dan Cross
2021-08-01 23:21 ` Chet Ramey
2021-08-01 23:36 ` John Cowan
2021-08-01 23:49 ` Larry McVoy
2021-08-02 0:28 ` Larry McVoy
2021-08-01 23:58 ` Dan Cross
2021-08-02 0:29 ` Steve Nickolas
2021-08-02 0:13 ` Andrew Warkentin
2021-08-02 0:18 ` John Cowan
2021-08-02 0:54 ` Andrew Warkentin
2021-08-02 1:04 ` Dan Cross
2021-08-02 1:05 ` Theodore Ts'o
2021-08-02 2:10 ` Andrew Warkentin
2021-08-02 2:32 ` Bakul Shah
2021-08-02 17:33 ` Lars Brinkhoff
2021-09-28 17:46 ` Greg A. Woods
2021-09-28 18:10 ` Larry McVoy
2021-09-29 16:40 ` Greg A. Woods
2021-09-29 16:57 ` Larry McVoy
2021-09-30 17:31 ` Greg A. Woods [this message]
2021-09-29 23:10 ` Phil Budne
2021-08-02 17:37 ` Lars Brinkhoff
2021-08-02 18:52 ` Clem Cole
2021-08-02 20:59 ` John Cowan
2021-08-02 21:06 ` Al Kossow
2021-08-02 21:14 ` Clem Cole
2021-08-02 21:13 ` Clem Cole
2021-08-01 16:51 ` Michael Siegel
2021-08-01 17:31 ` Jon Steinhart
2021-07-31 16:41 ` Clem Cole
2021-07-31 17:41 ` John Cowan
2021-07-31 17:30 ` Anthony Martin
2021-07-31 17:46 ` John Cowan
2021-07-31 18:56 ` Michael Siegel
2021-07-31 19:41 ` Clem Cole
2021-07-31 21:30 ` Michael Siegel
2021-08-01 17:48 ` Chet Ramey
2021-08-01 19:23 ` Richard Salz
2021-08-01 23:26 ` Chet Ramey
2021-07-31 19:20 ` [TUHS] Systematic approach to command-line interfaces [ meta issues ] Jon Steinhart
2021-07-31 21:06 ` Richard Salz
2021-07-31 21:32 ` Jon Steinhart
2021-07-31 21:37 ` Richard Salz
2021-07-31 21:55 ` Jon Steinhart
2021-07-31 22:10 ` Warner Losh
2021-07-31 22:19 ` Larry McVoy
2021-07-31 22:20 ` Jon Steinhart
2021-07-31 23:26 ` Warner Losh
2021-07-31 23:41 ` Jon Steinhart
2021-07-31 22:04 ` Bakul Shah
2021-07-31 22:13 ` Larry McVoy
2021-07-31 22:14 ` Bakul Shah
2021-07-31 22:17 ` Bakul Shah
2021-07-31 22:16 ` Jon Steinhart
2021-07-31 22:20 ` Bakul Shah
2021-07-31 16:27 [TUHS] Systematic approach to command-line interfaces Nelson H. F. Beebe
2021-07-31 16:47 Ron Young
2021-08-02 2:34 ` Jim Carpenter
2021-08-02 2:38 ` Ron Young
2021-08-02 2:42 Douglas McIlroy
2021-08-02 14:58 ` Theodore Ts'o
2021-08-02 18:15 ` Adam Thornton
2021-08-02 18:24 ` Warner Losh
2021-08-02 20:55 ` John Cowan
2021-08-02 21:06 ` Jon Steinhart
2021-08-02 21:25 ` Dan Cross
2021-08-02 21:59 ` Jon Steinhart
2021-08-02 22:33 ` John Cowan
2021-08-03 0:21 ` Bakul Shah
2021-08-03 1:49 ` Jon Steinhart
2021-08-03 3:21 ` Adam Thornton
2021-08-03 3:27 ` Bakul Shah
2021-08-03 3:51 ` Jon Steinhart
2021-08-03 7:19 ` arnold
2021-08-03 23:12 ` Andrew Warkentin
2021-08-04 15:04 ` Paul Winalski
2021-08-03 15:01 Douglas McIlroy
2021-08-03 17:13 ` Tom Lyon via TUHS
2021-08-11 18:11 ` Tom Ivar Helbekkmo via TUHS
2021-08-11 21:24 ` Tom Lyon via TUHS
2021-08-03 19:12 Douglas McIlroy
2021-09-28 18:15 Noel Chiappa
2021-09-29 18:07 Noel Chiappa
2021-09-29 19:04 ` Dan Cross
2021-09-29 19:12 ` Larry McVoy
2021-09-30 11:41 Douglas McIlroy
2021-10-01 12:11 Paul Ruizendaal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1mVztw-0036wTC@more.local \
--to=woods@robohack.ca \
--cc=tuhs@tuhs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).