On Wed, Jun 5, 2024 at 12:02 PM ron minnich <rminnich(a)gmail.com> wrote:
You could argue that the most direct descendant is the one in which all resources are
presented and accessed via open/read/write/close.
If your kernel has separate system calls for reading directories, or setting up network
connections, or debugging processes, then you may not be a direct descendant, at least
philosophically (and, yes, I know about ptrace ...)
But your kernel might be Plan 9, which at least to me, is the direct descendant. :-)
Even Plan 9's model is more like "all I/O is a file" and not
"literally everything is a file", since regular process memory is
still anonymous and fork()/rfork() are still system calls. I've never
seen an OS that puts together the "all memory is a file" of Multics
and the "all I/O is a file" of Plan 9. I think the one I'm working on
<https://gitlab.com/uxrt/uxrt-toplevel> is probably the first. Its
public "system call" API (actually a jump table into a static shared
library; the real microkernel system calls will be considered a
private implementation detail) will just consist of
read()/write()/seek()-like calls plus a few support functions to go
with them; even things like open() and close() will be RPCs over a
permanently-open channel file, and process/thread creation and memory
allocation will be done through /proc (there will of course be a
library interface over this that implements regular Unix APIs).