随着软件设计技术的发展,上述以进程为基础的并发技术出现了一系列的问题。其中,主要问题是系统的并发程度过低,系统在进行进程切换时的时间和空间开销过大。究其原因,就是以进程作为分配处理器资源的基本单位显得过于庞大和笨重。于是,就促使人们把程序的运行过程再分割为更小的单位----线程,即把一个进程再分割为多个线程。这样,应用程序在系统中的运行过程就有了两个概念:进程和线程。
一个在操作系统管理下的程序,在内存中既有一个代表进程的进程控制块,也有多个代表线程的线程控制块。当然,这些线程控制块是归属于进程控制块的,这两者之间的关系可参见图。
如果把进程控制块看作一个家庭的档案,那么线程控制块就相当于家庭成员的档案。
操作系统在进行资源的分配时,对于存储空间资源,系统仍然以进程为单位来进行分配,而对于处理器资源则以线程为单位来进行分配。也就是说,同一个进程中的所有线程共享进程的资源,由于线程是基本运行单位,因此在线程控制块中要包含模块代码的指针和代码运行时所需的私有堆栈。
由于线程没有独占的存储空间,所以系统在调度切换线程时,只是考虑如何给线程分配处理器,而无须考虑其他资源的分配,所以调度工作所需的时间开销就小得多。如果把进程看作一个家庭,那么线程就相当于家庭成员。显然,调动一个家庭成员要比调动一个家庭容易得多。
拥有多个线程的进程叫做多线程进程。一个多线程进程的示意图如图所示。
图 多线程进程示意图
综上所述,在多线程操作系统中,进程是系统分配资源的基本单位,而线程是系统调度的基本单位。线程是进程的组成部分,同一个进程中的所有线程共享这个进程所获得的资源。
欢迎转载,信息来源维库电子市场网(www。dzsc。com)
ks99