Thread
A process has address space, registers, PC and stack (See man fork for the detailed list)
A thread has registers, program counter and stack, but the address space is shared with process that started it.
- This means that a user level thread could be invoked without assistance from the OS. This low overhead is one of the main advantages of threads.
- If a thread of a process is blocked, the process could go on.
- Concurrency: Many threads could be operating concurrently, on a multi threaded kernel.
- User level scheduling is simplified and realistic (bound, unbound, set concurrency, priorities etc.)
- Communication among the threads is easy and can be carried out without OS intervention.