process has its own memory space ... isolated and protected ... a single process can have multiple threads ... which are ... light weight processes ... ie processes without memory protection ...
simply put processes are one-up in the heirarchy over threads ...
an os can have multiple processes while a process can have multilpe threads ...
Threads are independent each other, thus, canbe executed in parallel without little overhead. Therefore, server computers with multiple CPUs will increase the performance if the programs are run based on Threads.
For a usual PC with a single processor, the performance will be improved little although you use thread-based programs.
well, I think not exactly. I consider this perhaps better expresses what a process is : a process is the instance of a currently running application, or to put it strightly a process is a single image of the application that's currently executing in memory.
So, for example, AFAIK, windows explorer always executes as a single process, no matter how many times you invoke it, it'll just create another thread to serve the new "request". While perhaps most of our daily application, will execute a new process i.e. new "instance" of the application that's excuted in memory, independent of the "instance" of the first invocation. I think this is the purpose of hPrevInstance for in winAPI for 16 bit windows back then. I'm not so "literate" in the implementation of recognizing application instance. CMIIW
1. A thread is within a process, this can be any type of division as I can see. People like to divide threads away from processes -> just like dividing things in stages. For this case, it will be 'stage a' in 'stage 1'. Sorry if the last part doesn't make sense
2. a process is a sub task which is there only to make programming for the programmer easier.
There are other explainations such as a process sharing the same cpu while a thread sharing the same stack etc. But I don't like those.