What SHOULD go in the kernel
John Nagle
nagle at well.UUCP
Fri Oct 20 02:20:34 AEST 1989
One could argue that device drivers don't belong in the kernel
at all. With reasonable hardware support, no loss in protection is
implied by this. The operating system must provide the mechanisms
to map one peripheral's I/O space into the space of the driver process,
and the memory management hardware must mediate accesses initiated by
the device itself (whether "DMA", "bus master operation", or "channel
program execution").
Systems with these capabilities include IBM mainframes under VM, and
Apollo machines under Domain when equipped with the add-on box for user
supported peripherals.
One also needs something like named pipes for communication between
applications and device drivers. This intercommunication mechanism must
include 1) bidirectional I/O 2) out-of-band control messages ("IOCTLs"),
3) the capability of one end to verify the identity and security status
of the other end, and 4) the ability of one end to detect termination
of the other end.
With capabilities like this, you can kick the device drivers,
terminal handling, networking, and file system out of the kernel.
Unfortunately, UNIX isn't designed to work this way, and the
success of UNIX has resulted in the decline of hardware support for
this sort of thing. The result is the bloated kernels of today.
John Nagle
h
More information about the Comp.unix.wizards
mailing list