简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。
在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。
在Windows 95/NT下,线程是最小单位。
WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。
所谓进程,本身不能执行,它只是一个资源的集合体,拥有地址空间,模块,内存,...
线程是真正的执行单元,一个进程如果没有线程,那么就没有存在的意义,因为不可能执行。
>>>>>>>>>>>>> 进程包含线程 >>>>>>>>>>>>
进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。 另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。
与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。
线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
发生进程切换与发生线程切换时相比较,进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;线程切换时,由于同不进程内的线程共享资源和地址 空间,将不涉及资源信息的保存和地址变化问题,从而减少了操作系统的开销时间。
进程的调度与切换都是由操作系统内核完成,
而线程则既可由操作系统内核完成,也可由用户程序进行