An application can be implemented as a set of threads that cooperate and execute concurrently in the same address space. Criteria: When related threads run in parallel perf. improves.
Load sharing: pool of threads, pool of processors.
Gang scheduling: Bunch of related threads scheduled together.
Dedicated processor assignment: Each program gets as many processors as there are parallel threads.
Dynamic scheduling: More like demand scheduling.