Andy Tanenbaum (author of the Minix OS) and Linus Torvalds (author of Linux) had this interesting debate on comp.os.minix in Jan & Feb of 1992.
Andy had a nice definition of things:
the
whole [monolithic] operating system is a single a.out file that runs in
'kernel mode.' This binary contains the process management, memory
management, file system and the rest. Examples of such systems are
UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS, and many more.In a
microkernel-based system, in which most of the OS runs as separate
processes, mostly outside the kernel. They communicate by message
passing. The kernel's job is to handle the message passing, interrupt
handling, low-level process management, and possibly the I/O. Examples
of this design are the RC4000, Amoeba, Chorus, Mach, and Windows/NT.
Minix
is micro-kernel and Linux is monolithic (at least as of 1992). It's a
very interesting discussion between two interesting guys.
Linus
brings up the issue of multithreading support in Linux vs. Minix. Andy
has a response that is funny until you realize what things were like
back in 1992:
When there is only one job active, the
normal case on a small PC, it [multithreading] buys you nothing and
adds complexity to the code.