多线程技术

上传人:cl****1 文档编号:508031602 上传时间:2023-08-01 格式:DOCX 页数:9 大小:17.79KB
返回 下载 相关 举报
多线程技术_第1页
第1页 / 共9页
多线程技术_第2页
第2页 / 共9页
多线程技术_第3页
第3页 / 共9页
多线程技术_第4页
第4页 / 共9页
多线程技术_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《多线程技术》由会员分享,可在线阅读,更多相关《多线程技术(9页珍藏版)》请在金锄头文库上搜索。

1、目录1 线程 21.1 线程的引入21.2 线程的基本概念31.3 线程的性质31.4 线程的优点31.5 线程的适用范围41.6 线程的分类41.6.1 内核线程51.6.2 用户线程51.7 线程的状态51.8 线程的执行特性62 多线程技术62.1 多线程的优点72.2 多线程模式72.2.1 单对多模式72.2.2 单对单模式72.2.3 多对多模式8参考文献9线程和多线程摘要:论文主要介绍了线程的特点、性质、优点、适用范围、分类状态及执行特性,还简单介绍了多线程的优点及模式。关键字:线程 多线程1线程1.1线程的引入如果说,在操作系统中引入进程都是目的是为了使多个程序能并发执行,以

2、提高资源的利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减 少程序在并发执行时所付出的时空开销,使计算机操作系统具有更好的并发性。为了说明这一点,首先回顾进程的两个基本属性 :进程是一个可拥有资源 的独立单元。进程同时又是一个可独立调度和分配的基本单元。正是由于进程 有这两个基本属性,才使之成为一个能独立运行的基本单元,从而也就构成了进 程并发执行的基础。然而,为了使程序能并发执行,系统还必须进行一下一系列 操作:创建进程。系统在创建一个进程时,必须为它分配其所必需的,除处理 机外的所以资源。如内存空间、I/O设备以及建立相应的PCB撤销进程。系统 在撤销进程时又必须先对其所占用的

3、资源执行回收操作,然后再撤销PCB进 程切换。对进程进行切换时,由于要保留当前进程的 PCB 环境和设置新选中的 进程的 CPU 环境,须花费不少的处理机时间。换言之,由于进程是一个资源的拥有者,因而在创建、撤销和切换中,系统 必须为之付出较大的时空开销。也因如此,在系统中所设置的进程,其数目不宜 过多,进程切换的频率也不宜过高,这也就限制了并发进程的进一步提高。如何能使多个程序更好地并发执行同时又尽量减少系的开销已成为近年来 设计操作系统时所追求的重要目标。有不少演技操作系统的学者们想到,若能将 进程的上述两个属性分开,由操作系统分别处理,也就是对于作为调度和分派的 基本单位不同时作为拥有资

4、源的单位,以做到“轻装上阵”;而对于拥有资源的 基本单位,又不对之进行频繁的切换。正是在这种思想的指导下,形成了线程的 概念。1.2 线程的基本概念线程是进程内一个相对独立的、可调度的执行单元。可以从线程与进程的异同比较中进一步理解线程的概念。进程是资源分配的 基本单位。所有与该进程有关的资源,例如打印机,输入缓冲队列等,都被记录 在进程控制块 PCB 中。以表示该进程拥有这些资源或正在使用它们。另外,进 程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。与进程相对应, 线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程 的资源。再者,当进程发生调度时,不同的进程拥

5、有不同的虚拟地址空间,而同 一进程内的不同线程共享同一地址空间。1.3 线程的性质根据线程的定义可知线程有以下性质: 线程是进程内的一个相对独立的可执行单元。线程是操作系统中的基本调度单元,因此线程中应包含有调度所需的必要信 息。由于线程是被调度的基本单元,而进程不是调度的单元,所以每个进程在创建 时,至少需要同时为该进程创建一个线程。也就是说进程中至少要有一个或一个 以上线程,否则该进程无法被调度执行。需要时,线程可以创建其他线程。进程是被分给并拥有资源的基本单元,同一进程内的多个线程共享该进程的资 源。但线程并不拥有资源,只是使用它们。由于共享资源,所以线程间需要通信和同步机制。线程有生命

