<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I don't know of a standard name.   We used to call the kernel processes or kernel threads also.  For instance, in the original Masscomp EFS code, we had a handful of processes that got forked after the pager using kernel code.  Since the basic UNIX read/write from the user space scheme is synchronous, the premade pool of kernel processes was dispatched as needed when we listened for asynchronous remote requests for I/O. This is similar to the fact that asynchronous devices from serial or network interfaces need a pool of memory to stuff things into since you never know ahead of time when it will come.</div></div><div hspace="streak-pt-mark" style="max-height:1px"><img alt="" style="width:0px;max-height:0px;overflow:hidden" src="https://mailfoogae.appspot.com/t?sender=aY2xlbWNAY2NjLmNvbQ%3D%3D&type=zerocontent&guid=3dfb3fc8-76e6-4727-8cd2-177216170caf"><font color="#ffffff" size="1">ᐧ</font></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 14, 2023 at 4:48 PM Noel Chiappa <<a href="mailto:jnc@mercury.lcs.mit.edu">jnc@mercury.lcs.mit.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">So Lars Brinkhoff and I were chatting about daemons:<br>
<br>
  <a href="https://gunkies.org/wiki/Talk:Daemon" rel="noreferrer" target="_blank">https://gunkies.org/wiki/Talk:Daemon</a><br>
<br>
and I pointed out that in addition to 'standard' daemons (e.g. the printer<br>
spooler daemon, email daemon, etc, etc) there are some other things that are<br>
daemon-like, but are fundamentally different in major ways (explained later<br>
below). I dubbed them 'system processes', but I'm wondering if ayone knows if<br>
there is a standard term for them? (Or, failing that, if they have a<br>
suggestion for a better name?)<br>
<br>
<br>
Early UNIX is one of the first systems to have one (process 0, the "scheduling (swapping)<br>
process"), but the CACM "The UNIX Time-Sharing System" paper:<br>
<br>
  <a href="https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf" rel="noreferrer" target="_blank">https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf</a><br>
<br>
doesn't even mention it, so no guidance there. Berkeley UNIX also has one,<br>
mentioned in "Design and Implementation of the Berkeley Virtual Memory<br>
Extensions to the UNIX Operating System":<br>
<br>
  <a href="http://roguelife.org/~fujita/COOKIES/HISTORY/3BSD/design.pdf" rel="noreferrer" target="_blank">http://roguelife.org/~fujita/COOKIES/HISTORY/3BSD/design.pdf</a><br>
<br>
where it is called the "pageout daemon".("During system initialization, just<br>
before the init process is created, the bootstrapping code creates process 2<br>
which is known as the pageout daemon. It is this process that .. writ[es]<br>
back modified pages. The process leaves its normal dormant state upon being<br>
waken up due to the memory free list size dropping below an upper<br>
threshold.") However, I think there are good reasons to dis-favour the term<br>
'daemon' for them.<br>
<br>
<br>
For one thing, typical daemons look (to the kernel) just like 'normal'<br>
processes: their object code is kept in a file, and is loaded into the<br>
daemon's process when it starts, using the same mechanism that 'normal'<br>
processes use for loading their code; daemons are often started long after<br>
the kernel itself is started, and there is usually not a special mechanism in<br>
the kernel to start daemons (on early UNIXes, /etc/rc is run by the 'init'<br>
process, not the kernel); daemons interact with the kernel through system<br>
calls, just like 'ordinary' processes; the daemon's process runs in 'user'<br>
CPU mode (using the same standard memory mapping mechanisms, just like<br>
blah-blah).<br>
<br>
'System processes' do none of these things: their object code is linked into<br>
the monolithic kernel, and is thus loaded by the bootstrap; the kernel<br>
contains special provision for starting the system process, which start as<br>
the kernel is starting; they don't do system calls, just call kernel routines<br>
directly; they run in kernel mode, using the same memory mapping as the<br>
kernel itself; etc, etc.<br>
<br>
Another important point is that system processes are highly intertwined with<br>
the operation of the kernel; without the system process(es) operating<br>
correctly, the operation of the system will quickly grind to a halt. The loss<br>
of ordinary' daemons is usually not fatal; if the email daemon dies, the<br>
system will keep running indefinitely. Not so, for the swapping process, or<br>
the pageout daemon<br>
<br>
<br>
Anyway, is there a standard term for these things? If not, a better name than<br>
'system process'?<br>
<br>
        Noel<br>
</blockquote></div>