- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]操作系统课件 第2章 进程
3 、进程(Process) 3.5处理机调度器(dispatcher) 把处理机从一个进程切换到另一个进程; 防止某进程独占处理机; 3.7五状态进程模型 3.9挂起进程模型 这个问题的出现是由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存。这样做的目的是: 提高处理机效率:就绪进程表为空时,要提交新进程,以提高处理机效率; 为运行进程提供足够内存:资源紧张时,暂停某些进程,如:CPU繁忙(或实时任务执行),内存紧张 用于调试:在调试时,挂起被调试进程(从而对其地址空间进行读写) 3.9.1 状态 就绪状态(Ready):进程在内存且可立即进入运行状态; 阻塞状态(Blocked):进程在内存并等待某事件的出现; 阻塞挂起状态(Blocked, suspend):进程在外存并等待某事件的出现; 就绪挂起状态(Ready, suspend):进程在外存,但只要进入内存,即可运行; 3.9.2转换 挂起(Suspend):把一个进程从内存转到外存;可能有以下几种情况: 阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程; 就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程; 运行到就绪挂起:对抢占式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把正运行的进程转到就绪挂起状态; 激活(Activate):把一个进程从外存转到内存;可能有以下几种情况: 就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换; 阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程变成阻塞状态; 事件出现(Event Occurs):进程等待的事件出现;如:操作完成、申请成功等;可能的情况有: 阻塞到就绪:针对内存进程的事件出现; 阻塞挂起到就绪挂起:针对外存进程的事件出现; 收容(Admit):收容(提交)一个新进程,进入就绪状态或就绪挂起状态。 3.10.2进程控制块的内容(数据结构很复杂) 进程标识符: 内部进程标识符(process ID),唯一,通常是一个整数; 进程名(外部标识符),通常基于可执行文件名(不唯一); 用户标识符(user ID);进程组关系(process group) 进程控制信息: 当前状态; 优先级(priority); 代码执行入口地址; 程序的外存地址; 运行统计信息(执行时间、页面调度); 进程间同步和通信;阻塞原因 进程调度信息:进程状态、进程优先级、资源信息等 处理机状态:寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针) 3.10.3 PCB的组织方式 链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表 各状态的进程形成不同的链表:就绪链表、阻塞链表 索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表 各状态的进行形成不同的索引表:就绪索引表、阻塞索引表 4、进程控制 4.1 进程控制的功能:完成进程状态的转换。 4.3 进程退出 也称为“终止”或主程序返回:调用exit()可终止进程。 释放资源: 释放内外存空间 关闭所有打开文件 释放共享内存段和各种锁定lock 例: NT线程的挂起和激活 例子NT_thread.cpp 例子 NT_thread.cpp 5 线程(THREAD) 5.1 线程的引入 进程:资源分配单位(存储器、文件)和CPU调度(分派)单位-未引入线程时。又称为“任务(task)“ 线程:作为CPU调度单位,而引入线程后进程只作为其他资源分配单位。 只拥有必不可少的资源,如:线程状态、寄存器上下文和栈 同样具有就绪、阻塞和执行三种基本状态 线程的优点:减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发程度。 线程的创建时间比进程短; 线程的终止时间比进程短; 同进程内的线程切换时间比进程短; 由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信; 5.3 OS对线程的实现方式 内核维护进程和线程的上下文信息; 线程切换由内核完成; 一个线程发起系统调用而阻塞,不会影响其他线程的运行。 时间片分配给线程,所以多线程的进程获得更多CPU时间。 2)用户线程(user-level thread) 用户线程的维护由应用进程完成; 内核不了解用户线程的存在; 用户线程切换不需要内核特权; 用户线程调度算法可针对应用优化; 用户级线程在使用系统调用时(如文件读写),需要“捆绑(bound)”在一个LWP上,用
文档评论(0)