1、第三章 处理机调度与死锁1.高级调度与低级调度的主要任务是什么? 为什么要引入中级调度? (1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得 CPU。(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些
2、进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。2. 处理机调度算法的共同目标是什么 ? 批处理系统的调度目标又是什么 ?共同目标:资源利用率,公平性,平衡性,策略强制执行。 批处理系统的调度目标:平均周转时间短,系统吞吐量高,处理机利用 率高。6.为什么要引入高响应比优先调度算法?它有何优点? 在批处理系统中,FCFS 算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而 SJF 算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短
3、作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。7.试说明低级调度的主要功能。 保存处理机的现场信息、按某种算法选取进程、把处理机分配给进程。12.试比较 FCFS 和 SJF 两种进程调度算法。 相同点:两种调度算法都可用于作业调度与进程调度 不同点:FCFS 调度算法每次都从后备队列中选择一个或多个最先进入该 队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业/进程,不利于短作业/进程。 SJF 算法每次调度都从后备队列中选择一个或若干个运行时间最短的作 业,调入内存中运行。该算法有利于短作业/进程,不利于长作业/ 进程。 13.在时间片轮转
4、法中,应如何确定时间片的大小? 时间片应略大于一次典型的交互需要的时间。一般因考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。20.按调度方式可将实时调度算法分为哪几种? 非抢占式和抢占式。非抢占式又分为非抢占式轮转调度算法和非抢占式优先调度算法,抢占式又分为基于时钟中断的抢占式优先级调度算法和立即抢占的优先级调度算法。27.何谓死锁?产生死锁的原因和必要条件是什么? 死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件是:互斥条件、请求和保持
5、条件、不剥夺条件、环路等待条件。29.请详细说明可通过哪些途径预防死锁。 (1)摈弃“请求和保持”条件,就是如果系统有足够资源,便一次性把进程需要的所有资源分配给它; (2)摈弃“不剥夺”条件,就是已经拥有资源的进程,当它提出新资源请求而不能立即满足时,必须释放它已保持的所有资源,待以后需要时再重新申请; (3)摈弃“环路等待”条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。21.在银行家算法的例子中,如果 P0 发出的请求向量由 Request0(0,2,0)改为Request0(0,1,0),问系统可否将资源分配给它? Allocation Need
6、AvailableProcessA B C A B C A B CP0 0, 2, 0 7, 3, 3 2, 2, 0P1 3, 0, 2 0, 2, 0P2 3, 0, 2 6, 0, 0P3 2, 1, 1 0, 1, 1P4 0, 0, 2 4, 3, 1Work Need Allocation Work+Allocation进程/资源情况A B C A B C A B C A B CFinishP1 2, 2, 0 0, 2, 0 3, 0, 2 5, 2, 2 TureP3 5, 2, 2 0, 1, 1 2, 1, 1 7, 3, 3 TureP0 7, 3, 3 7, 3, 3
7、0, 2, 0 7, 5, 3 TureP2 7, 5, 3 6, 0, 0 3, 0, 2 10, 5, 5 TureP4 10, 5, 5 4, 3, 1 0, 0, 2 10, 5, 7 Ture可以.首先,Request0(0,1,0) Available(2,3,3),不能分配 (3)Request4(2,0,1) Available(2,3,3) 假设分配,则 最大需求(M) 已分配(A) 还需要P1 5 5 9 2 1 2 3 4 7P2 5 3 6 4 0 2 1 3 4P3 4 0 11 4 0 5 0 0 6P4 4 2 5 4 0 5 0 2 0P5 4 2 4 3 1
8、4 1 1 0进行安全性检查进程 work need allocation Work+alloc finishP4 0 3 2 0 2 0 2 0 4 4 3 7 trueP5 4 3 7 1 1 0 3 1 4 7 4 11 trueP3 7 4 11 0 0 6 4 0 5 11 4 16 trueP2 11 4 16 1 3 4 4 0 2 15 4 18 trueP1 15 4 18 3 4 7 2 1 2 17 5 20 true由上表可知存在安全序列 P4,P5,P3,P2,P1。因此系统是安全的 可以将 P4 所申请的资源进行分配。(4)在(3)的基础上,若进程 P1 请求资源(
9、 0,2,0) ,按银行家算法进行检查:P1 请求资源(0,2,0) P1 资源需求量(3,4,7)P1 请求资源(0,2,0) 剩余资源数(0,3,2)试分配并修改相应的数据结构,由此形成的资源分配情况如表所示。P1 请求资源后的资源分配表Allocation Need Available进程A B C A B C A B CP1 2 3 2 3 2 7 0 1 2P2 4 0 2 1 3 4P3 4 0 5 0 0 6P4 4 0 5 0 2 0P5 3 1 4 1 1 0再利用安全性算法检查系统是否安全,可用资源 Available(0,1,2)已不能满足任何进程的资源需求,故系统进入不安全状态,此时系统不能将资源分配给 P1。