A process is an instance of program execution. This means, for example, that if you open up two browser windows then you have two processes, even though they are running the same program.
The life-cycle of a process can be described by a state diagram which has states representing the execution status of the process at various times and transitions that represent changes in execution status.
The operating system maintains management information about a process in a process control block (PCB). Modern operating systems allow a process to be divided into multiple threads of execution, which share all process management information except for information directly related to execution. This information is held in a thread control block (TCB).
Threads in a process can execute different parts of the program code at the same time. They can also execute the same parts of the code at the same time, but with different execution state:
They have independent current instructions; that is, they have (or appear to have) independent program counters.
They are working with different data; that is, they are (or appear to be) working with independent registers