Intro

    Go over syllabus.

    1. Meet neighbors.
    2. Laid back, relaxed.
    3. Food cool.
    4. Questions encoraged.

    Define operating system.

    1. There are really two definitions:
      1. First, the kernel.
      2. Second, the kernel plus the standard set of utilities that come with the kernel.
      3. Definitions is loose -- others might disagree.
    2. Computer systems can be divided into four parts
      1. Hardware.
      2. Operating software.
      3. Applications.
      4. Users.
    3. Book says kernel like a government -- decided allocation of resources.
      1. Deciding allocations and handling concepts central to O.S.
      2. Also provides hardware abstraction.
      3. Also provides effecient algorithms for common operations.
      4. Provides a flavor (command line, icons, file name schemes, etc.)
    4. How to recognize the kernel
      1. One program running all the time (the kernel).
      2. Runs at highest processor level.
      3. Not the "main application".
      4. Note: This excludes the common utilities that come with DOS/UNIX/Windows.
    5. So, who was write in the Micorsoft trial?

    Oldest hardware

    1. Room at Illinois
    2. Roller skates.
    3. Tell bug story.
    4. Switches used to load in programs written in binary.

    Resident Monitors and the BATCH METHOD.

    1. GOAL: Improve thoughput by increased utilization.
    2. METHOD: Software to help load and run jobs. Also improve and reduce I/O.
    3. Old method (for comparision).
      1. Load program.
      2. Run program.
      3. Watch for end.
      4. Get dump if needed.
      5. Notice that people are very slow compared to computers (even early computers).
    4. First resident monitors.
      1. Have ROM (or prom or bootstraped) based monitor.
      2. Monitor waits for input deck.
      3. Runs commands in deck.
      4. Commands can include "$RUN" "$ASM "$FTN".
      5. Monitor contains I/O routines callable by user programs.
        1. No need to load device drivers for each program.
      6. MS-DOS is somewhat like this.

    Multiprogramed batch systems

    1. PROBLEM: CPU and I/O devices are idle while other subsystem active.
    2. SOLUTION: Run muliple jobs at the same time.
    3. Flow chart:
      1. Job runs till it needs I/O.
      2. Start I/O.
      3. Find job where I/O has completed.
      4. Switch to that job.
      5. Go to top.
    4. Requirements
      1. Applications that no longer own the whole machine.
      2. O.S. that can handle I/O in background (interupts).
      3. O.S. that can divide memory into different pools for different jobs (coordinate memory).
      4. O.S. that can schedule resources.
      5. Nice would be O.S. that can protect one job from another (memory protection).
      6. More sophisticated than DOS.

    Time sharing Systems

    1. PROBLEM: Programing/user enviornment sucks. Old programmers remember interactivity.
    2. SOLUTION: Mutlitasking. Provide the illusion that each user has the computer to themselves.
    3. Flow chart
      1. Run job for very small amount of time or until I/O request.
      2. Go to next job that is ready to run.
    4. Started in '60s, became common in '70s.
    5. In some ways, this is better than many small CPUs. (at night, get almost all resources).
    6. In other ways, this is worse (switching and O/S overhead, non-guarenteed responce).

    Real Time Systems

    1. Definition:  Any system with deadlines.
      1. Hard Real Time is when the system cannot miss even one deadline
        1. Examples:  ABS brakes, Nuclear power plant controller, shuttle computer
      2. Soft Real Time is when the system should almost always never miss a deadline
        1. Examples:  Video game, auto engine controller
    2. Soft real time is MUCH easier than hard real time.
    3. These are generally speciallized operating system, not anything in common usage.
    4. QUESTION:  Can a real time O.S. swap out to disk?

    Parallal Operating Systems

    1. Definition: Operating Systems using multiple processors
    2. Problem:  How can multiple CPU's coordinate there usage of resources?
    3. Solution:  Locks, Locks, Locks
    4. Examples:  Linux. Windows NT (but not 98), MVS, etc.

    Fault Tolerant  Operating Systems

    1. Definition: O.S. that can continue without error after significant hardware failure.
    2. Problem:  How can an O.S. survive a CPU failure?
    3. Solution:  Have multiple CPU (and power supply, ethernet card, RAM, everything)
    4. Question:  How many CPU's are needed?  How do you connect them?
    5. Examples:  Space shutlle computers, Tandem, etc.

    Comparision O.S. Types

      Attribute

      Simple
      Monitor
      Multiprogrammed 
      Monitor

      Timesharing

      Real Time
      Systems
      Parallel Fault 
      Tolerant
      Application share machine? No Yes Yes Yes Yes Yes
      Interactive  No No Yes Yes Yes Yes
      CPU utilitzation Very Poor Optimal Optimal Optimal Bad-to-Good Optimal
      Guarenteed response time Yes Very Iratic Iratic  Yes No No
      Overhead Almost None Medium More More More More to Huge