Norman Matloff
University of California, Davis
©2001, N. Matloff
May 30, 2001
Contents
1 Introduction 1.1 It's Just a Program! 1.2 What Is an OS for, Anyway? 1.3 A Bit More on System Calls 1.4 Making These Concepts Concrete: Commands You Can Try Yourself
2 System Bootup
3 Application Program Loading
4 Timesharing 4.1 Many Processes, Taking Turns 4.2 Example of OS Code: Linux for Intel CPUs 4.3 Process States 4.4 How the Process Tree Is Built 4.5 Making These Concepts Concrete: Commands You Can Try Yourself
5 The Use of Virtual Memory for Memory Management and Protection 5.1 Make Sure You Understand the Goals 5.2 Example of Virtual Nature of Addresses 5.3 Overview of How the Goals Are Achieved 5.4 Creation and Maintenance of the Page Table 5.5 Details on Usage of the Page Table 5.5.1 Virtual-to-Physical Address Translation, Page Table Lookup 5.5.2 Page Faults 5.5.3 Access Violations 5.6 Improving Performance 5.7 Intel Page Tables 5.8 Making These Concepts Concrete: Commands You Can Try Yourself
A Hardware Interrupts A.1 General Operation A.2 Some Details for Intel CPUs and PCs
1 Introduction
1.1 It's Just a Program!
First and foremost, it is vital to understand that an operating system (OS) is just a program - a very large, very complex program, but still just a program. The OS provides support for the loading and execution of other programs (which we will refer to below as ``application programs''), and the the OS will set things up so that it has some special privileges which user programs don't have, but in the end, the OS is simply a program.
For example, when your program, say a.out,1 is running, the OS is not running, Thus the OS has no power to suspend your program while your program is running - since the OS isn't running! This is a key concept,