A Short History of Operating Systems
Hand programmed machines (1945-1955) Single user systems OS = loader + libraries of common subroutines Problem: low utilization of expensive components
History of Operating Systems: Phases Phase 1: Hardware is expensive, humans are cheap User at console: single-user systems Batching systems Multi-programming systems
Batch/Off-line processing (1955-1965) Card Reader: CPU:
Card Reader:
observation interval
= % utilization
Printer:
Job 2
Execute Job 1
Printer:
CPU:
time device busy
Read Job 1
Job 2
Print Job 1
Read Batch 1
Batch 2 Execute Batch 1
Sequential
Job 3 Job 3 Job 2
Job 3
Batching
Batch 3 Batch 2 Print Batch 1
Batch 3 Batch 2
Batch 3
Batch Processing (1955-1965)
Multiprogramming (1965-1980)
Operating system = loader + sequencer + output processor
Keep several jobs in memory and multiplex CPU between jobs program P begin : Read(var) : end P
User Data User Program n Tape
...
User Program Tape
“System Software”
User Program 2
Operating System Input Card Reader
Compute
system call Read() begin StartIO(input device) WaitIO(interrupt) EndIO(input device) : end Read
User Program 1
Output
“System Software” Tape Operating System Printer
Tape
Multiprogramming (1965-1980)
Multiprogramming (1965-1980)
Keep several jobs in memory and multiplex CPU between jobs Program 1
I/O Device
main{ k: read()
User Program 2
k: read()
User Program 2
startIO() waitIO()
k+1:
Operating System
main{
endio{ interrupt
“System Software”
}
interrupt k+1:
Operating System }
Program 2 I/O Device
read{ startIO() schedule() }
User Program 1 endio()
OS
main{
User Program n read{
User Program 1 “System Software”
Program 1
...
User Program n ...
OS
Keep several jobs in memory and multiplex CPU between jobs
}
schedule() }
Phase 1: Hardware is expensive, humans are cheap User at console: single-user systems Batching systems Multi-programming systems
Phase 2: Hardware is cheap, humans are expensive Time sharing: Users use cheap terminals and share servers
Timesharing (1970-) A timer interrupt is used to multiplex CPU between jobs Program 1 main{
User Program n ...
History of Operating Systems: Phases
k:
Program 2
OS timer interrupt
User Program 2
schedule(){
User Program 1 schedule(){
“System Software”
k+1:
Operating System
History of Operating Systems: Phases Phase 1: Hardware is expensive, humans are cheap User at console: single-user systems Batching systems Multi-programming systems
Phase 2: Hardware is cheap, humans are expensive Time sharing: Users use cheap terminals and share servers
Phase 3: Hardware is very cheap, humans are very expensive Personal computing: One system per user Distributed computing: many systems per user Ubiquitous computing: LOTS of systems per users
main{
}
timer interrupt
timer interrupt
} schedule(){
Operating Systems for PCs Personal computing systems Single user Utilization is no longer a concern Emphasis is on user interface and API Many services & features not present Evolution Initially: OS as a simple service provider (simple libraries) Now: Multi-application systems with support for coordination
Distributed Operating Systems
Ubiquitous Computing
Abstraction: present a multi-processor system appears as a single processor one. New challenges in consistency, reliability, resource management, performance, etc. Examples: SANs, Oracle Parallel Server
PDAs, cellular phones, sensors
User Program
User Program
OS
OS
process management
process management memory management
file system name services mail services
CPU
CPU
CPU
OS
Challenges Small memory size Slow processor Battery concerns Scale Security Naming
LAN/WAN 37 Network
History of Operating Systems: Phases Phase 1: Hardware is expensive, humans are cheap User at console: single-user systems Batching systems Multi-programming systems
Phase 2: Hardware is cheap, humans are expensive Time sharing: Users use cheap terminals and share servers
Phase 3: Hardware is very cheap, humans are very expensive Personal computing: One system per user Distributed computing: many systems per user Ubiquitous computing: LOTS of systems per user
Richer Services Real-time operating systems
Real time Operating System Goal: To cope with rigid time constraints Hard real time: OS guarantees that application will meet deadline Examples: health monitors, factory control, traffic collision avoidance systems (TCAS)
Soft real time OS provides prioritization, on a best effort basis No critical failure if time constraint is violated Example: most electronic appliances
“Real time” means predictable NOT fast
Over the years Not that batch systems were ridiculous They were exactly right for the tradeoffs at the time
The tradeoffs change 1981
2006
MIPS
1
6570/CPU
Factor 1,000
$/MIPS
$100000
$0.11
900,000
DRAM
128KB
2GB
8,000
Disk
10MB
250GB
25,000
Net Bandwidth
9600 b/s
100 Mb/s
10,000
# Users
>> 10
<= 1
0.1
#CPU
1
4
4
Need to understand the fundamentals So you can design better systems for tomorrow’s tradeoffs