UNDER CONSTRUCTION!

Processes

Process -- a program in a state of execution, where state includes registers, variable values, open files, input, output, etc.

Multiprogramming -- on a uniprocessor, switching the CPU among runnable processes in memory every 100ms or so, also called pseudoparallelism. OS does this context switch after every so many hardware clock interrupts.

True parallelism on a uniprocessor: IO device DMA while CPU is executing some other program (IO device ``steals'' cycles) (also multiple functional units, vector processing unit)

Process states

  ready <--> running         running process can issue IO request and block
    ^             |          running process can use up its time quantum
    |             |          ready process can get scheduled on CPU
    |             |          blocked process can have its request done
    --- blocked <--

Threads

Concurrent programming has its roots in operating systems.

In the 1960's, independent device controllers were added to computers, each programmable itself.

So the OS came to be organized as a collection of concurrently executing processes.

For example,

The tools built into the OS to control process synchronization have become available to users for concurrent/parallel programming.

The article An Introduction to Programming with Threads by Andrew D. Birrell (1989) motivates concurrent programming with threads:


SJH
shartley@mcs.drexel.edu