Two main approaches to implementation
User level threads (POSIX Pthreads)
Thread management is the responsibility of the user and occurscompletely in user mode.
Thread scheduling is user controlled, you can choose the best wayto schedule your own threads
Blocking system calls or page faults block all threads (not just one)must wrapper the call so thread is not blocked if device is busy
Cannot take advantages of multiprocessors
Kernel level threads (Windows, newer Linux releases)
All thread management is done by the kernel
Requires mode switch to kernel to move between threads
API to the kernel thread facility provides users access throughsystem calls
O/S dependent