On 9/25/17, Steve Nickolas <usotsuki(a)buric.co> wrote:
If I were designing an OS, only the bare minimum number of system calls
would be implemented in the kernel (stuff like open, close, seek, read,
write, and create/kill process) and everything else would be implemented
in library... I don't know how that would stack up against Unix in the
day, or *x these days, but I daresay it probably would have fewer system
calls than MS-DOS 2.0.
That's basically the way the OS I'm writing will work. Actually it
will go further than that. It will be microkernel-based, with read,
seek, write, fcntl, and a function for servers to return an error
status (there will also be a "clunk" message type but it will only be
generated by the VFS when the last process closes a file and won't
have a corresponding function) as the only true primitives. There will
be a couple extra variants of read and write that map onto L4 IPC more
closely, although they will interoperate with the traditional
versions. open, close, stat, unlink, fork, _exit, some
pthreads-related functions, and several other (mostly file-related)
functions will appear to be primitives although they will be
implemented as RPC messages over a permanently-open anonymous FD
(connected to the process server, which will implement memory/process
management, the basic VFS, procfs, and a few variants of in-memory
filesystems). All other "system calls" will be implemented on top of
the normal filesystem (signals, security, and process state stuff will
use procfs).