第三章习题
一、问答题
1. 高级调度与低级调度的主要任务是什么? 为什么要引入中级调度?
高级调度主要任务是:根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说高级调度的调度对象是作业。
低级调度主要任务是:决定就绪队列中的哪个进程应获得处理机,然后再有分派程序执行把处理及分配给该进程的具体操作。
中级调度的任务:是那些暂时不能运行的进程不再占用宝贵的内存资源,而将他们调至外存上去等待,把此时的进程状态成为就绪驻外存状态或挂起状态。当这些进程又重新具备运行条件且内容又稍有空闲时,由中级调度来决定把外存上的那些具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂载就绪队列上等待进程调度。
引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
作业调度每次接纳进入内存的作业数,取决于多道程序度。
应该接纳那些作业,取决与采用的调度算法。最简单的是先来先服务调度算法,较常用的是短作业优先调度算法和基于作业优先级的调度算法。
不同点: FSFS调度算法每次都从后被队列中选择一个或多个最先进入该队列的作业,将他们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业/进程,不利于短作业/进程。
SJF算法每次都从后被队列中选择一个或多个运行时间最短的作业,调入内存中运行。该算法有利于短作业、短进程,不利于长作业、长进程。
死锁是指多个进程在运行过程中因为争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都将无法再向前推进。
原因:因为资源竞争和进程间推进顺序非法。
必要条件:互斥条件、请求和保持条件、不剥夺条件、环路等待条件。
1.抢占资源:从一个或多个进程中抢占足够数量的资源分配给死锁进程,以解除死锁状态。
2. 终止或撤销进程:终止或撤销系统中的一个或多个死锁进程,直至打破死锁状态。
a、终止所有的死锁进程。这种方式简单粗暴,但是代价很大,很有可能会导致一些已经运行了很久的进程前功尽弃。
b、逐个终止进程,直至死锁状态解除。该方法的代价也很大,因为每终止一个进程就需要使用死锁检测来检测系统当前是否处于死锁状态。另外,每次终止进程的时候终止那个进程呢?每次都应该采用最优策略来选择一个“代价最小”的进程来解除死锁状态。一般根据如下几个方面来决定终止哪个进程:
进程的优先级
进程已运行时间以及运行完成还需要的时间
进程已占用系统资源
进程运行完成还需要的资源
终止进程数目
进程是交互还是批处理
7. 实时系统中采用的调度算法可以有如下几种:
1)非抢占优先权调度算法。
2)立即抢占的优先权调度算法。
3)时间片轮转调度算法。
4)基于时钟中断抢占的优先权调度算法。
按实时要求的严格程度由低到高的顺序是什么,请写出分析过程。
答: 1-3-4-2
3. 时间片轮转法一般用于进程调度,每次调度,把CPU分配队首进程,并令其执行一个时间片。 当执行的时间片用完时,由一个记时器发出一个时钟中断请求,该进程被停止,并被送往就绪队列末尾,依次循环。
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分钟 |
解:
在8:00时刻,系统中只有一个作业J1,故系统将它投入运行。
在J1完成(10:00)时,J2、J3、J4的响应比分别为:
J2 |
J3 |
J4 |
( 90 + 40 ) / 40 = 3.24 |
( 60 + 25) / 25 = 3.4 |
( 30 + 30 ) / 30 = 2 |
所以执行J3
J3执行完成(10.25)时,J2、J4的相应比为:
J2 |
J4 |
( 115 + 40 )/ 40 = 3.875 |
( 55 + 30 )/ 30 = 3.2 |
所以执行J2
J2执行完后(11.05), 执行J4,J4执行完(11.35)
所以,执行顺序: J1 - J3 - J2 - J4
J1 |
J2 |
J3 |
J4 |
平均 |
120min |
155min |
85min |
125min |
121.25min |
3)
J1 |
J2 |
J3 |
J4 |
平均 |
1 |
3.875 |
3.4 |
4.17 |
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、列出所有作业进入内存的时刻及结束时刻。
10.00 A 进入
10.40 A 结束 C进入
10.50 D 进入 C剩余40
11.10 D 结束 C进入
11.50 C结束 B进入
12.20 B 结束
作业名称 |
作业进入内存的时刻 |
结束时刻 |
A |
10.00 |
10.40 |
B |
11.50 |
12.20 |
C |
10.40、11.10 |
11.50 |
D |
10:50 |
11.10 |
A |
B |
C |
D |
平均周转 |
40min |
60min |
80min |
20min |
50min |
3. 在银行家算法中,若出现下述资源分配情况,试问:
(1) 该状态是否安全?
//第一轮
P0 可分配 执行后剩余:1 6 5 4
P1 不可分配
P2 不可分配
P3 可分配 执行后剩余:1 9 8 6
P4 可分配 执行后剩余:1 9 9 10
//第二轮
P1 可分配 执行后剩余:2 9 9 10
P2 可分配 执行后剩余:3 12 12 12
答: 安全。因为存在安全序列{P0,P3,P4,P1,P2}
P2发出请求向量Request(1, 2, 2, 2) 后,系统将按银行家算法进行检查:
Request(1, 2, 2, 2) < need(2, 3, 5, 6)
Request(1, 2, 2, 2) < avalible(1, 6, 2, 2)
进行试分配后,avalible剩余:(0, 4, 0, 0)
可用资源available(0,4,0,0)已不能满足任何进程需求。所以系统不能将资源分配给他。