进程与线程的关系

Posted by 老沙
10月 31 2009

进程的两个特点:
资源所有权:进程是一个可拥有资源的独立单位;
调度/执行:进程同时又是一个可以独立调度和分派的基本单位;

引入线程的目的:
因为进程是一个资源拥有者,因而在进程的创建、撤消和切换中,系统必须为之付出较大的时空
开销。也因此,在系统中所设置的进程数目不宜过多,进程切换的频率也不宜过高,同时也限制了并
发程序的进一步提高。在操作系统中引入线程,是为了减少程序并发执行时所付出的时空开销,使操
作系统具有更好的并发性。

线程的实质:
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,一个进程可有多个线程;
线程除运行必需的资源外,不拥有系统资源,但它可与同属一进程的其它线程共享进程所拥有的全部资源;
一个线程可创建和撤消另一线程;同一进程中的线程间可并发执行;
线程间相互制约;线程在运行中呈现间断性;
线程有就绪、阻塞、执行三种基本状态;

线程与进程的比较
引入线程的OS
调度:线程为调度和分派的基本单位。进程为拥有资源的基本单位。
并发性:进程间可并发执行,一个进程中的多个线程间也可并发执行。
拥有资源:进程是拥有资源的一个独立单位线程不拥有系统资源。
系统开销:线程切换的开销远小于进程切换的开销;有的系统线程切换、同步和通信都无须OS内核的干预

传统的OS
调度:拥有资源和独立调度、分派的基本单位都是进程。
并发性:进程间可并发执行。
拥有资源:进程是拥有资源的一个独立单位。
系统开销:进程切换的开销远大于线程切换的开销;进程切换涉及OS内核。

线程的功能特征
和进程一样,线程具有执行状态,且可以与另一个线程同步。
线程状态—-和进程一样,线程的主要状态有运行、就绪和阻塞。一般来说,挂起状态对线程
没有什么意义。与线程状态变化相关的有四种基本操作:
  产生(Spawn): 当产生一个新进程时,同时也为该进程产生一个线程,随后,进程中的线程可以
  在同一个进程中产生另一个线程,并为新线程提供指令指针和参数。
  阻塞(Block): 当线程需要等待一个事件时,它将自己阻塞,此时处理器转而执行另一个就绪线程。
  解除阻塞(Unlock): 当阻塞一个线程的事件发生时,该线程被转移到就绪队列中。
  结束(Finish): 当一个线程完成时,其寄存器上下文和栈都被释放。
  线程同步—-一个线程对资源任何的修改都会影响同一个进程中其他线程的环境。因此,需要对各种
  线程的活动进行同步。

线程的分类
线程可分以下两类:
内核支持线程—-线程的创建、撤消和切换都由内核实现。
用户级线程——线程的创建、撤消和切换都不利用系统调用来实现,与内核无关。

两类线程的比较:
内核支持线程
线程的调度与切换速度:与进程的调度与切换十分相似。
系统调用:调度以线程为单位。
线程执行时间:线程多的进程获得CPU时

用户级线程
线程的调度与切换速度:发生在一个应用进程的各线程间,无须OS内核的干预,规则远比进程调度和切换的规则简单。切换速度特别快。
系统调用:一个线程调度看作整个进程的行为。
线程执行时间:进程运行速度与其拥有线程的数量成反比。

Trackback URL for this entry