- concurrent processing
- concurrency - several things happening "at the same time"
- multiprocessing - what's the big deal
- channel computers - coordination between the cpu and the channel cpus
- the coordinated execution of multiple processes
- easier design - large grain, narrow interfaces
- better performance - no waiting
- increased reliability - failure isn't final; easy replication
- multiprocessors - true concurrency
- boss-worker
- coordination is simple but possibly inefficient
- reliability is fair to poor
- performance heavily dependent on task
- loosely-coupled
- coordination is somewhat complicated but more efficient
- reliability is good, but may be hard to achieve
- performance depends on task
- symmetric - smp
- coordination is similar to loosely-coupled systems; bandwidth is
higher
- reliability is good, and is easier to achieve
- performance less dependent on task.
- Process synchronization
- what's the problem
- consider the editor example
- unmediated access to shared information
- what's the solution
- control access to shared information
- mutual exclusion - at most one process accessing shared data at a
time
- critical regions - an implementation of mutual exclusion
- simple minded boolean flags
-
- test and set
- a hardware solution - almost universally implemented
- inefficient due to spin waiting
- semaphores
- the stone in the bowl
- wait and signal
- signals aren't sticky - like phones without answering machines
-
- patterns of process cooperation
- producer-consumer
- one-to-one, n-to-m
- one-way flow of information
- readers-writers
- a standard database problem
- readers read, writers write
- writers need exclusive access; readers can share
- no unnecessary delay, timely updates, no starvation
- barrier synchronization
- multi-phase tasks; each phase must be finished before the next starts
- pure synchronization - the sleeping barber
- essentially one-bit communication - stop-go
- no data are transfered, just state (which is data in some sense)
- general sharing - the dining philosophers
- concurrency mechanisms programming languages
- abstracting operating systems features in a language, usually at a
higher level
- ada
- tasks and rendezvous
- java
- threads and monitors (sorta)
This page last modified on 30 September 2002.