OS Design

mkgardne@cs.uiuc.edu mkgardne@cs.uiuc.edu
Thu, 29 Oct 1998 14:46:40 -0600 (CST)

[Hi Ray, good to bump into you outside comp.lang.scheme...]

> I like the "modular" approach and I think it could be extended
> very effectively to runtime as well as buildtime, and cover
> *EVERY* subsystem of the kernel except managing processes,
> memory, and sockets.
> I'm picturing each and every hardware driver and operating
> system service as a standalone process -- not a library to link
> against.  User processes would communicate with them using
> sockets.  Higher-level services, such as window management,
> could be standalone processes that communicate with lower-level
> services such as screen management over sockets, etc.  This
> could keep user code small and fairly simple, and allow the
> kernel to drop code and processes related to any services that
> aren't being used, at any time, which would keep the memory
> footprint small.

You should take a look at QNX <http://www.qnx.com/index.htm>. It is a
POSIX compliant real-time operating system based upon the principles
you espouse. In particular, the kernel is approx. 4K of tightly
optimized code which performs scheduling, memory management and
messaging. Everything else is done in user-level threads. POSIX
services are even implemented in threads (as I understand it).

There are only two problems with it: 1) it is proprietary, 2) it is
x86 specific.