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.
- Hard to maintain
Major sections of class:
- Memory management
- File systems