Avi Silberschatz
Department of Computer Sciences
University of Texas at Austin
Peter Galvin
Department of Computer Science
Brown University
CHAPTER 1: INTRODUCTION
g
g
g
g
g
g
g
g
g
g
g
g
1.1
1.2
user
1
user
2
user
3
...
user
n
compiler
assembler
text
editor
...
database
system
Application Programs
Operating System
Computer
Hardware
1.3
1.4
g
g
Structure
- Large machines run from console
- Single user system
- Programmer/User as operator
- Paper tape or punched cards
Early Software
- Assemblers
- Loaders
- Linkers
- Libraries of common subroutines
- Compilers
- Device drivers
Secure
Inefficient use of expensive resources
- Low CPU utilization
- Significant amount of setup time
1.5
g
g
g
g
g
g
Hire an operator
User operator
Add a card reader
Reduce setup time by batching similar jobs
Automatic job sequencing automatically
transfers control from one job to another. First
rudimentary operating system.
Resident monitor
- initial control in monitor
- control transfers to job
- when job completes control transfers back to
monitor
1.6
Problems:
1) How does the monitor know about the nature of
the job (e.g., Fortran versus Assembly) or which
program to execute?
2) How does the monitor distinguish
a) job from job?
b) data from program?
Solution: introduce control cards
1.7
Control Cards
1.8
Solution: Off-line operation speed up computation by loading jobs into memory from tapes and
card reading and line printing done off-line.
card
reader
satellite
processor
printer
system tapes
main
computer
1.9
g
g
1.10
Spooling overlap the I/O of one job with the computation of another job.
disk
card
reader
printer
CPU
1.11
I/O
CPU
u2
u1
OS
L read ()
SIO
scheduler
L+1
M block
scheduler
interrupt
R
scheduler
R+1
1.12
Allocation of devices.
1.13
g
g
g
1.14
Personal-Computer Systems
small printers.
g
g
1.15
g
g
graceful degradation
fail-soft systems
1.16
Symmetric multiprocessing
- Each processor runs an identical copy of the
operating system.
- Many processes can run at once without performance deterioration.
Asymmetric multiprocessing
- Each processor is assigned a specific task;
master processor schedules and allocates work
to slave processors.
- More common in extremely large systems.
1.17
1.18
Real-Time Systems
g
g
1.19
g
g
g
g
g
g
Computer-System Operation
I/O Structure
Storage Structure
Storage Hierarchy
Hardware Protection
General System Architecture
Computer-System Operation
Devices
D11
CPU
D12
DC1
Dn1
D21
DC2
...
Dn2
Dn3
DCn
Device
Controller
Memory controller
Memory
g
g
g
g
g
g
2.1
g
g
g
g
2.2
Interrupt Handling
g
g
2.3
I/O Structure
2.4
Schema
Memory
CPU
I/O devices
I/O instructions
g
g
g
2.5
Storage Structure
2.6
Storage Hierarchy
2.7
Hardware Protection
Dual-Mode Operation
I/O Protection
Memory Protection
CPU Protection
2.8
Dual-Mode Operation
g
g
Sharing system resources requires operating system to ensure that an incorrect program cannot
cause other programs to execute incorrectly.
Provide hardware support to differentiate between
at least two modes of operations.
1. User mode execution done on behalf of a
user.
2. Monitor mode (also supervisor mode or system
mode) execution done on behalf of operating
system.
2.9
g
g
monitor
user
set user mode
2.10
I/O Protection
g
g
2.11
Memory Protection
g
g
300040
base register
job 3
120900
limit register
420940
880000
job 4
1024000
2.12
Protection hardware
base
CPU
address
base + limit
yes
no
yes
<
no
memory
trap to operating system
monitoraddressing error
g
g
2.13
CPU Protection
g
g
g
2.14
General-System Architecture
g
g
2.15
g
g
g
g
g
g
g
g
System Components
Operating-System Services
System Calls
System Programs
System Structure
Virtual Machines
System Design and Implementation
System Generation
g
g
g
g
g
g
g
g
Process Management
Main-Memory Management
Secondary-Storage Management
I/O System Management
File Management
Protection System
Networking
Command-Interpreter System
3.1
Process Management
process synchronization
process communication
3.2
Main-Memory Management
g
g
g
3.3
Secondary-Storage Management
g
g
3.4
3.5
File Management
3.6
Protection System
g
g
3.7
g
g
g
g
3.8
Command-Interpreter System
Many commands are given to the operating system by control statements which deal with:
- process creation and management
- I/O handling
- secondary-storage management
- main-memory management
- file-system access
- protection
- networking
3.9
Operating-System Services
I/O operations since user programs cannot execute I/O operations directly, the operating system
must provide some means to perform I/O.
3.10
Resource allocation allocating resources to multiple users or multiple jobs running at the same
time.
3.11
System Calls
System calls provide the interface between a running program and the operating system.
- Generally available as assembly-language
instructions.
- Languages defined to replace assembly
language for systems programming allow system calls to be made directly (e.g., C, Bliss,
PL/360).
Three general methods are used to pass parameters between a running program and the operating
system:
- Pass parameters in registers.
- Store the parameters in a table in memory, and
the table address is passed as a parameter in a
register.
- Push (store) the parameters onto the stack by
the program, and pop off the stack by the
operating system.
3.12
System Programs
System programs provide a convenient environment for program development and execution.
They can be divided into:
- File manipulation
- Status information
- File modification
- Programming-language support
- Program loading and execution
- Communications
- Application programs
3.13
parts:
- the systems programs.
- the kernel, which consists of everything below
the system-call interface and above the physical hardware. Provides the file system, CPU
scheduling, memory management, and other
operating-system functions; a large number of
functions for one level.
3.14
g
g
Level
4:
buffering for input and output devices
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Level
3:
operator-console device driver
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Level
2:
memory management
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Level
1: CPU scheduling
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Level 0:
hardware
3.15
Virtual Machines
g
g
g
3.16
3.17
User goals operating system should be convenient to use, easy to learn, reliable, safe, and
fast.
3.18
g
g
3.19
System Implementation
g
g
3.20
g
g
3.21
CHAPTER 4: PROCESSES
g
g
g
g
g
g
Process Concept
Process Scheduling
Operation on Processes
Cooperating Processes
Threads
Interprocess Communication
Process Concept
g
g
g
4.1
new
admitted
interrupt
terminated
running
ready
I/O or event
exit
scheduler dispatch
completion
I/O or event
waiting
4.2
wait
4.3
ready queue
CPU
end
job queue
I/O
I/O waiting
queue(s)
4.4
Schedulers
- Long-term scheduler (job scheduler) selects
which processes should be brought into the
ready queue.
- Short-term scheduler (CPU scheduler)
selects which process should be executed next
and allocates CPU.
long term
short term
end
CPU
ready queue
I/O
I/O waiting
queue(s)
4.5
g
g
g
g
4.6
Context Switch
g
g
g
When CPU switches to another process, the system must save the state of the old process and
load the saved state for the new process.
Context-switch time is overhead; the system does
no useful work while switching.
Time dependent on hardware support.
4.7
Process Creation
g
g
g
g
g
4.8
Process Termination
4.9
Cooperating Processes
g
g
g
4.10
Producer-Consumer Problem
Shared-memory solution:
- Shared data
var n;
type item = ... ;
var buffer: array [0..n1] of item;
in, out: 0..n1;
in := 0;
out := 0;
4.11
- Producer process
repeat
...
produce an item in nextp
...
while in+1 mod n = out do no-op;
buffer[in] := nextp;
in := in+1 mod n;
until false;
- Consumer process
repeat
while in = out do no-op;
nextc := buffer[out];
out := out+1 mod n;
...
consume the item in nextc
...
until false;
- Solution is correct, but can only fill up n 1
buffer.
4.12
Threads
4.13
g
g
g
g
Threads provide a mechanism that allows sequential processes to make blocking system calls
while also achieving parallelism.
Kernel-supported threads (Mach and OS/2).
User-level threads; supported above the kernel,
via a set of library calls at the user level (Project
Andrew from CMU).
Hybrid approach implements both user-level and
kernel-supported threads (Solaris 2).
4.14
4.15
g
g
Communication link
- physical implementation (e.g., shared memory,
hardware bus)
- logical implementation (e.g., logical properties)
4.16
Implementation questions:
g
g
g
g
g
g
4.17
Direct Communication
4.18
Indirect Communication
Messages are directed and received from mailboxes (also referred to as ports).
- Each mailbox has a unique id.
- Processes can communicate only if they share
a mailbox.
Operations
- create a new mailbox
- send and receive messages through mailbox
- destroy a mailbox
4.19
Mailbox sharing
- P 1, P 2, and P 3 share mailbox A.
- P 1 sends; P 2 and P 3 receive.
- Who gets the message?
Solutions
- Allow a link to be associated with at most two
processes.
- Allow only one process at a time to execute a
receive operation.
- Allow the system to select arbitrarily the
receiver. Sender is notified who the receiver
was.
4.20
4.21
Process terminates
Lost messages
Scrambled Messages
4.22
g
g
g
g
g
g
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Multiple-Processor Scheduling
Real-Time Scheduling
Algorithm Evaluation
Basic Concepts
g
g
g
frequency
burst time
5.1
g
g
process:
1. switches from running to waiting state.
2. switches from running to ready state.
3. switches from waiting to ready.
4. terminates.
5.2
Dispatcher
5.3
Scheduling Criteria
possible
5.4
Optimization
- Max CPU utilization
- Max throughput
- Min turnaround time
- Min waiting time
- Min response time
5.5
Example:
hProcess
hhhhh
time
hBurst
hhhhhhhh
P1
P2
P3
24
3
3
P2
24
P3
27
30
P1 = 0
P 2 = 24
P 3 = 27
(0 + 24 + 27)/3 = 17
5.6
g
g
g
g
P3
3
P1
6
30
P1 = 6
P2 = 0
P3 = 3
(6 + 0 + 3)/3 = 3
5.7
g
g
5.8
Example of SJF
Process
h hhhhh
Arrival time
hhhhhhhhhhh
CPU time
hhhhhhhh
P1
P2
P3
P4
0
2
4
5
7
4
1
4
SJF (non-preemptive)
P1
P3
P4
P2
12
16
SRTF (preemptive)
P2
P1
P3
P1
P4
P2
11
16
5.9
g
g
+1
= W * Tn + (1 W ) n
5.10
Examples:
W =0
n + 1 = n
Recent history does not count.
W =1
n + 1 = Tn
Only the actual last CPU burst counts.
+1
= W Tn + (1 W ) W Tn 1 +
(1 W )2 W Tn 2 + ... + (1 W )q
W Tn q
5.11
Priority Scheduling
g
g
g
g
5.12
5.13
hProcess
hhhhh
times
hCPU
hhhhhhhh
P1
P2
P3
P4
53
17
68
24
20
P4
P3
37
57
P3
P1
77
97
P4 P1
P3
P3
5.14
Multilevel Queue
5.15
g
g
5.16
Three queues:
- Q 0 time quantum 8 milliseconds
- Q 1 time quantum 16 milliseconds
- Q 2 FCFS
Scheduling
A new job enters queue Q 0 which is served FCFS.
When it gains CPU, job receives 8 milliseconds.
If it does not finish in 8 milliseconds, job is
moved to queue Q 1. At Q 1, job is again served
FCFS and receives 16 additional milliseconds. If
it still does not complete, it is preempted and
moved to queue Q 2.
5.17
Multiple-Processor Scheduling
- CPU scheduling more complex when multiple
CPUs are available.
- Homogeneous processors within a multiprocessor.
- Load sharing
- Asymmetric multiprocessing only one processor accesses the system data structures,
alleviating the need for data sharing.
Real-Time Scheduling
- Hard real-time systems required to complete
a critical task within a guaranteed amount of
time.
- Soft real-time computing requires that critical processes receive priority over less fortunate ones.
5.18
Algorithm Evaluation
g
g
g
5.19