On Mar 17, 2023, at 12:24 PM, Lars Brinkhoff
<lars(a)nocrew.org> wrote:
Paul Koning wrote:
I noticed the section on deferred interrupts,
which mentions Cutler
and "fork" on RSX. It doesn't mention the similar mechanism, also
called fork, in RT-11.
And, pray tell, what do these "fork" mean?
I'm curious since Unix has fork as a verb, whereas Tenex has it as a
noun. Presumably they both got it from the Berkeley 930 timesharing
system, so maybe something got lost in translation on the way to the
East coast. It would be intresting to compare against the meaning in
RSX (11 not 15, I guess) and RT-11.
The paper mentions it: "fork routines" which I think Linux calls "bottom
half". These are functions executed as a consequence of an interrupt, but from a
queue and not with interrupts masked off. The idea is that an RTOS doesn't want to
block interrupts more than the minimum necessary, so operating systems like RT11 and RSX
in their interrupt handler capture the necessary hardware state in memory, then queue a
fork routine to do the real work later after interrupts have once again been enabled.
This goes by way of what RT11 originally called a "fork queue" but was told to
rename to "fork list" :-)
Some other operating systems, like RSTS, have some amount of deferred processing but tend
to do a lot, often all, the interrupt handling work at interrupt level. That's ok for
a timesharing system, but you wouldn't want to run time critical stuff on it. And
this is why RSTS does a comparatively poor job of supporting DDCMP over async lines.
"Fork" in the Unix sense is something different and unrelated.
paul