网站大量收购独家精品文档,联系QQ:2885784924

3.5 线程.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统与实验 第3章第7讲 3.5 线程 3.5.1 问题的提出 进程的引入使操作系统得以完成对并发执行的多道程序动态特征的描述和资源共享的管理,因而进程既是调度的基本单位又是资源分配的基本单位。进程所具有的这两个特点构成了程序并发执行的基础,但同时又导致进程切换过程中由于进程映像过大而带来的时空开销。因此,如果系统中创建的进程过多,或进程切换的频率过高,则会使系统效率下降,限制了并发度的进一步提高。 进程切换所带来的庞大开销是因为进程与资源分配有关,操作系统如何降低进程切换所需要的时空开销呢? 那么,操作系统是否也可以将调度的基本单位改成一种只用于调度执行而不涉及资源分配的单位?这个单位就是“线程”。 ——减小进程上下文切换开销及更好地支持SMP(对称多处理) 3.5.2 线程及其特征 线程是进程内相对独立的、可独立调度和指派的执行单元。 线程不是资源分配的基本单位; 线程从属于某个进程 将进程称为重型进程,线程称为轻型进程。 3.5.2 线程及其特征 1.线程具有以下特征: 线程是进程中的一个相对独立的可执行单元。 线程是操作系统中的基本调度单位,在线程中包含调度所需要的基本信息。 在具备线程机制的操作系统中,一个进程中至少包含一个线程,以线程作为调度单位。 线程自己并不拥有资源,它与同一进程中的其它线程共享该进程所拥有的资源。由于线程之间涉及资源共享,所以需要同步机制来实现进程内多线程之间的通信。 与进程类似,线程还可以创建其它线程,线程也有生命周期,也有状态的变化。 2.线程与进程的主要区别与联系 调度与资源分配 在引入线程的操作系统中,线程是调度和指派的基本单位,而进程是资源的拥有单位。在同一进程中,线程的切换不会引起进程的切换;而在不同的进程中进行线程的切换,比如从一个进程中的线程切换到另一个进程中的线程时,将会引起进程的切换。 线程不拥有资源,但可以访问它所在的进程的资源,从而获得系统资源。 并发性 引入线程的操作系统具有更好的并发性。 系统开销 进程切换时有很大的时空开销,而线程切换时只需要保存和设置少量的寄存器内容,时空开销很小。另外,由于同一进程内的多个线程共享进程的同一地址空间,因此,多个线程之间的同步与通信也非常容易实现,甚至不需要操作系统内核的干预。 在一个进程内使用多线程的优点主要在于创建线程的工作量要比创建进程的工作量小,不涉及资源分配,不同线程之间的切换比进程之间的切换要快。 3.4.3 线程的状态与线程控制块 与进程类似,线程也是一个动态的概念,也有一个从创建到消亡的过程,它也具有以下几个基本状态: 就绪态:具备执行条件,等待调度。 运行态:正占有CPU 处于运行中。 阻塞态:等待某个事件发生。 结束态:线程结束执行,释放其寄存器上下文和堆栈的内容。 线程使用线程控制块TCB(Thread Control Block)来描述。线程由与其相关的堆栈、寄存器和线程控制块TCB组成。寄存器可以用来存储线程内的局部变量,但是不能存储其它线程的局部变量。 线程的控制原语包括线程创建、线程终止、线程阻塞等等。 3.5.4 线程的分类 1.用户级线程 用户级线程ULT(User-Level Thread)由用户程序创建,并由用户程序对其进行调度和管理。操作系统内核并不知道有用户级线程的存在,因而用户级线程与内核无关。我们也称之为“纯ULT方法”。MS-DOS、Unix属于这种方法。 其优点在于: 应用程序中的线程转换开销比内核级的开销要小得多。 线程的调度算法与操作系统的调度算法无关。 用户级线程方法可以适用于任何操作系统,因为它与内核无关。 其缺点在于: 当进程中某线程执行一个系统调用而被阻塞时,会导致本进程的其它线程也阻塞。 在纯ULT方式下,多线程不便利用多处理器,因为每次只有一个进程的一个线程在一个CPU上运行。 3.5.4 线程的分类 2.内核级线程 内核级线程KLT(Kernel-Level Thread)中,所有线程的创建、调度、管理都由操作系统内核负责。一个用户进程可以按多线程方式编写程序,当它被提交给多线程操作系统运行时,内核为它创建一个进程和一个线程,线程在运行中还可以创建新的线程。我们称之为“纯KLT方法”。Windows NT属于此类。 其优点在于: 内核可以调度一个进程中的多个线程,使其同时在多个处理器上并发运行,从而提高运行的速度和效率。 当进程

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档