Operating-System Structures

References:

  1. Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, "Operating System Concepts, Eighth Edition ", Chapter 2

This chapter deals with how operating systems are structured and organized. Different design issues and choices are examined and compared, and the basic structure of several popular OSes are presented.

2.1 Operating-System Services

OSes provide environments in which programs run, and services for the users of the system, including:

Other systems aid in the efficient operation of the OS itself:

2.2 User Operating-System Interface

2.2.1 Command Interpreter

2.2.2 Graphical User Interface, GUI

Most modern systems allow individual users to select their desired interface, and to customize its operation, as well as the ability to switch between different interfaces as needed.

2.3 System Calls


Figure 2.4


Figure 2.5


Figure 2.6


Figure 2.7


Figure 2.9

2.4 Types of System Calls

Five major categories, as outlined in Figure 2.8 and the following five subsections:

2.4.1 Process Control


Figure 2.10


Figure 2.11

2.4.2 File Management

2.4.3 Device Management

2.4.4 Information Maintenance

2.4.5 Communication

2.4.6 Protection

2.5 System Programs

2.6 Operating-System Design and Implementation

2.6.1 Design Goals

2.6.2 Mechanisms and Policies

2.6.3 Implementation

2.7 Operating-System Structure

For efficient performance and implementation an OS should be partitioned into separate subsystems, each with carefully defined tasks, inputs, outputs, and performance characteristics. These subsystems can then be arranged in various architectural configurations:

2.7.1 Simple Structure

When DOS was originally written its developers had no idea how big and important it would eventually become. It was written by a few programmers in a relatively short amount of time, without the benefit of modern software engineering techniques, and then gradually grew over time to exceed its original expectations. It does not break the system into subsystems, and has no distinction between user and kernel modes, allowing all programs direct access to the underlying hardware. ( Note that user versus kernel mode was not supported by the 8088 chip set anyway, so that really wasn't an option back then. )


Figure 2.12

The original UNIX OS used a simple layered approach, but almost all the OS was in one big layer, not really breaking the OS down into layered subsystems:


Figure 2.13

2.7.2 Layered Approach


Figure 2.14

2.7.3 Microkernels

2.7.4 Modules


Figure 2.15


Figure 2.16

2.8 Virtual Machines


Figure 2.17

2.8.1 History

2.8.2 Benefits

2.8.3 Simulation

2.8.4 Para-virtualization

2.8.5 Implementation

2.8.6 Examples

2.8.6.1 VMware


Figure 2.19

2.8.6.2 The Java Virtual Machine


Figure 2.20


Figure 2.21

2.9 Operating-System Debugging

2.9.1 Failure Analysis

2.9.2 Performance Tuning

2.9.3 DTrace


Figure 2.22

2.10 Operating-System Generation

2.11 System Boot

The general approach when most computers boot up goes something like this:

2.12 Summary