1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章线程

2) 内核控制线程(组合方式)   这种线程又称为轻型进程LWP(Light Weight Process)。每一个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据结构(如TCB),其中包括线程标识符、优先级、状态,另外还有栈和局部存储区等。LWP也可以共享进程所拥有的资源。 LWP可通过系统调用来获得内核提供的服务,这样,当一个用户级线程运行时,只须将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。这种线程实现方式就是组合方式。 用户级线程在使用系统调用时(如文件读写),需要“捆绑(bound)”在一个LWP上。 永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外 临时捆绑:从LWP池中临时分配一个未被占用的LWP 在使用系统调用时,如果所有LWP已被其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP--例如6个用户级线程,而LWP池中有4个LWP 如果LWP执行系统调用时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞。 2.8.3 线程的创建和终止 (1)创建线程(派生) 在多线程OS环境下,当创建一个新的进程时,也创建一个新的线程,该线程被人们称为“初始化线程”。它可根据需要再去创建本进程中的若干个线程。 在创建新线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程创建函数执行完后,将返回一个线程标识符供以后使用。 (2)终止线程 可以正常终止自己,也可能某个线程执行错误,由其它线程强行终止。终止线程操作主要负责释放线程占有的寄存器和栈 终止线程的方式有两种:一种是在线程完成了自己的工作后自愿退出;另一种是线程在运行中出现错误或由于某种原因而被其它线程强行终止。 有的线程(主要是系统线程),一旦被建立起来,便一直运行下去而不被终止。 (3)阻塞线程 当线程等待每个事件无法运行时,停止其运行。 (4)解锁线程(Unblock) 唤醒 当阻塞线程的事件发生时,将被阻塞的线程状态置为就绪态,将其挂到就绪队列。 进程仍然具有与执行相关的状态。例如,所谓进程处于“执行”状态,实际上是指该进程中的某线程正在执行。对进程施加的与进程状态有关的操作,也对其线程起作用。例如,把某个进程挂起时,该进程中的所有线程也都被挂起,激活也是同样 mxh mxh mxh mxh mxh mxh mxh 2.7 线程的基本概念 2.7.1 线程的引入 1. 进程的两个基本属性 构成进程并发执行的基础: 独立的资源拥有者: 给每个进程分配一虚拟地址空间, 保存进程映像 控制一些资源(内存,文件,I/O设备) 独立调度和分派的基本单位: 进程是一个独立调度的执行轨迹 2. 程序并发执行所需付出的时空开销 创建进程、撤消进程、进程切换 系统完成上述操作时既要重新调度, 又要反复的分配资源, 时空开销太大, 限制了并发度的进一步提高。 3. 线程——作为调度和分派的基本单位 从不同的角度出发可以有多种理解: ★线程是进程内的一个可执行单元。 ★进程内的一个线程是进程内的一个可调度实体。 ★线程是进程中相对独立的一个控制流序列。 ★线程是进程内可以并发执行的一个基本单位。 综上所述可定义为: 线程是进程内的一个处理机的基本调度单位, 或进程内的一个执行体; 一个进程可含有多个线程, 它们可以并发执行 , 共享进程的全部资源。 2.7.2 线程与进程的比较 (1)调度的基本单位 同一进程的多线程间调度时,不引起进程的切换 不同进程的线程间调度,需要进程切换 (2)并发性 一个进程的多个线程之间可并发执行 (3)拥有资源 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 (4)独立性 同一进程中的不同线程之间的独立性比不同进程间的独立性低的多。 (5)系统开销 线程:系统仅为其保存少量寄存器内容 进程:整个当前CPU环境,资源清单等 (6)支持多处理机系统 传统进程,即单线程进程 一个进程的多个线程可分配到多个处理机上 引入线程的好处: 占用较少的系统资源, 线程的创建、撤销和切换花费的时空间开销都小。 同一进程内的线程共享内存和文件, 它们之间相互通信无须调用内核, 效率高。 提高应用程序的性能, 如: web页面的多幅图像被同时传送。 使多处理机效率更高, 多个线程可以同时在不同的处理器上运行, 如:矩阵乘法 多线程进程中, 当一个线程因I/O

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档