The Kernel (which is the only name it ever had) was a tiny little microkernel written in PDP-11 assembler language circa 1980 by Dayton Clark. The version presented here was substantially cleaned up and refactored by John Sloan and David Hemmendinger around 1982 through 1985. The kernel was split into two parts, the pure code System part, and the impure data Control Block part. It supported process creation and destruction, semaphore wait and signal, and asynchronous message passing. It did so in only a handful of PDP-11 machine instructions.

The Kernel was used in the infamous Real-Time Software Design course, CS431 (later CEG431), developed at Wright State University by Professors Bob Dixon and Joe Kohler, and taught by (among many others) Sloan and Hemmendinger. Over the span of the ten week course, students had to complete a complex multi-threaded application which used the Kernel to synchronize and communicate among several processes each of which controlled interrupt driven I/O devices. It was all written in PDP-11 assembler and ran in eight kilobytes of memory. The course culminated in an oral exam featuring a dump analysis.

The class was required for undergraduate computer science/computer engineering majors to graduate, and for graduate students to take upper division graduate courses. Students either loved it or hated it. Area employers (who were heavily into defense-related embedded development) loved it. And perhaps for that reason, some students came to love it in retrospect.

It is tempting to say that the Kernel is of historical interest only. But tiny little microkernels taking only a few machine instructions are coming back into vogue as multi-core embedded processors become more popular. Besides being used pedagogically, the Kernel made its way into a number of other research projects, including SLICK (which supported message passing among a network of microprocessors), TASK4TH (a FORTH-based workstation for real-time data acquisition and robotic control), and FPS (Functional Programming System). It was ported to a number of other processor targets, re-written in C and C++, and, rumor has it, used by former students in their own production systems.

A technical report written by John Sloan describing the Kernel in detail, as well as suggesting techniques for debugging embedded applications that use it, can be found here.



Presentation: Implications of Memory Consistency (or Lack of It) Models for Java, C++, and C Developers (more)

Seminar Review: Jack Ganssle, Better Firmware Faster, 2006 (more)

Article: Vaster than Empires and More Slow: The Dimensions of Scalability (more)

Article: In Praise of do-while (false) (more)

Book Review: Joel Spolsky, Best Software Writing I, Apress, 2005 (more)

Presentation: Robert Austin, Measuring and Managing Performance in Organizations, Dorset House, 1996 (more)

Book Review: Joel Spolsky, Joel on Software, Apress, 2004 (more)

Presentation: James Surowiecki, The Wisdom of Crowds, Doubleday, 2004 (more)

Travelogue: China Journal: Dancing with a Sleeping Giant (more)

Unless otherwise specified, all contents Copyright © 1995-2015 by the Digital Aggregates Corporation, Colorado, USA.
Such copyrighted content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 License.