OS design...

Damond Walker moribund@netgsi.com
Fri, 16 Oct 1998 17:17:45 -0400

-----Original Message-----
From: Ray Dillinger <bear@sonic.net>
To: lispos@math.gatech.edu <lispos@math.gatech.edu>
Date: Friday, October 16, 1998 04:16 PM
Subject: OS design...


>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.

    I like the idea of using sockets to have system services to talk to each
other.  But besides the "neatness" value, have you done any testing to
figure out what type of performance you can expect by using sockets to, say,
read and write objects from a filestream such as a disk?  Or another process
on another machine?  I'd be interested in what type of thought you've given
to this aspect of your design.

>Suddenly, the kernel is not married to *ANY* assumptions about
>the hardware, other than the availability of addressible memory.
>If someone wants to make an embedded system with no screen or
>keyboard, then those programs ("persistent drivers?")  just
>don't get loaded.

    I like this idea because, as you suggest later, it really doesn't matter
what language you implement your services in.  They publish themselves to
the system saying I'm expecting input on port XXX and that's it.  I guess
what is needed initially is a consistant way to start these services.  Some
services will be larger than others...some will probably always be resident.


>This would require several things:

>2) a standard "language" for communicating dynamically typed
>   objects via sockets, as well as raw bytes.

    Your saying that all services should commit to a standard interface of
routines?  *OR* are you talking about actually scripting all this?