A process in a multi-threaded system is the changeable entity. It must be considered as an execution frame. It has all traditional process attributes, such as:
Process ID, process group ID, user ID, and group ID
A process also provides a common address space and common system resources:
Inter-process communication tools (such as message queues, pipes, semaphores, or shared memory).
A thread is the schedulable entity. It has only those properties that are required to ensure its independent flow of control. These include the following properties:
Scheduling properties (such as policy or priority)
Set of pending and blocked signals
Some thread-specific data.
Modern Operating systems( Mach,Chorus,NT,Modern UNIX) separate the concept of thread and process.
The thread defines a sequential execution stream within a process( PC,SP,Registers).
The process defines the address space and general process attributes ( everything but the thread of execution).
A thread is bound to a single process. However, processes, can have multiple threads.
Threads become the unit os scheduling. Processes are now the containers in which threads execute.Process become static entities while, threads are dynamic entities.
Process and Threads
Separating threads and processes makes it easier to support multi threaded applications. Creating concurrency does not require creating new process. Concurrency can be very useful for improving program structure, handling concurrent events and writing parallel programs. So, multithreading is even useful on a uniprocessor