程序、进程、线程着三个概念最容易搞浑,区分程序还简单一些,
当一个程序没有得调入系统运行的时候,就是程序。
区分进程同线成则要困难很多,尤其是在不同的操作系统下面他们的含义
也不相同。一般的操作系统书关于这个区分讲得都不是很清楚,对unix、linux
以及windowsNT来讲,进程同线程不是很相同。
对unix、linux来讲,进程是操作系统可以调度的单位,是一个运行的程序。
早期的unix中是不存在线程的。新的unix引进了线程,同时引进了三种实现
线程的方式,分别为:用户线程、核心线程、以及混合线程。需要注意的就是
对unix来讲,进程可以产生线程,也可以不产生线程,就是说,线程同进程在
每种程度上讲,都是操作系统调度的单位。
对windowsNT(win32)来讲,同unix系统区分就非常大,win32的进程并不是
操作系统调度的单位,只有win32的线程才是。说穿了,就是win32的进程仅仅
是程序执行时的一个环境,就是说,进程是程序执行时的各种资源(包括4G内存、
系统堆、堆栈、其中的文件、以及其中的组成线程)的构成的一个环境。对win32
来说,操作系统调度的单位就是线程,进程是不被调度的。
通常在win32中,系统一般使用的是unix下的核心线程方式,任何win32程序
一旦调入系统,系统生成所有进程环境后,自动建立一个主线程,程序设计者
可以根据需要,再建立其他的线程,这样,在一个程序内部也是实现了并行运行。