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

江苏师范大学操作系统ppt第2章-4 线程.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第3章 进程管理 * 2.1 进程的基本概念 2.2 进程控制 2.3 进程的同步 2.4 经典进程的同步问题 2.5 进程通信 2.6 线程 进程模型的局限性 每个进程都有一个比较大的进程控制块(PCB),且它们需常驻内存。当进程数目比较多时,PCB集合占用的内存量是不可忽视的。因而内存开销比较大。 系统在创建一个进程时,必须为之分配其所必需的、除处理机以外的所有资源,如内存空间、I/O设备以及建立相应的PCB,新进程的PCB基本是父进程PCB的拷贝。 系统在撤消进程时,又必须回收进程占用的这些资源,然后再回收PCB。如果它还有子进程,则必须将子进程一起撤销,以免造成失控。 在进行进程切换时,要保留当前进程的CPU环境和设置新选中进程的CPU环境。 * 进程的切换 * 进程的两个基本属性回顾 资源分配单位;独立调度单位 存在的问题 进程作为一个资源拥有者,在创建、撤消、切换中,系统必须为之付出较大时空开销。所以系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。 解决问题的思路 把进程的两项功能--“独立分配资源”与“被调度分派执行”分离开来,即资源的分配单位不一定是独立运行单位。 进程作为系统资源分配和保护的独立单位,不需要频繁地切换; 线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念 * 线程的引入 引入进程的目的 是为了使多个程序并发执行,以改善资源利用率、提高系统吞吐量。 引入线程的目的 是为了减少进程并发执行时所付出的时空开销,使OS具有更好的并发性。 * 线程的属性 独立调度和分派的基本单位 在引入线程的OS中,线程是进程中的一个实体,是被独立调度和分派的基本单位系统。 轻型实体 线程自己基本不拥有系统资源,只拥有少量必不可少的资源:程序计数器、一组寄存器、栈。 可并发执行 一个线程可以创建和撤消另一个线程;同一进程中的多个线程之间可以并发执行;不同进程中的线程也能并发执行。 共享进程资源 它可与同属一个进程的其它线程共享进程所拥有的全部资源。 * 线程与进程的比较(1) 线程具有进程的许多特征,故又称轻型进程,传统进程称重型进程。在引入线程的OS中,每一进程都拥有多个线程,至少一个。 组成结构 * 线程与进程的比较(2) 拥有资源 无论是传统OS,还是引入线程的OS,进程都是拥有资源的独立单位,线程一般不拥有系统资源,但它可以访问隶属进程的资源。即一个进程的所有资源可供进程内的所有线程共享。 调度 在传统OS中,拥有资源、独立调度和分派的基本单位都是进程。在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位,不是调度的基本单位,所以每个进程在创建时,至少需要同时为该进程创建一个线程,也就是说进程中至少要有一个或一个以上线程,否则该进程无法被调度执行。 在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,将会引起进程切换。 * 线程与进程的比较(3) 并发性 在引入线程的系统中,进程之间可并发,同一进程内的各线程之间也能并发执行。因而系统具有更好的并发性。 系统开销 进程的创建和撤消的开销要远大于线程创建和撤消的开销,进程切换时,当前进程的CPU环境要保存,新进程的CPU环境要设置,线程切换时只须保存和设置少量寄存器,并不涉及存储管理方面的操作,可见,进程切换的开销远大于线程切换的开销。 同时,同一进程内的各线程由于它们拥有相同的地址空间,它们之间的同步和通信的实现也变得比较容易。 通信 进程间通信可通过多种方式进行,而线程间通信主要通过共享内存方式,直接读写进程的数据段来进行通信。 * 线程的类型 内核支持线程 线程的管理是利用系统调用,依赖于内核来实现的。即无论是用户进程中的线程,还是系统进程中的线程,它们的创建、撤消、切换都由内核实现。 以线程为单位进行调度。 例子:Windows 2000/XP/NT,OS/2 用户级线程 对于这种线程的创建、撤消、和切换,都不用系统调用来实现。可以通过线程库来实现。 内核并不知道用户级线程的存在。 以进程为单位进行调度。 * 线程的类型举例 有两个进程A、B,如果采用轮转法调度 若A有1个内核支持线程,B有100个内核支持线程,则进程B获得CPU的时间是进程A的100倍。 若A有1个用户级线程,B有100个用户级线程,则进程A

文档评论(0)

maxmin + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档