Operating System Functions and Structure

Introduction

  1. At first operating systems were designed to help applications interact with the computer hardware.  While this is still the case, the importance of the operating system has grown to the point where (at least in the minds of many users) the operating system defines the machine.  Most users engaged in the Mac - PC - Unix battle are arguing about the operating systems on these machines, not the hardware platform itself.

  2. The operating system provides a layer of abstraction between the user and the bare machine.  Users and applications do not see the hardware directly, but view it through the operating system.

  3. We can view an operating system as providing four basic interfaces:

  4. Each of these interfaces provides the appropriate view for different groups of individuals:

  5. Most operating systems in use today are composed of two distinct parts: the kernel and the system programs.  The kernel is primarily responsible for the first two of the interfaces described above, and the system programs are primarily responsible for the last two.

Functionality of the Operating System Kernel

  1. Processes. A key abstraction utilized in the design of an operating system is the notion of process.

  2. Resource Allocation.  Modern operating systems often provide users and applications with a virtual machine, an interface to the underlying hardware that makes it appear as though the user is the only user of the machine and it's hardware.

  3. Support Services. Another important operating system task is providing support services for processes.  These include:

  4. Interrupts and Traps. A great deal of the kernel consists of code that is invoked as the result of a interrupt or a trap.

Operating System Design Principles

  1. Operating system design is a complex task.  One of the driving forces behind software engineering was the complexity of OS design.  (See, for example, The Mythical Man Month by Frederick Brooks).

  2. System design goals:

  3. Layered design:

  4. Distinction between mechanisms and policies:

Virtual Machines

The concept of virtual machines is closely related to layering.
  1. In a typical multi-user system, users are expected to know that the machine is shared by other users, and that resources such as devices are shared between all the users.

  2. In virtual machine operating systems an addition layer of abstraction is placed between the users and the system so that it appears to the user that they are using a machine dedicated to them.

  3. Usually it is the case that a more powerful machine is used to host several virtual machines.  For example, the 80386 and later Intel CPUs supported virtual 8086 machines.  Thus, an operating system designed for the 80386 could actually run several copies of MS-DOS and appear to the user to be several different PCs at the same time.

  4. Another example of a virtual machine system is the IBM 370 running the VM operating system.  This allowed users to work as if they had a dedicated (but smaller, less powerful) 370 completely at their disposal.


$Id: os_function.html,v 1.1 1998/04/02 15:23:37 senning Exp senning $

These notes are largely based on a set of notes prepared by Professor Russell C. Bjork of Gordon College.