Kernel

RC 4000 Multiprogramming System

The RC 4000 Multiprogramming System was the operating system based on a microkernel built appositely for the RC 4000 in 1969. When the programmer Per Brinch Hansen was working on this machine he came to the conclusion all the existing operating systems were not suited for the RC 4000, and thus he decided to create one by himself. The idea was to create a simple kernel, called microkernel, which role was only to set into communication the programs which composed the system, becoming the nucleus on which the actual operating system was going to be built on.

While this machine wasn't very succesful, the idea of the microkernel which acted as a communication tool became very popular in those years, being implemented by many companies.

Amiga's Exec

Developed by Commodore International, Amiga OS was the operating system implemented in the Amiga 1000, which was released in 1985. The Amiga OS was based on Exec, a preemptive multitasking kernel which provided many features, like the handling of dynamic shared libraries or the possibility to allocate memory.

Its job was to schedule all the tasks running on the machine, using a prioritized scheduling which used a round-robin algorithm. It also permitted communication between processes, via message passing. While other competitors have had problems because of the need to copy the messages between different address spaces, The Amiga solved this problem by only having one address space, avoiding that kind of difficulties. The other operating systems of those years used to run in the supervisor mode. Exec, instead, used to run in user mode: for when the supervisor mode was really needed, there where specific library functions to activate it.

The problem of this kernel was that because of its open nature, some programs could interrupt multitasking by calling certain functions, like Disable() or Forbid(), forcing Exec to run only a single task at a time.

Unix

In Unix the operating system was more highly controlled by the kernel. Other than scheduling the tasks to avoid conflicts, it directly controlled the file system and it decided when to run and when to stop programs. To be able to do this the kernel had to be organised in a different way compared to the one in the Amiga's Exec.

In Unix The kernel had privileges: the user-space and the kernel-space were clearly distinguished. Unix utilised a different idea of kernel, which was going in the opposite direction of what the other kernel manufacturers were doing. While most of the companies were trying to enlarge kernels as much as possible, Unix adopted the idea of a microkernel, where the easier tasks were taken care by small utilities, in contrast to its competitors. In a standard situation the Unix kernel didn't have many problems. With time, though, new devices and functions were implemented, like the mouse or the graphical user interface. Since their microkernel wasn't able to take care of these new devices, it was decided to move the control of these unorthodox functions outside of the kernels range, and leaving the microkernel to deal with the more basic functions of Unix.