6、期,有诞生和死亡。在生命期中有状态的变化。1.4 线程的优点采用线程机制有些什么好处呢?对于多线程机制而言,一个进程可以有多个 线程,这些线程共享该进程资源,这些线程驻留在相同的地址空间,共享数据和 文件。如果一个线程修改了一个数据项,其他线程可以了解和使用此结果数据。 一个线程打开并读一个文件时,同一进程中国的其他线程也可以同时读此文件。 总而言之,这些线程运行在同一进程的相同的地址空间。这有以下优点: 首先用于创建和撤销线程的开销比创建和撤销进程的系统开销要少得多。创建 进程时仅需建立线程控制表相应表目,或有关队列。而在创建进程时要创建 PCB 表和初始化,进入有关进程队列,建立它的地址空

7、间和所需资源等,要麻烦费事 得多。撤销时情况也一样。CPU在线程之间开关时的开销也远比进程之间开关的开销小。因为开关的线 程都在同一地址空间内,只需要修改线程控制表或队列,不涉及地址空间和其他 工作。线程机制也增加了通讯的有效性。如果是在进程之间通讯,往往要求内核的参 与,以提供通讯机制和保护机制。而线程间通讯是在同一进程的地址空间内,共 享主存和文件,所以非常简单,无需内核参与。方便和简化了用户的程序结构工作。用户在分析和设计程序结构时,考虑如何 便于多线程机制实现,客观上促使用户设计出边界清晰、模块独立性好的程序。1.5 线程的适用范围并不是在所有的计算机系统中线程都是适用的。事实上在那些

8、很少做进程调 度和切换的实时系统、个人数字助理系统中,由于任务的单一性,设置线程相反 会占用更多的内存空间和寄存器。使用线程的最大好处是在有多个任务需要处理机处理时,减少处理机的切换 时间;而且,线程的创建和结束所需要的系统开销也比进程的创建和结束要小得 多。由此,可以推出最适合使用线程的系统是多处理机系统。在多处理机系统中, 同一用户程序可以根据不同的功能划分为不同的线程,放在不同的处理机上执 行。在用户程序可以按功能划分为不同的小段时,单处理机系统也可因使用线程 而简化程序的结构和提高执行效率。几种典型的应用是:(1) 服务器中的文件管理或通信控制。在局域网的文件服务器中,对文件的访问 要

9、求可被服务器进程派生出的线程进行处理。由于服务器同时可能接受许多个文 件访问要求,则系统可以同时生成多个线程来进行处理。如果计算机系统是多处 理机的,这些线程还可以安排到不同的处理机上执行。(2) 前后台处理。许多用户都有过前后台处理经验,即把一个计算量较大的程序 或实时性要求不高的程序安排在处理机空闲时执行。对于同一个进程中的上述程 序来说,线程可被用来减少处理机切换时间和提高执行速度。(3) 异步处理。程序中的两部分如果在执行上没有顺序规定,则这两部分程序可 用线程执行。1.6线程的分类现在对线程已经有了基本的了解。线程可以分成两种:一种是设计系统内核 的,称为内核线程;另一种是用户级别的

10、,称为用户线程。1.6.1 内核线程对于通常的进程,无论是系统进程还是用户进程,进程的创建、撤销以及要 求由系统设备完成的I/O操作,都是利用系统调用而进入内核再由内核中相应的 处理程序予以完成的。进程的切换同样是在内核的支持下实现的。因此说,不论 什么进程都是在操作系统内核的支持下运行的,是与内核紧密相连的。这里所谓的内核支持线程,也都同样是在内核的支持下运行的,即无论是用 户进程中的线程,还是系统进程中的线程,它们的创建、撤销和切换等都是依靠 内核实现的。此外,在内核空间还为每一个内核支持线程设置了一个线程控制块, 内核根据该控制块而感知某线程的存在,并对其加以控制。1.6.2 用户线程用

