第三章习题
一、问答题
1. 高级调度与低级调度的主要任务是什么? 为什么要引入中级调度?
(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。
(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。
(3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。
2. 在作业调度中应如何确定接纳多少个作业和接纳哪些作业?
作业调度每次要接纳多少个作业进入内存,取决于多道程序度,即允许多少个作业同时在内存中运行。多道程序度的确定应根据系统的规模和运行速度等情况做适当的折中。而应接纳哪些作业从外存入内存,这取决于所采用的作业调度算法。不同的算法满足用户对OS不同的需求。
3. 试比较FCFS和SJF两种进程调度算法。
相同点:两种调度算法都可用于作业调度与进程调度。
不同点:FCFS调度算法每次都从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业进程,不利于短作业进程。
SJF算法每次调度都从后备队列中选择一个或若干个运行时间最短的作业,调入内存中运行。该算法有利于短作业进程,不利于长作业进程。
4. 在时间片轮转法中,应如何确定时间片的大小?
时间片应略大于一次典型的交互需要时间。一般考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统处理能力。
5. 何谓死锁? 产生死锁的原因和必要条件是什么?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因是竞争资源和进程间推进顺序非法。
其必要条件是:互斥条件、请求和保持条件、不剥夺条件、环路等待条件。
6. 解决死锁的方法有哪些?
解决死锁的四种方法即预防、避免、检测和解除死锁中,预防死锁最容易实现;避免死锁使资源的利用率最高。
7. 实时系统中采用的调度算法可以有如下几种:
1)非抢占优先权调度算法。
2)立即抢占的优先权调度算法。
3)时间片轮转调度算法。
4)基于时钟中断抢占的优先权调度算法、
按实时要求的严格程度由低到高的顺序是什么,请写出分析过程。
顺序是:3-1-4-2
3. 时间片轮转法一般用于进程调度,每次调度,把CPU分配队首进程,并令其执 行一个时间片。当执行的时间片用完时,由一个记时器发出一个时钟中断请求,该进程被停止,并被送往就绪队列末尾,依次循环。
1. 系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成。
4. 实时任务到达后,如果该任务的优先级别高于当前任务的优先级并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务。
2. 在这种调度策略中,要求操作系统具有快速响应外部时间中断的能力.一旦出现外部中断,只要当前任务未处于临界区便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务,实时进程调度,实时进程抢占当前。
二、综合题
1. 设有4个作业J1,J2,J3,J4.它们的到达时间和要求服务时间如下表所示。若这4个作业在—台处理机上按单道方式运行,采用响应比高者优先调度算法。
1)试写出各作业的执行顺序;
2)求各作业的周转时间及平均周转时间。
3)求各作业的带权周转时间及平均带权周转时间。
作业 | 到达时间 | 服务时间 |
J1 | 8:00 | 2小时 |
J2 | 8:30 | 40分钟 |
J3 | 9:00 | 25分钟 |
J4 | 9:30 | 30分钟 |
1).在8点J1先到,先运行J1,J1在10点完成.
J2等待90分钟,J2的响应比为:(90+40)/40=3.25
J3等待60分钟,J3的响应比为:(60+25)/25=3.4
J4等待30分钟,J4的响应比为:(30+25)/25=2.2
故J3先执行,J3在10:25完成,
J2等待115分钟,J2的响应比为:(115+40)/40=3.875
J4等待55分钟,J4的响应比为:(55+30)/30=2.83
故执行J2,J2在11:05完成,最后执行J4,J4在11:35完成
所以执行顺序是J1-J3-J2-J4
2).J1的周转时间是:120分钟
J2的周转时间是:155分钟
J3的周转时间是:85分钟
J4的周转时间是:125分钟
J1,J2,J3,J4的平均周转时间是:121.25分钟
3).J1带权周转时间是:120/120=1
J2带权周转时间是:155/40=3.875
J3带权周转时间是:85/25=3.4
J4带权周转时间是:125/30=4.17
J1,J2,J3,J4的平均带权周转时间是:3.11125
2.有一个具有两道作业的批处理系统,作业调度采用短作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法,作业优先数也是进程优先数,优先数越小则优先级越高。详细情况见下表所示:
作业名称 | 到达时间 | 估计运行时间/min | 优先数 |
A | 10:00 | 40 | 5 |
B | 10:20 | 30 | 3 |
C | 10:30 | 50 | 4 |
D | 10:50 | 20 | 6 |
问:1、列出所有作业进入内存的时刻及结束时刻。
2、计算作业的平均周转时间。
1)所有作业进入内存的时间及结束的时间见下表。
作业 | 到达时间 | 运行时间(min) | 优先数 | 进入内存时间 | 结束时间 | 周转时间 (min) |
A | 10:00 | 40 | 5 | 10:00 | 11:10 | 70 |
B | 10:20 | 30 | 3 | 10:20 | 10:50 | 30 |
C | 10:30 | 50 | 4 | 11:10 | 12:00 | 90 |
D | 10:50 | 20 | 6 | 12:00 | 12:20 | 90 |
2)平均周转时间为:(70+30+90+90)/4=70(min)。
3. 在银行家算法中,若出现下述资源分配情况,试问:
(1) 该状态是否安全?
进行安全性检查:
进程/资源情况 | Work | Need | Allocation | Work+Allocation | Finish
|
A B C D | A B C D | A B C D | A B C D | ||
P0 | 1,6,2,2 | 0,0,1,2 | 0,0,3,2 | 1,6,5,4 | True |
P3 | 1,6,5,4 | 0,6,5,2 | 0,3,3,2 | 1,9,8,6 | True |
P4 | 1,9,8,6 | 0,6,5,6 | 0,0,1,4 | 1,9,9,10 | True |
P1 | 1,9,9,10 | 1,7,5,0 | 1,0,0,0 | 2,9,9,10 | True |
P2 | 2,9,9,10 | 2,3,5,6 | 1,3,5,4 | 3,12,14,14 | True |
该状态安全。
(2)若进程P2提出请求Request(1, 2, 2, 2)后,系统能否将资源分配给它?
先进行如下检查:
A:Request2(1,2,2,2)<=Need2(2,3,5,6)
B:Request2(1,2,2,2)<=Available(1,6,2,2)
C:系统假定可以为P2分配资源,修改有关数据,如下:
Process | Allocation | Need | Available |
A B C D | A B C D | A B C D | |
P0 | 0,0,3,2 | 0,0,1,2 | 0,4,0,0 |
P1 | 1,0,0,0 | 1,7,5,0 |
|
P2 | 2,5,7,6 | 1,1,3,4 |
|
P3 | 0,3,3,2 | 0,6,5,2 |
|
P4 | 0,0,1,4 | 0,6,5,6 |
|
进行安全性检查:
可以直接看出资源Available(0,4,0,0)已经不满足任何一个进程需要,所以进程进入不安全状态,因此,系统不能将资源分配给P2