When shutting down, FreeBSD refers to them as:
kern/kern_shutdown.c: printf("Waiting (max %d seconds) for system process
`%s' to stop... ",
kern/kern_shutdown.c: printf("Waiting (max %d seconds) for system thread
`%s' to stop... ",
However, a number of places, including the swap daemon, still refer to
things as this daemon
or that daemon (page demon being top of the list, but there's the buf
daemon, the vmdaemon
that handles swapping (as opposed to paging), the update daemon, etc.
Warner
On Thu, Dec 14, 2023 at 3:06 PM Bakul Shah <bakul(a)iitbombay.org> wrote:
I remember calling them kernel processes as they had
no code running in
user mode. Not sure now of the year but sometime in ‘80s. Now I’d probably
call them kernel threads as they don’t have a separate address space.
On Dec 14, 2023, at 1:48 PM,
jnc(a)mercury.lcs.mit.edu wrote:
So Lars Brinkhoff and I were chatting about daemons:
https://gunkies.org/wiki/Talk:Daemon
and I pointed out that in addition to 'standard' daemons (e.g. the
printer
spooler daemon, email daemon, etc, etc) there are
some other things that
are
daemon-like, but are fundamentally different in
major ways (explained
later
below). I dubbed them 'system
processes', but I'm wondering if ayone
knows if
there is a standard term for them? (Or, failing
that, if they have a
suggestion for a better name?)
Early UNIX is one of the first systems to have one (process 0, the
"scheduling (swapping)
process"), but the CACM "The UNIX
Time-Sharing System" paper:
https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf
doesn't even mention it, so no guidance there. Berkeley UNIX also has
one,
mentioned in "Design and Implementation of
the Berkeley Virtual Memory
Extensions to the UNIX Operating System":
http://roguelife.org/~fujita/COOKIES/HISTORY/3BSD/design.pdf
where it is called the "pageout daemon".("During system initialization,
just
before the init process is created, the
bootstrapping code creates
process 2
which is known as the pageout daemon. It is this
process that .. writ[es]
back modified pages. The process leaves its normal dormant state upon
being
waken up due to the memory free list size
dropping below an upper
threshold.") However, I think there are good reasons to dis-favour the
term
'daemon' for them.
For one thing, typical daemons look (to the kernel) just like 'normal'
processes: their object code is kept in a file, and is loaded into the
daemon's process when it starts, using the same mechanism that 'normal'
processes use for loading their code; daemons are often started long
after
the kernel itself is started, and there is
usually not a special
mechanism in
the kernel to start daemons (on early UNIXes,
/etc/rc is run by the
'init'
process, not the kernel); daemons interact with
the kernel through system
calls, just like 'ordinary' processes; the daemon's process runs in
'user'
CPU mode (using the same standard memory mapping
mechanisms, just like
blah-blah).
'System processes' do none of these things: their object code is linked
into
the monolithic kernel, and is thus loaded by the
bootstrap; the kernel
contains special provision for starting the system process, which start
as
the kernel is starting; they don't do system
calls, just call kernel
routines
directly; they run in kernel mode, using the same
memory mapping as the
kernel itself; etc, etc.
Another important point is that system processes are highly intertwined
with
the operation of the kernel; without the system
process(es) operating
correctly, the operation of the system will quickly grind to a halt. The
loss
of ordinary' daemons is usually not fatal;
if the email daemon dies, the
system will keep running indefinitely. Not so, for the swapping process,
or
the pageout daemon
Anyway, is there a standard term for these things? If not, a better name
than
'system process'?
Noel