From: Dan Cross <crossd@gmail.com>
To: John Levine <johnl@taugh.com>
Cc: tuhs@tuhs.org
Subject: [TUHS] Re: forking, Re: [COFF] Re: On Bloat and the Idea of Small Specialized Tools
Date: Sun, 12 May 2024 18:56:35 -0400 [thread overview]
Message-ID: <CAEoi9W51WC0R-ZTFz_AC_UY5K1OAjqf6158tG0K5bK1ofhmxuw@mail.gmail.com> (raw)
In-Reply-To: <20240512201349.0DB6A8A9D055@ary.qy>
On Sun, May 12, 2024 at 4:14 PM John Levine <johnl@taugh.com> wrote:
> It appears that Larry McVoy <lm@mcvoy.com> said:
> >Perhaps a meaningless aside, but I agree on fork(). In the last major
> >project I did, which was cross platform {windows,macos, all the major
> >Unices, Linux}, we adopted spawn() rather than fork/exec. There is no way
> >(that I know of) to fake fork() on Windows but it's easy to fake spawn().
>
> The whole point of fork() is that it lets you get the effect of spawn with
> a lot less internal mechanism. Spawn is equivalent to:
>
> fork()
> ... do stuff to files and environment ...
> exec()
>
> By separating the fork and the exec, they didn't have to put all of
> the stuff in the 12 paragraphs in the spawn() man page into the the
> tiny PDP-11 kernel.
Perhaps, but as I've written here before, `fork`/`exec` vs `spawn` is
a false dichotomy. Another alternative is a `proccreate`/`procrun`
pair, the former of which creates an unrunnable process, the latter of
which marks it runnable. Coupled with a set of primitives to
manipulate the state of an extant, but unrunnable, process and you
have the advantages of fork/exec without the downsides (which are
well-known; https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf).
Similarly, this gives you the functionality of spawn, without the
downside of a singularly complicated interface. Could you have
implemented that in something as small as the PDP-7? Perhaps not, but
it does not follow that `fork` now remains a good primitive.
My spelunking in the original GENIE documentation leads me to believe
that its `fork` provided functionality similar to what I described.
- Dan C.
next prev parent reply other threads:[~2024-05-12 22:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-10 16:36 [TUHS] " Clem Cole
[not found] ` <CAGg_6+Ov6hYTxQ5M-hEBoOiUQ0UVRP0V+aVi0STKAALLDUGY7g@mail.gmail.com>
[not found] ` <CAEoi9W7FbGZFhiddHWWqdivGFfgFAj9nsUApomswfP56rqTMpQ@mail.gmail.com>
[not found] ` <20240511213532.GB8330@mit.edu>
2024-05-12 19:34 ` [TUHS] Re: [COFF] " Adam Thornton
2024-05-12 19:47 ` Larry McVoy
2024-05-12 20:13 ` [TUHS] Re: forking, " John Levine
2024-05-12 22:56 ` Dan Cross [this message]
2024-05-12 23:34 ` Larry McVoy
2024-05-13 1:34 ` Dave Horsfall
2024-05-13 13:21 ` Larry McVoy
2024-05-13 3:29 ` Andrew Warkentin
2024-05-12 20:43 ` [TUHS] " Dave Horsfall
2024-05-13 2:33 ` Alexis
2024-05-13 2:57 ` Warner Losh
2024-05-13 5:23 ` markus schnalke
2024-05-13 6:18 ` Andrew Warkentin
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=CAEoi9W51WC0R-ZTFz_AC_UY5K1OAjqf6158tG0K5bK1ofhmxuw@mail.gmail.com \
--to=crossd@gmail.com \
--cc=johnl@taugh.com \
--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).