- 1、本文档共188页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章处理机管理
4、I/O中断的处理 I/O中断种类较多,处理方法各异 1)I/O操作正常结束后的处理 2)I/O操作发生故障后的处理 3)I/O操作发生异常后的处理 4)设备报到或设备结束的处理 3多重中断事件的处理 中断正在进行处理期间,这时 CPU又响应了新的中断事件,于 是暂时停止正在运行的中断处理 程序,转去执行新的中断处理程 序,这就叫多重中断(又称中断 嵌套)。 进程概念提出的必要性 对于单任务的操作系统而言,由于任何时候内存中只有一道程序(计算活动) ,程序与程序运行(计算)之间具有一对一的关系。 但是在多任务的操作系统环境下,内存中可以同时存在两道或两道以上的程序(计算活动)在并发运行,在这种情况下,程序概念不能描述程序的运行,有时一个程序可以对应多个运行,一个运行也可以调用多个程序。 程序和计算不再一一对应 程序运行环境不再封闭 资源竞争和共享导致制约关系 程序的运行是停停走走 三、线程的实现 (6) 上述活动均发生在用户空间,且在单个进程中,内核并不知道这些活动。内核按进程为单位调度,并赋予一个进程状态(就绪、运行、阻塞. . .)。 (2)线程调度和进程调度间的关系:(通过例子来说明) 假设进程B正在执行线程3,可能出现下列情况: ? 进程B的线程3发出一个阻塞B的系统调用(如I/O操作),这导致控制转移到内核,内核启动I/O操作,将进程B置为阻塞状态,并切换到另一个进程。按照由线程库所维护的数据结构,进程B的线程3仍处在运行态。线程3并不实际地在一个处理器上运行,而是可理解为在线程库的运行态中。这时,进程B中的其他线程尽管有的处于可运行的就绪态,但因进程B被阻塞而也都被阻塞。 三、线程的实现 (7) ? 一个时钟中断传送控制给内核,内核中止当前时间片用完的进程B,并把它放入就绪队列,切换到另一个就绪进程。此时,由于进程B中线程3正在运行,按由线程库维护的数据结构,进程B的线程3仍处于运行态,进程B却己处于就绪态。 ? 线程3执行到某处,它需要进程B的线程1的某些操作,于是让线程3变成阻塞态,而线程1从就绪态转为运行态,进程始终处于运行态。 (3) ULT优点 ? 线程切换不需要内核特权方式:因所有线程管理数据结构均在单个进程的用户空间中,管理线程切换的线程库也在用户地址空间中运行,因而不需要切换到内核方式来做线程管理。 三、线程的实现 (8) ? 线程库的线程调度算法与操作系统的低级调度算法是无关的。 ? ULT能运行在任何OS上,内核不需要做任何改变。 (4) ULT的缺点 ? 线程执行系统调用时,不仅该线程被阻塞,且进程内的所有线程会被阻塞。 ? 纯ULT中,多线程应用不能利用多重处理的优点。内核在一段时间里,分配一个进程仅占用一个CPU,进程中仅有一个线程能执行。 三、线程的实现 (9) 3.混合式线程 在混合式系统中,内核支持KLT多线程的建立、调度和管理,同时也提供线程库,允许应用程序建立、调度和管理ULT。应用程序的多个ULT映射成一些KLT,程序员可按应用需要和机器配置调整KLT数目,以达到较好效果。 在混合式系统中,一个应用中的多个线程能同时在多处理器上并行运行,且阻塞一个线程时并不需要封锁整个进程。 主要内容: 处理机调度的层次 高级调度 中级调度 低级调度 选择调度算法的原则 批处理作业的管理与调度 低级调度算法 2.5 处理器调度 五、进程的控制(6) 2.进程的阻塞和唤醒 通常,进程自己调用阻塞原语阻塞自己,所以,阻塞是自主行为,是一个同步事件。 (1)进程阻塞的步骤 ? 停止进程执行,保存现场信息到PCB 。 ? 修改PCB的有关内容,如进程状态由运行改为阻塞等。 ? 把修改状态后的PCB加入相应阻塞进程队列。 ? 转入进程调度程序调度其他进程运行。 五、进程的控制(7) (2)进程唤醒的步骤 ? 从相应阻塞进程队列中取出PCB。 ? 修改PCB有关信息,如进程状态改为就绪等。 ? 把修改后PCB加入有关就绪进程队列。 在UNIX/Linux中,与进程的阻塞与唤醒相关的原语主要有:sleep()、pause(暂停并等信号)、wait(等待子进程暂停或终止)和kill(发信号)。在Windows2000/XP中,处理器调度对象为线程,系统调用SuspendThread用来挂起线程,ResumeThread用来激活线程。 五、进程的控制(8) 3.进程的撤销 (1)进程撤销的主要原因 ? 进程正常运行结束。 ? 进程在用户态下执行了特权指令。 ? 进程执行了非法指令。 ? 进程运行时间超越了分给的最大时间段。 ? 进程等待时间超越了设定的
文档评论(0)