11、户线程仅存在与用户空间中。对于这种线程的创建、撤销、线程中间的同 步于通信等功能都无须利用系统调用来实现。对于用户级线程的切换,通常是发 生在一个应用进程的诸多线程之间,也同样无须内核的支持。由于切换的规则远 比进程调度和切换的规则简单,因而线程的切换速度特别快。可见,这种线程是 与内核无关的。可以为一个应用程序建立多个用户进程。在一个系统中的用户线 程数目可以达到数百甚至数千个。由于这些线程的任务控制块都是设置在用户空 间中,而线程所执行的操作也无须内核的帮助,所以内核完全不知道用户级线程 的存在。1.7 线程的状态由于线程是到底和执行的基本单位,因此,和进程一样,线程在它生命过程 中有状态

12、变化。所谓状态是指线程当前在干什么和它能干什么?实际上状态的划 分和设计与系统设计目标和调度方法紧密相关,因此各系统的状态设计部完全相 同,但几个关键状态择是共有的。就绪状态线程已具备执行条件,等待调度程序分配给一个 CPU 运行。运行状态调度程序选择该线程并分配一个CPU给线程。运行状态是指线程正在CPU是运 行等待状态(或阻塞状态)线程正等待某个事件发生。1.8线程的执行特性线程在执行时也有它的相关特性。线程的状态和同步用来反映线程的这些特 性。线程有 3 个基本状态,即执行、就绪和阻塞。但是线程没有进程中的挂起状 态。也就是说,线程是一个只与内存和寄存器相关的概念,它的内容不会因交换 而

13、进入外存。针对线程的 3 种基本状态,存在5 种基本操作来转换线程的状态。这5 种基 本操作是:(1)派生(spawn):线程在进程内派生出来,它即可由进程派生,也可由线程派 生。用户一般用系统调用(或相应的库函数)派生自己的线程。一个新派生出来的线程具有相应的数据结构指针和变量,这些指针和变量作为寄 存器上下文放在相应的寄存器和堆栈中。新派生线程被放入就绪队列。(2)阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻 塞。阻塞时,寄存器上下文、程序计数器以及堆栈指针都会得到保证。(3)激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队 列。(4)

14、调度(schedule):选择一个就绪线程进入执行状态。(5)结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等 将被释放。需要注意的一点是,在某些情况下,某个线程被阻塞也可能导致该线程所属 的进程被阻塞。线程的另一个执行特性是同步。由于同一进程中的所有线程共享该进程的所有资源和地址空间,任何线程对 资源的操作都会对其他相关线程带来影响。因此,系统必须为线程的的执行提供 同步控制机制,以防止因线程的执行而破坏其他的数据结构和给其他线程带来不 利的影响。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。因此, 这里不再进一步讲述有关线程的同步问题。2多线程技术线

15、程可以定义为进程中的异步代码路径。在支持多线程技术的操作系统中, 进程可以包含多个线程,这些线程可以按照与多用户操作系统同时支持多进程相 同的方式同时运行。从本质上讲,多线程可以在一个进程内同时运行。这就是为 什么线程有时候被当做是轻量级进程的原因。2.1 多线程的优点引入多线程设计技术的优点可分为下面四点:响应能力。多线程处理一个交互应用程序的时候,当线程的一部分被阻塞的时 候,该应用程序还能继续运行,因此对用户增强了响应能力。资源共享。线程共享它们所属进程的内存和资源。共享的好处就是一个应用程 序可以有多个拥有相同地址空间的不同线程在运行。节约。为进程的创建分配内存和资源是很昂贵的开销,因为线程共享它们所属 的进程的资源,所以在创建和上下文转换线程的时候就要节约很多。要去测量、 比较创建以及管理进程和线程之间的花费是很困难的,通常来说,创建和管理一 个进程的花费要比之下同意的操作大得多。多进程结构体系的利用。多进程结构体系因为可以让进程在不同的进程中并行 执行而可以充分发挥多线程的优点。在一个单线程结构体系中, CPU 在不同的 线程之间快速转换,让线程看起来好像是并行执行的,但实际上在一个时刻中只 有一个线程在执行。2.2 多线程模式2.2.1 单对多模式单对多模式描述了多个用户级线程对应一个内核线程。线程管理是在用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号