Introduction

Lecture Notes for CS 140
Spring 2014
John Ousterhout

  • Evolution of operating systems, phase 1:
    • Hardware expensive, humans cheap
    • One user at a time, working directly at console
    • 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 dumps.
    • Data channels, interrupts, overlap of I/O and computation.
    • 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
      • Fancy 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.
    • Embedded devices: put computers in cell phones, stereo players, TVs, light switches
    • Are all the fancy features developed for timesharing still needed?
  • The future of OSes:
    • Very small (devices)
    • Very large (datacenters, cloud)
  • Characteristics of current OSes:
    • Enormous: millions of lines of code, 100-1000 engineer-years
    • Complex: asynchronous, hardware idiosyncrasies, performance is crucial.
    • Poorly understood
  • Most of an operating system's functions fall in the category of coordination: allowing several things to work together efficiently and fairly:
    • Concurrency: allow several different tasks to be underway at the same time, as if each had a private machine. To keep track of everything, processes and threads were invented.
    • I/O devices. Don't want CPU to sit idle while an I/O device is working.
    • Memory: how can a single memory be shared among several processes?
    • Files: allow many files, for many different users, to share space on the same physical disk.
    • Networks: allow groups of computers to work together.
    • Security: how to allow interactions while protecting each participant from abuse by the others?