Introduction
Lecture Notes for CS 140
Spring 2020
John Ousterhout
Evolution of operating systems
- In the beginning:
- One user at a time, working directly at console
- Evolution of operating systems, phase 1:
- Hardware expensive, humans cheap
- First "operating system": I/O subroutine libraries shared
by users
- Simple batch monitor: get user away from the computer.
OS = program to load and run user jobs, take memory dumps
after crashes.
- Overlap of I/O and computation: data channels, interrupts.
- Memory protection and relocation enable multitasking:
several users share the system
- OS must manage interactions, concurrency
- By mid-1960's operating systems had become large, complicated.
- OS field emerges as important discipline with
principles
- Evolution of operating systems, phase 2:
- Hardware cheap, humans expensive
- Interactive timesharing
- File systems
- Issues of response time, thrashing
- Personal computers: computers are cheap, so put one in
each terminal.
- Networking: allow sharing and communication between
machines.
- Personal devices: put computers in cell phones, stereo players,
TVs, light switches
- Evolution of operating systems, phase 3 (recent years):
- Very small (devices)
- Very large (datacenters, cloud)
- Most of an operating system's functions have to do with
managing shared resources efficiently:
- Concurrency: allow several different tasks to share
processors; each appears to have a private machine. To keep
track of everything, processes and threads were invented.
- Memory: how can a single memory be shared among several processes?
- I/O devices: manage basic operations efficiently (e.g. many
devices can be operating concurrently). Manage shared resources
such as network interfaces.
- Files: allow many files, for many different users, to
share space on the same storage devices (disk/flash).
- Networks: allow groups of computers to work together.
- Security: how to allow interactions while protecting each
participant from abuse by the others?
- Characteristics of current OSes:
- Enormous: millions of lines of code, 100-1000 engineer-years
- Complex: asynchronous, hardware idiosyncrasies, performance
is crucial.
- Poorly understood
- Major sections of class:
- Concurrency
- Memory management
- File systems