进程的进一步深入.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程的进一步深入

进程的进一步深入 PCB的组织方式 链表:同一状态的进程其PCB成一链表,多个状态对应多 个不同的链表 各状态的进程形成不同的链表:就绪链表、阻塞链表 索引表:同一状态的进程归入一个index表(由index指 向PCB),多个状态对应多个不同的index表 各状态的进行形成不同的索引表:就绪索引表、阻塞索引表 进程上下文 用户级上下文:进程的用户地址空间(包括用户栈各层次),包括用户正文段、用户数据段和用户栈; 寄存器级上下文:程序寄存器、处理机状态寄存器、栈指针、通用寄存器的值; 系统级上下文: 静态部分(PCB和资源表格) 动态部分:核心栈(核心过程的栈结构,不同进程在调用相同核心过程时有不同核心栈) 核心态和用户态 用户态时不可直接访问受保护的OS代码; 核心态时执行OS代码,可以访问全部进程空间。 五状态进程模型(多队列结构) 挂起进程模型 这个问题的出现是由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存。这样做的目的是: 提高处理机效率:就绪进程表为空时,要提交新进程,以提高处理机效率; 为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张 用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写) 单挂起进程模型 双挂起进程模型 含挂起后更新的进程状态 就绪状态(Ready):进程在内存且可立即进入运行状态; 阻塞状态(Blocked):进程在内存并等待某事件的出现; 阻塞挂起状态(Blocked suspend): 进程在外存并等待某事件的出现; 就绪挂起状态(Ready suspend): 进程在外存,但只要进入内存,即可运行; 新的状态转换 挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况: 阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程; 就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程; 运行到就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态; 激活(Activate):把一个进程从外存转到内存;可能有以下几种情况: 就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换; 阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程; 原语的概念 线程(THREAD) 引入线程的目的是简化线程间的通信,以小的开销来提高进程内的并发程度。 1 线程的引入 2 进程和线程的比较 1 线程的引入 进程:资源分配单位(存储器、文件)和CPU调度(分派)单位。又称为任务(task) 线程:作为CPU调度单位,而进程只作为其他资源分配单位。 只拥有必不可少的资源,如:线程状态、寄存器上下文和栈 同样具有就绪、阻塞和执行三种基本状态 线程的优点:减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发程度。 线程的创建时间比进程短; 线程的终止时间比进程短; 同进程内的线程切换时间比进程短; 由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信; OS对线程的实现方式 内核线程(kernel-level thread) 依赖于OS核心,由内核的内部需求进行创建和撤销,用来执行一个指定的函数。Windows NT和OS/2支持内核线程; 内核维护进程和线程的上下文信息; 线程切换由内核完成; 一个线程发起系统调用而阻塞,不会影响其他线程的运行。 时间片分配给线程,所以多线程的进程获得更多CPU时间。 用户线程(user-level thread) 不依赖于OS核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。如:数据库系统informix,图形处理Aldus PageMaker。调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多线程则每个线程就慢。 用户线程的维护由应用进程完成; 内核不了解用户线程的存在; 用户线程切换不需要内核特权; 用户线程调度算法可针对应用优化; 2 进程和线程的比较 地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享--某进程内的线程在其他进程不可见 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信--需要

文档评论(0)

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

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

1亿VIP精品文档

相关文档