dseller wrote:Interesting, I am currently working on a new kernel that uses the actor model. Did it actually implement the whole model, or just the message passing aspect of it?
Oh, I am sorry if I was unclear;
THE wasn't a micro-kernel, being a ring-layered system instead, and was from about ten years before the micro-kernel idea really caught on with researchers. Indeed, it was designed before the entire concept of a 'kernel'
per se existed.
THE was Dijkstra's demonstrator system to show that
semaphores were a workable method of mutual exclusion on a system-wide scale, and while the mainframe it ran on (the
Electrologica x8) didn't have a separate supervisor mode or hardware memory protection, it did have a Test-and-Set instruction which provided the atomic locking required for consistent semaphores. It succeeded in that, but the limitations imposed on the system to make it feasible without hardware memory protection or a supervisor mode - no interactive user mode, a small fixed number of total processes, programs only allowed to use a single process, memory sizes fixed at compile time, etc - somewhat undermined the point, and contrary to Dijkstra's intent of demonstrating a minimum-practical method, helped convince other OS designers that additional hardware support beyond the atomic instructions he was advocating was absolutely necessary for a non-toy system.
According to Wicked-Pedo, the first system to follow a kernel design was the
RC 4000 Mutiprogramming System, which was around the same time as THE, and the current article argues that it could be considered a '
microkernel' despite the fact that it doesn't really fit the later definitions of that term - indeed, the term 'kernel' itself (or the equivalent 'nucleus', which was the more common one in the 1970s) was only introduced years later. The idea of a micro-kernel which uses message passing for IPC and separates drivers from the kernel image didn't really come until the mid to late 1970s, I think.
While they borrowed the idea of message passing from the Actor model, that was pretty much all most microkernels took from it in that period as far as I know.
Also, note that since the point was to reduce the need for hardware protection (important with the increasing use of 12-bit and 18-bit minis such as the PDP-8, and even more so with the appearance of 8- and 16-bit microprocessors such as the 8080, 6800, 6502, 8086, and 68000), the idea that the driver processes were 'running in user space' didn't really apply, since there was no 'supervisor space' to be separate from - the separation came from putting the drivers in their own processes, and having all communication between them and the user applications be moderated by the kernel through message-based IPC. The idea was that as long as the kernel could interrupt a hanging process and kill it if it were unresponsive, the system could remain up even if an application or driver was corrupted. This still didn't solve certain problems, such as the lack of privileged instructions, so at least some microkernel systems at the time placed limits on what code could be emitted for application or driver processes, and used either a different toolchain or a set of toolchain switches when compiling and linking the kernel.
Note that there were a number of multitasking OSes for some of the early home and small business computers ('microcomputers') in the late 1970s and early 1980s, including CHAOS (Clairmont High School Advanced OS, which was a timesharing system running on an Altair with a lot of extra memory and I/O boards, it was a unique installation with no successors but apparently it got a lot of press around 1977; no connection to the Linux fork of that name),
OS-9 (a 6809 OS made famous by the Tandy CoCo and later ported to the 68K), and
MP/M (a multitasking version of CP/M first released in 1979, and at least one source I've read which was meant to be the main PC OS, with CP/M-86 being a stopgap while it was ported), and while the Wikipedia article doesn't mention it, I seem to recall reading that later versions of
UCSD Pascal p-system (which I've heard from other sources was the one IBM wanted as the PC's main OS, so there's some disagreement on this point) were multitasking as well. MS-DOS was already a retrograde design when it came out, and the main reason it caught on was because the alternatives cost three to ten times as much.