There are several approaches to OS design, depending on the policies and mechanisms supported by the OS. In this course we shall study in detail the policies and mechanisms of one such approach, implemented in the XINU operating system. We have chosen XINU in this course because its implementation has been carefully thought and documented in a text book. Moreover, once you master Xinu, you will have no difficulty understanding Comer's text books on networking which show how networking support can be added to Xinu. The XINU approach is fairly typical of current OS approaches. However, it is only one OS approach and provides limited functionality. Therefore, variations of and embellishments to it will be studied through reading and programming assignments and class lectures.
In Xinu, there is no difference between a system call and an ordinary procedure call. A user program is linked to the kernel and can thus invoke kernel procedures through ordinary procedure calls. Moreover, there is no notion of servers and thus all operating system services are provided by the kernel. However, we shall see later how Xinu may be extended to support servers.
An important concept in XINU is layering. The different components of the system are partitioned into layers. At the heart of the layered organization is the raw machine. Building out from this core, higher layers of software provide more powerful primitives, and shield the user from the machine underneath. Each layer of the system provides an abstract service, and uses the services of lower level layers. The following are the XINU layers, going from inside to outside: the hardware, memory manager, process manager, process coordination, interprocess communication, real-time clock manager, device manager and device drivers, intermachine network communication, file system, and finally the user programs that use the virtual machine underneath. In the rest of this course, we shall study these layers in detail.
In general, a layer depends on the one below it. For example, process managament needs memory management to allocate memory for a process. However, this is not always the case. For example, I/O device drivers in Xinu do not depend on the clock manager. Their relative placement in the layering stack simply reflects the order in which they were added to Xinu.
Layering has the advantage that it provides a step-by-step or modular approach to operating system design and implementation. Each layer may be added incrementally, with lower level layers oblivious of higher level ones and and higher level layers concerned only with the definition of the services provided by lower level layers - not with their implementation.