`

线程介绍

 
阅读更多
线程
1.引入线程机制的动机和思路
      操作系统采用进程机制使得多任务能够并发执行,提高了资源使用率和系统效率。在早期操作系统中,进程是系统进行资源分配的基本单位,也是处理器调度的基本单位,进程在任一时刻只有一个执行控制流,这种结构的进程称为单线程(结构)进程(Single threaded process)。
例如:MS-DOS支持单用户进程,进程是单线程的;传统的UNIX支持多用户进程,每个进程也是单线程的。单线程进程调度时存在进程时空开销大、进程通信代价大、进程并发粒度粗、不适合于并行计算等问题,操作系统引入线程机制来解决这些问题。
       线程机制的基本思路是,把进程的两项功能——“独立分配资源”与“被调度分派执行”分离开来,前一项任务仍由进程完成,后一项任务交给称为线程的实体完成。这样,进程作为系统资源分配与保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,会被频繁地调度和切换。
2.线程的定义和属性
       线程(thread)是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。同一个进程中的所有线程共享进程获得的主存空间和资源,但不拥有资源。
        支持多线程的进程称为多线程(结构)进程(multiple threaded process)。多线程进程模型图如下:


线程的主要特性说明如下:
       并发性——同一进程的多个线程可在一个或多个处理器上并发或并行地执行,而进程之间的并发执行演变为不同进程的线程之间的并发执行。
       共享性——同一个进程中的所有线程共享但不拥有进程的状态和资源,且驻留在进程的同一个主存地址空间中,可以访问相同的数据。所以,线程之间需要有通信和同步机制。
动态性——线程是程序在相应数据集合上的一次执行过程,它有生命周期,也经历各种状态变化,由创建而产生,至撤销而消亡。当创建一个进程时,至少同时为其创建一个线程,需要时线程再创建其他线程。终止一个进程将导致进程中的所有线程终止。
       结构性——线程是操作系统中的基本调度和分派单位,因此它具有唯一的标识符和线程控制块,其中包含调度所需的一切私有信息。
3.线程的状态
        线程在其生命周期中经历这状态的变化,线程状态包括5种:新建、就绪、运行、等待(阻塞)、终止。线程的5种状态及状态转换如图



4.线程的并发性
    在单处理器上,一组线程的执行在时间上是重叠的,它们的操作是交叉执行的,称这些线程是并发执行的。从宏观上看,在一个时间段中有几个线程都处于运行还未运行结束状态;从微观上上看,任一时刻仅有一个线程在处理器上运行。并发的实质是一个处理器在多线程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,提高系统资源利用率。

5.线程调度
     由于任一时刻只有一个线程能够占用一个处理器运行,当有多个线程处于就绪态时,它们排队等待处理器资源。因此,按照什么原则决定就绪队列中的哪个线程能够获得处理器就是操作系统的重要问题,这就是线程调度的任务。
      线程调度的功能是按照某种原则选择一个线程使它获得处理器运行。线程调度是操作系统中处理器的低级调度(low level scheduling)。线程调度中执行分配处理器的程序称为分派程序(dispatcher),它是操作系统最核心的部分,执行十分频繁。线程调度策略优劣直接影响到操作系统的性能。
      线程调度采用剥夺方式,当一个线程正在处理器上执行时,操作系统可以根据规定的原则剥夺它的处理器使用权,而把处理器分配给其它线程使用。常用的剥夺原则有两种:一是高优先级线程可以剥夺低优先级线程运行;二是当运行线程时间使用完后被剥夺处理器。剥夺式策略可以避免一个线程长时间独占处理器,能给线程提供较好的服务。
      因此,就绪态的线程需要按优先级排队,线程调度依据优先级基础上的“先到先服务”原则。线程的优先级(priority)描述线程执行的优先程度,反映线程的重要或紧急程度。
  • 大小: 13.2 KB
  • 大小: 12.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics