Operating System

Evolution of an Operating System

   Simple Batch Systems

The Monitor

Desirable Hardware Features

Multiprogrammed Batch Systems

Multiprogrammed Batch Systems

Example:
Three Jobs Submitted

Advantages of Multiprogramming

Time Sharing Systems (TSS)

   Pseudo-Parallelism

   Process

   Process Model

Processes and Interrupt Handling Implementation

   Process Scheduling

   Scheduling Methods

   Concurrency

Event-driven Environments:
Window Interface Environments

Concurrency:
Co-routines

   Co-routines (cont.)

   Threads

Benefits of Threads vs Processes

   Benefits of Threads

Problem: Inconsistent Data Views

   Threads States

User-Level Threads (ULT)

   Threads library

Kernel activity for
User-Level Threads

Advantages and Inconveniences of ULT

Kernel-Level Threads (KLT)

Advantages and Inconveniences of KLT

Combined ULT/KLT Approaches

Language with Support for Concurrency: Ada

   Ada Rendezvous

Stacks in a Concurrent Program

   PThreads (POSIX Threads)

Problems with Concurrent Execution

   An Example

The Critical Section Problem

The Critical Section Problem

Framework for Analysis of Solutions

Software Solutions: Algorithm 1

Software Solutions:
Algorithm 2

Software Solutions:
Algorithm 3

   Semaphores

   Semaphores

Semaphore Operations (atomic)

Semaphores: Observations

Semaphores and Critical Sections

Process Synchronization:
Monitors

   Monitor

Monitor Example:
Producer-Consumer

Managing Memory within a Program

   Heap

   Garbage Collection