Introduction

Introduction

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 systems": shared code for things like reading and writing devices
  • Simple batch monitor: get user away from the computer.
    • User submits deck of punched cards describing a series of operations to perform (job).
    • Operator puts decks in card reader, returns output listing from printer.
    • OS = program to load and run user programs, take memory dumps after crashes.
  • Overlap of input/output (I/O) and computation: data channels, interrupts.
  • Memory protection and relocation enable multitasking: several users share the system
    • OS kernel emerges: code that runs in privileged mode
    • 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)

OSes Today

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?

Code that implements these functions is called the kernel:

  • Kernel code and data occupies reserved area of memory
  • This code has control over the entire system
  • User application code is restricted

Class Info

Major sections of class:

  • Concurrency
  • Memory management
  • File systems