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