Peter D. Varhol. Small kernels hit it big. Byte 19, 1 (January, 1994) pages 119-128.
by J. H. Saltzer, February 14, 1996
What is the alternative to a kernel? (A "Monolithic" system.) What does
that mean?
It helps at this point to walk through a file system call, such as
open ("/projects/6.033/handout.1")
with a sketch of a monolithic system and then again with a sketch of a
kernel design.
Assume there are two modules, the file system and the file manager. The
open call goes to the file system, which turns it into a series of calls
to the file manager (we know that "/" is file #17)
openfile (17)
read, search for name "projects", it is file #92
openfile (92)
read, search for name "6.033", it is file #66
openfile (66)
read, search for name "handout.1", it is file #106
return #106 to the application.
Now the application calls the file manager directly to read.
In the monolithic system, both the fs and the fm are inside the system.
In the kernel system there are three user-level processes, the
application, the fm, and the dm. The kernel just passes the arguments
along.
Differences:
The kernel is smaller than the monolithic system (why does that
matter)
in the kernel system, fs and fm can be individually replaced, e.g.
with NFS or AFS just by rerouting the calls.
in the kernel system, a bug in fs can't cause trouble for the O/S
scheduler.