1.高级调度与低级调度的主要任务是什么?为什么要引入中级调度?
答:高级调度的主要任务:用于决定把外存上处于后背队列中的哪些作业调入内存,并为它们创建进程,分配必要的资源,再将新创建的进程插入就绪队列上,准备执行。低级调度的主要任务:用于决定就绪队列中的哪个进程获得处理机,然后再由分派程序执行将处理机分配给该进程的具体操作。
引入中级调度的主要目的是为了提高系统资源的利用率和系统吞吐量。
2.处理机调度算法的共同目标是什么?批处理系统的调度目标又是什么?
答:处理机调度算法的共同目标:资源利用率、公平性、平衡性、策略强制执行
批处理系统的调度目标:平均周转时间短、系统吞吐量高、处理机利用率高
3.何谓作业、作业步和作业流?
答:作业包括通常的程序和数据,还配有作业说明书。系统依照该说明书对程序的运行进行操纵。批处置系统中是以作业为大体单位从外存调入内存。
作业步是指每一个作业运行期间都必需通过假设干个相对独立彼此关联的顺序加工的步骤。作业流是指假设干个作业进入系统后依次寄存在外存上形成的输入作业流;在操作系统的操纵下,逐个作业进程处置,于是形成了处置作业流。
4.在什么情况下需要使用作业控制块JCB,其中包含了哪些内容?
答:在批处理系统中,为了调度和管理作业,每个作业都会被配置一个作业控制块(JCB),它是作业存在的标志。
JCB包含的内容:作业标识、用户标识、用户名称、用户账户、作业类型、作业状态、调度信息、资源需求和资源使用情况等。
5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?
答:接纳多少个作业取决于多道程序度,即允许多少个作业同时在内存中运行。
接纳哪些作业取决于所采用的调度算法。最简单的是先来先服务调度算法,较常用的是短作业优先调度算法和基于作业优先级的调度算法。
6.为什么要引入高响应比优先调度算法?它有何优点?
答:高响应比优先调度算法是一种对CPU中央控制器响应比的分配的一种算法。HRRN是介于FCFS与SJF之间的折中算法,既考虑了作业等待时间有考虑了作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。
优点:
既考虑了作业等待时间,有考虑了作业运行时间的调度算法,因此照顾了短作业,又不致使长作业等待时间过长,从而改善了处理机的调度的性能;
HRRN算法是一种非抢占式的调度算法,不会出现饥饿现象。
7.试说明低级调度的主要功能。
答:保存处理机的现场信息、按某种算法选取进程、把处理器分配给进程
8.在抢占调度方式中,抢占的原则是什么?
答:优先权原则、短进程优先原则、时间片原则
9.在选择调度方式和调度算法时,应遵循的准则是什么?
答:(1)面向用户的准则:周转时间短,响应时间快,截止时间的保证,优先权准则。
(2)面向系统的准则:系统吞吐量高,处理机利用率好,各类资源的平衡利用。
10.在批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法?
答:批处理系统:先来先服务(FCFS)、短作业优先(SPF)、优先权(HPF)、高响应比优先(HRRF)和多级反馈队列调度算法;
分时系统:时间片轮转法;
实时系统:最早截止时间优先(EDF)和最低松弛度优先(LLF)算法。
11.何谓静态和动态优先级?确定静态优先级的依据是什么?
答:静态优先级是在创建进程时,且在进程的整个运行期间保持不变。
动态优先级是指在创建进程时赋予的优先权,可以随进程或随其等待时间的增加而改变,以便获得更好的调度性能。
静态优先级的依据是在创建进程时确定的,通常是由操作系统或用户指定的。
12.试比较FCFS和SJF两种进程调度算法。
答:
调度算法 优点 缺点 FCFS 算法实现简单 平均等待时间通常很长,车队效应 SJF 给定一组进程,它给出了最小的等待时间,从而减少了平均等待时间 长时间的进程可能永远不会被系统处理,可能会在队列中等待很长时间,导致进程饥饿
13.在时间片轮转法中,应如何确定时间片的大小?
答:时间片应略大于一次典型的交互需要的时间。一般考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。
14.通过一个例子来说明通常的优先级调度算法为什么不能适用于实时系统?
答:
在实时系统中,高优先级任务需要频繁地发生,而低优先级任务可能会长时间处于空闲状态。在这种情况下,如果使用通常的优先级调度算法,那么高优先级任务将会不断地抢占CPU资源,而低优先级任务则很难得到执行的机会,这就会导致实时系统的性能严重下降
因此,为了满足实时系统的调度实时性要求,需要采用基于任务的开始截止时间和任务紧急/松弛程度的任务优先级调度算法45。
15.为什么说多级反馈队列调度算法能较好地满足各方面用户的需要?
答:多级反馈队列调度算法能满足不同条件下用户的需要,无论是对于长或短的作业,还是终端型作业。
16.为什么说传统的几种调度算法都不能算是公平调度算法?
答:传统的几种调度算法,如FCFS、SJF、PSA、RR等,都只能满足部分调度需求,而不能满足所有调度需求。例如,FCFS不利于短作业和IO型作业,SJF不利于长作业和紧迫型作业,PSA优先级算法不利于优先权低的作业,RR时间片轮转算法不利于紧迫作业。因此,这些算法都不能算是公平调度算法。
17.保证调度算法是如何做到调度的公平性的?
答:保证调度算法是另外一种类型的调度算法,它向用户所做出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。
一种比较容易实现的性能保证是处理机分配的公平性。如果在系统中有n个相同类型的进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。
18.公平分享调度算法又是如何做到调度的公平性的?
答:它引入了强制调度序列,它合理的处理每个用户中的进程数目不同所造成的时间片分配不均的问题。
19.为什么在实时系统中,要求系统(尤其是CPU)具有较强的处理能力?
答:在实时系统中,常有着多个实时任务。如果处理机的处理能力不够强,则有可能因处理机忙不过来而使某些实时任务得不到及时处理,导致发生难以预料的后果。因此,为了保证实时系统的调度实时性要求,需要具有较强的处理能力。
20.按调度方式可将实时调度算法分为哪几种?
答:非抢占调度算法、抢占调度算法。
21.什么是最早截止时间优先调度算法?举例说明之。
答:最早截止时间优先调度算法(Earliest Deadline First,EDF)是一种根据任务的截止时间来确定任务的优先级的算法,任务截止时间越早,其优先级愈高。该算法可以用于抢占式调度方式中,也可以用于非抢占式调度方式中。
举个例子,假设有三个任务,它们的截止时间分别为10、20和30,它们的执行时间分别为5、10和15。那么,根据EDF算法,任务1的优先级最高,任务2的优先级次之,任务3的优先级最低。因此,系统应该先执行任务1,然后执行任务2,最后执行任务3。
22.什么是最低松弛度优先调度算法?举例说明之。
答:最低松弛度优先调度算法(Least Laxity First,LLF)是一种根据任务的截止时间来确定任务的优先级的算法。任务的松弛度是指任务必须完成的时间减去任务本身的运行时间和当前时间。松弛度越低,任务的优先级就越高。该算法可以用于抢占式调度方式中,也可以用于非抢占式调度方式中。
举个例子,假设有两个周期性实时任务A和B,任务A要求每20ms执行一次,执行时间为10ms;任务B要求每50ms执行一次,执行时间为25ms。那么,根据LLF算法,任务A的松弛度最低,优先级最高,任务B的松弛度次之,优先级次之。因此,系统应该先执行任务A,然后执行任务B。
23.何谓“优先级倒置”现象,可采取什么方法来解决?
答:“优先级倒置”现象是指高优先级进程被低优先级进程阻塞或延迟的现象。
解决方法:
规定进程在进入临界区后,其所占有的处理机不允许被抢占;
优先级继承:当一个低优先级进程占用了一个高优先级进程所需要的资源时,操作系统将把该低优先级进程的优先级提高到与高优先级进程相同的优先级,直到该低优先级进程释放了该资源为止;
优先级反转:当一个低优先级进程占用了一个高优先级进程所需要的资源时,操作系统将把该高优先级进程的优先级降低到与低优先级进程相同的优先级,直到该低优先级进程释放了该资源为止。
24.试分别说明可重用资源和可消耗资源的性质。
答:
- 可重用资源是指一次仅供-一个进程安全使用且不因使用而耗尽的资源。进程得到资源单元并使用后,会释放这些单元供其他进程再次使用。可重用资源的例子包括处理器、I/O 通道、内存和外存、设备,以及诸如文件、数据库和信号量之类的数据结构。
- 可消耗资源是指可被创建(生产)和销毁(消耗)的资源。某种类型可消耗资源的数量通常没有限制,无阻塞生产进程可以创建任意数量的这类资源。消费进程得到-一个资源时,该资源就不再存在。可消耗资源的例子有中断、信号、消息和I/O缓冲区中的信息。
25.试举例说明竞争不可抢占资源所引起的死锁。
答:竞争不可抢占资源是指在进程占有使用某些资源时,其他进程不能抢占这些资源。在两个或多个进程都在运行中,且在进行下一步操作时,操作所需要的不可抢占资源都被对象正在占有的情况下,进程无法进行下一步操作,也不能自己终止,从而进入了无限等待的状态,此为死锁。
例如,假设有两个进程P1和P2,它们需要使用打印机R1和磁带机R2。进程P1占用了打印机R1,进程P2占用了磁带机R2。此时,进程P1需要使用磁带机R2,而进程P2需要使用打印机R1。由于打印机R1和磁带机R2都是不可抢占资源,因此进程P1和P2都无法进行下一步操作,也不能自己终止,从而进入了无限等待的状态,此为死锁。
26.为了破坏“请求和保持”条件而提出了两种协议,试比较这两种协议。
答:第一种协议:所有进程在开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源。优点就是简单、易行且安全;缺点就是资源被严重浪费、进程经常发生饥饿现象。这样的方法虽然可以把死锁杜绝,但是明显太过于死板,浪费资源。当浪费的资源到达一定的值的时候,危害不会比死锁带来的小。明显的治标不治本。
第二种协议:允许一个进程只获得运行初期所需的资源后,便开始运行。进程运行过程中再逐步释放已分配给自己的、且已用毕的全部资源,然后再请求新的所需资源。
第二种:比上一种要好一些,应该这种方法不仅尽可能的减少死锁发生的概率,而且避免了一定程度的资源浪费,假如死锁发生的结果还可以接受的情况下,使用第二种方式相比第一种却要好的多。
27.何谓死锁?产生死锁的原因和必要条件是什么?
答:死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,它们都将无法继续执行下去。
产生死锁的原因:系统资源不足、进程运行推进的顺序不合适、资源分配不当等。
必要条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件。
28.在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法使资源利用率最高?
答:在解决死锁问题的几个方法中,最易于实现的方法是破坏“请求和保持”条件。这种方法只需要在进程请求资源时,不保持已经占有的资源即可。而使资源利用率最高的方法是破坏“不剥夺”条件,即当一个进程占有了一些资源时,如果另一个进程请求这些资源,就强制释放这些资源,分配给请求进程,从而避免死锁的发生。
29.请详细说明可通过哪些途径预防死锁。
答:破坏互斥条件、破坏不剥夺条件、破坏请求和保持条件、破坏循环等待条件。
30.在银行家算法的例子中,如果P发出的请求向量由Request(0,2,0)改为Request(0.1, 0),问系统可否将资源分配给它?
答:能,理由如下:
1、Request0(0,1,0)< Need(7,4,3);
2、Request0(0,1,0)< Available(2,3,0);
3、系统暂时可以先假定可为P0分配资源,并修改有关数据,如下图:
4、再利用安全性算法检查此时系统是否安全,如下图:
由所进行的安全性检查得知,可以查找一个安全序列{P1,P3,P0,P2,P4}。因此,系统是安全的,可以立即将P0所申请的资源分配给它。
31.在银行家算法中,若出现下述资源分配情况,试问:
Process | Allocation | Need | Available |
0032 | 0012 | 1622 | |
1000 | 1750 | ||
1354 | 2356 | ||
0332 | 0652 | ||
0014 | 0656 |
(1)该状态是否安全?
(2)若进程P提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
答:(1)安全,因为存在安全序列{
,
,
,
,
},如表3-6所示。
表 3-6 资源分配情况 资源情况 Work Allocation Need Work+Allocation Finish 进程 A B C D A B C D A B C D A B C D A B C D 1 6 2 2 0 0 3 2 0 0 1 2 1 6 5 4 True 1 6 5 4 0 0 3 2 0 6 5 2 1 6 8 6 True 1 6 8 6 0 0 1 4 0 6 5 6 1 6 9 10 True 1 6 9 10 1 0 0 0 1 7 5 0 2 6 9 10 True 2 6 9 10 1 3 5 4 2 3 5 6 3 9 14 14 True (2)分析如下:
Request(1,2,2,2)<=Need2(2,3,5,6)
Request(1,2,2,2)<=改成 Available2(1,6,2,2)
系统先假定可为
分配资源,并修改Available2,Available2和Need2向量,由此形成的资源变化情况如表3-7所示。
表 3-7 资源变化情况 Process Allocation Need Available 0 0 3 2 0 0 1 2 0 4 0 0 1 0 0 0 1 7 5 0 2 5 7 6 2 3 5 6 0 3 3 2 0 6 5 2 0 0 1 4 1 6 5 6
再利用安全性算法检查此时系统是否安全。此时(0,4,0,0)不能满足任何进程的资源请求,因此,在进程
提出请求Request(1,2,2,2)后,系统不能将资源分配给它。