1.(考研真题)一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它们的计算和I/O操作顺序如下。
P1:计算60ms,I/O 80ms,计算20ms。
P2:计算120ms,I/O 40ms,计算40ms。
不考虑调度和切换时间,请计算完成两个作业需要的最少时间。
【参考答案】作业执行的过程如图所示。由于多道批处理系统中,P1与P2可以部分并行,那么,P1先到达系统,先占用CPU进行计算到60ms,然后执行I/O时间是80ms~140ms;而P1执行I/O的过程中,P2可获得CPU运行120ms,到180ms结束;当P1执行完它的I/O后,执行计算,此时CPU正被P2占用,P1等P2执行完后,获得CPU执行剩余的20ms完成退出系统;此时,P2执行I/O40ms到220ms;最后P2获得CPU运行剩余的40ms到260ms结束。由图可知,完成两个作业需要的最少时间为260ms。
2.设某计算机系统有一个CPU、一台输入设备、一台打印机。现有两个进程同时进入就绪态,且进程A先得到CPU运行,进程B后运行。进程A的运行轨迹为:计算50ms,打印信息100ms,再计算50ms,打印信息100ms,结束。进程B的运行轨迹为:计算50ms,输入数据80ms,再计算100ms,结束。画出它们的运行图,并说明:
(1)开始运行后,CPU有无空闲等待?若有,在哪段时间内等待?计算CPU的利用率;
(2)进程A运行时有无等待现象?若有,在何时发生等待现象?
(3)进程B运行时有无等待现象?若有,在何时发生等待现象?
【参考答案】进程运行情况如下图所示。
(1)CPU在100~150ms时间段内空闲,利用率为250/300=83.3%。
(2)进程A为无等待现象。
(3)进程B为有等待现象,0~50ms,180~200ms。
3.(考研真题)画出下面4条语句所对应的前驱图。
P1:a=x+2y; P2:b=a+6; P3:c=4a-9; P4:d=2b+5c;
3. 【参考答案】P2和P3都必须在a被赋值之后才能执行;但P2、P3可以并发执行,因此它们彼此互不依赖;P4必须在b和c被赋值后才能执行。因此前趋图如图所示。
4.(考研真题)有以下的进程需要调度执行(见表3-1-1),若用非抢占式短进程优先调度算法,问这5个进程的平均周转时间是多少?
表3-1-1 进程运行时间表
进程名 |
到达时间 |
运行时间 |
P1 |
0.0 |
9 |
P2 |
0.4 |
4 |
P3 |
1.0 |
1 |
P4 |
5.5 |
4 |
P5 |
7 |
2 |
4.【参考答案】本题分步解答如下。
(1)采用非抢占式短进程优先调度算法,各进程执行次序如图所示。
在0时刻,进程P1到达,P1获得处理机。由于不可抢占,所以P1会一直运行到9时刻结束;在9时刻,所有进程到达,根据短进程优先调度,P3获得处理机,然后是P5;P2和P4的预计运行时间一样,P2和P4按照先来先服务原则调度,P2优先获得处理机,最后P4运行。
(2)周转时间=完成时间-作业到达时间。因此P1的周转时间是9-0=9,P2的周转时间是16-0.4=15.6,P3的周转时间是10-1=9,P4的周转时间是20-5.5=14.5,P5的周转时间是12-7=5。平均周转时间为(9+15.6+9+14.5+5)/5=10.62。
5.(考研真题)5个进程P1、P2、P3、P4、P5几乎同时到达,预期运行时间分别为10、6、2、4、8个时间单位。各进程的优先级分别为3、5、2、1、4(数值越大,优先级越高)。请按下列调度算法计算任务的平均周转时间(进程切换开销可忽略不计)。
(1)先来先服务(按P1、P2、P3、P4、P5顺序)算法。
(2)时间片轮转算法,假定时间片大小为2个时间单位。
(3)优先权调度算法。
5. 【参考答案】根据算法思想,确定调度先后顺序。
(1)FCFS调度顺序如图所示。
(2)时间片轮转调度顺序如图所示。
(3)优先权调度算法的调度顺序如图所示。
于是,可以得到如表所示的结果。
算法
时间类型
P1
P2
P3
P4
P5
平均
运行时间
10
6
2
4
8
FCFS
周转时间
10
16
18
22
30
19.2
带权周转时间
1
2.67
9
5.5
3.75
4.384
RR
周转时间
30
22
6
16
28
20.4
带权周转时间
3
3.67
3
4
3.5
3.434
优先权
周转时间
24
6
26
30
14
20
带权周转时间
2.4
1
13
7.5
1.75
5.13
周转时间=结束时间-到达时间
带权周转时间=WT = (Service Time + Waiting Time) / (Service Time)
6.在一个单道批处理系统中,一组作业的提交时刻和运行时间如下表所示:
作业 |
提交时间 |
运行时间 |
1 |
8:00 |
1.0 |
2 |
8:50 |
0.50 |
3 |
9:00 |
0.20 |
4 |
9:10 |
0.10 |
试计算以下3种作业调度算法的平均周转时间T和平均带权周转时间W:
【参考答案】(1)采用先来先服务作业调度算法时,作业的运行情况如下表所示。
作业执行次序
提交时间
运行时间
开始时刻
完成时刻
周转时间
带权周转时间
1
8:00
1.0
8:00
9:00
1.0
1.0
2
8:50
0.05
9:00
9:50
1.0
2.0
3
9:00
0.20
9:50
9:70
0.7
3.5
4
9:10
0.10
9:70
9:80
0.7
7.0
平均周转时间为T=(1.0+1.0+0.7+0.7)/4=0.85。
平均带权周转时间为W=(1.0+2.0+3.5+7.0)/4=3.375。
(2)采用短作业优先调度算法时,作业的运行情况如下表所示。
作业执行次序
提交时间
运行时间
开始时刻
完成时刻
周转时间
带权周转时间
1
8:00
1.0
8:00
9:00
1.0
1.0
3
8:50
0.20
9:00
9:20
0.2
1.0
4
9:10
0.10
9:20
9:30
0.2
2.0
2
8:50
0.50
9:30
9:80
1.3
2.6
平均周转时间为T=(1.0+0.2+0.2+1.3)/4=0.675。
平均带权周转时间为W=(1.0+1.0+2.0+2.6)/4=1.65。
(3)采用响应比高者优先作业调度算法时,作业的运行情况如下表所示。
作业执行次序
提交时间
运行时间
开始时刻
完成时刻
周转时间
带权周转时间
1
8:00
1.0
8:00
9:00
1.0
1.0
3
9:00
0.20
9:00
9:20
0.2
1.0
2
8:50
0.50
9:20
9:70
1.2
2.4
4
9:10
0.10
9:70
9:80
0.7
7.0
平均周转时间为T=(1.0+0.2+1.2+0.7)/4=0.775。
平均带权周转时间为W=(1.0+1.0+2.4+7.0)/4=2.85。
7.单道批处理系统中有4个作业,其有关情况如下表所示。在采用响应比高者优先调度算法时分别计算其平均周转时间T和平均带权周转时间W。
作业 |
提交时间/h |
运行时间/h |
J1 |
8.0 |
2 |
J2 |
8.6 |
0.6 |
J3 |
8.8 |
0.2 |
J4 |
9.0 |
0.5 |
【参考答案】在8.0只有作业J1到达,系统先将作业J1投入运行。作业J1运行2个小时后完成。这时3个作业都已到达,要计算3个作业的响应比,然后使响应比最高的投入运行。3个作业的响应比为:
响应比=作业周转时间/作业处理时间
=(作业等待时间+作业处理时间)/作业处理时间
=1+(等待时间/处理时间)
作业J2的响应比=1+(10.0-86)/0.6=3.33
作业J3的响应比=1+(10.0-8.8)/0.2=7
作业J4的响应比=1+(10.0-9.0)/0.5=3
从计算的结果来看,作业J3的响应比最高,所以让作业J3先执行。
作业J3执行0.2小时后完成。此时作业J2和作业J4的响应比为:
作业J2的响应比=1+(10.2-8.6)/0.6=3.67
作业J4的响应比=1+(10.2-9.0)/0.5=3.4
从计算的结果来看,作业J2的响应比最高,所以再让作业J2执行。
可见,4个作业的执行次序为:作业J1,作业J3,作业J2,作业J4。
计算结果如下表:
作业号
到达时间
运行时间
开始时间
完成时间
周转时间
带权周转时间
1
8.0
2.0
8.0
10.0
2.0
1.0
2
8.6
0.6
10.2
10.8
2.2
3.67
3
8.8
0.2
10.0
10.2
1.4
7
4
9.0
0.5
10.8
11.3
2.3
4.6
平均周转时间为T=(2.0+2.2+1.4+2.3)/4=1.975
平均带权周转时间为W=(1.0+3.67+7+4.6)/4=3.98
8.(考研真题)假设系统中有下述解决死锁的办法:
(1)银行家算法;
(2)检测死锁,终止处于死锁状态的进程,释放该进程占有的资源;
(3)资源预分配。
简述哪种办法允许最大的并发性?请按“并发性”从大到小对上述3种办法排序。
【参考答案】题中给出的3种办法中,
检测死锁能允许更多的进程无等待地向前推进,并发性最大。因为该方法允许进程最大限度地申请并分配资源,直至出现死锁,再由系统解决。
银行家算法允许进程自由申请资源,只是在某个进程申请时检查系统是否处于安全状态,若是,则可立即分配,若不是,才拒绝。并发性大小次于检测死锁的方法。
最后是资源预分配,因为此方法要求进程在运行之前申请所需的全部资源才可以,这会使得许多进程因申请不到资源而无法开始,得到部分资源的进程因得不到全部资源也不释放已占用的资源,因此导致资源的浪费。
因此,3种方法的并发性按从大到小排序为:检测死锁、银行家算法、资源预分配。
9.(考研真题)假定系统中有5个进程P0、P1、P2、P3、P4和4种资源A、B、C、D,若出现如表所示资源分配情况。
进程 |
已分配到资源 |
尚需资源需求 |
当前可用资源数 |
P0 |
(1,1,1,0) |
(0,3,3,1) |
(0,3,2,2) |
P1 |
(0,2,3,1) |
(0,3,4,2) |
|
P2 |
(0,2,1,2) |
(1,0,3,4) |
|
P3 |
(0,3,1,0) |
(0,3,2,0) |
|
P4 |
(1,0,2,1) |
(0,4,2,3) |
问:(1)该状态是否安全?为什么?
(2)如果进程P0提出资源请求(0,0,0,1),系统能否将资源分配给它?为什么?
【参考答案】严格按照银行家算法及安全检查子算法进行。
(1)初始状态如表所示。
进程
Work
Need
Allocation
Work + Allocation
Finish
P3
0,3,2,2
0,3,2,0
0,3,1,0
0,6,3,2
True
P0
0,6,3,2
0,3,3,1
1,1,1,0
1,7,4,2
True
P1
1,7,4,2
0,3,4,2
0,2,3,1
1,9,7,3
True
P4
1,9,7,3
0,4,2,3
1,0,2,1
2,9,9,4
True
P2
2,9,9,4
1,0,3,4
0,2,1,2
2,11,10,6
True
存在一个安全序列P3,P0,P1,P4,P2,所以,该状态是安全的。
(2)Request0(0,0,0,1)
0(0,3,3,1) Request0(0,0,0,1)
故尝试将资源分配给P0,修改P0对应资源,P0对应的Need(0,3,3,0),Allocation(1,1,1,1),系统的Available为(0,3,2,1)。进程资源分配情况如表所示。
进程
Work
Need
Allocation
Work + Allocation
Finish
P3
0,3,2,1
0,3,2,0
0,3,1,0
0,6,3,1
True
P0
0,6,3,1
0,3,3,0
1,1,1,1
1,7,4,2
True
P1
1,7,4,2
0,3,4,2
0,2,3,1
1,9,7,3
True
P4
1,9,7,3
0,4,2,3
1,0,2,1
2,9,9,4
True
P2
2,9,9,4
1,0,3,4
0,2,1,2
2,11,10,6
True
存在一个安全序列P3、P0、P1、P4、P2,该状态是安全的,所以,可以实施分配。
10.(考研真题)假设系统有5类独占资源:Rl、R2、R3、R4、R5。各类资源分别有2、2、2、1、1个。系统有5个进程:P1、P2、P3、P4、P5。其中P1已占有2个R1,且申请1个R2和1个R4;P2已占有1个R2,且申请1个Rl;P3已占有1个R2,且申请1个R2和1个R3;P4已占有1个R4和1个R5,且申请1个R3;P5已占有1个R3,且申请1个R5。
(1)试画出该时刻的资源分配图。
(2)什么是死锁定理?如何判断(1)中给出的资源分配图有无死锁?给出判断过程和结果。
10. 【参考答案】(1)1该时刻的资源分配图如图所示。
(2)系统状态S为死锁状态的充分条件:当且仅当S状态的资源分配图是不可完全简化的。该充分条件被称为死锁定理。
对于本题的情况,当前状态下系统可用资源数为(0,0,1,0,0),可以满足P4的申请需求,可将P4申请的资源进行分配,P4执行完毕后,系统的状态如图所示。
P4释放资源后,系统可用资源数变为(0,0,1,1,1),可以满足P5的申请需求,可将P5申请的资源进行分配,P5执行完毕后,系统的状态如图所示。
P5释放资源后,系统可用资源数变为(0,0,2,1,1),已不能满足任何进程的申请需求,系统当前资源分配图已经不能再简化,故系统处于死锁状态。
11.某系统有同类资源m个,供n个进程共享。如果每个进程最多申请x个资源(其中1≤x≤m)。
请证明:当n(x-1)+1≤m时,系统不会发生死锁。
【参考答案】由于每个进程最多申请使用x个资源,在最坏的情况下,每个进程都得到了(x-1)个资源,并且现在均需申请最后一个资源。这时系统剩余资源数为m-n(x-1)。如果系统剩余资源数大于1,即系统还有1个资源可以使用,就可以使这几个进程中的一个进程获得所需的全部资源。该进程可以运行结束,释放出所占有的资源供其它进程使用,从而每一个进程都可以执行结束。
因而,当m-n(x-1)≥1时,即n(x-1)+1≤m时,系统不会发生死锁。
12.(考研真题)对下面用类Pascal语言描述的读者写者问题,请填入正确的wait()、signal()操作。
var rmutex,wmutex:semaphore:=1,1;
readcouncnteger=0;
begin
parbegin
reader:
begin
repeat
wait(rmutex);
if readcount:=0 then A
readcount:=readcount+1;
B
perform read operation;
C
readcount:=readcount-1;
if readcount:=0 then D
signal(rmutex);
until false;
end
writer:
begin
repeat
E
Perform write operation;
signal(wmutex);
until false;
end
parend
供选择的答案:[1]wai(mutex);[2]wait(wmutex);[3]signal(rmatex) [4]signal(wmutex)
【参考答案】
A:wait(wmutex); //禁止写者写。
B:signal(rmutex); //释放信号,让其他读者进来。
C:wait(rmutex); //保证读者互斥使用readcount变量。
D:signal(wmutex); //释放写互斥信号,可以让其他写者或读者进入。
E:wait(wmutex); //禁止其他写者进来。
13.某系统采用动态分区分配方式管理内存,内存空间为640KB,高端40KB用来存放OS。在分配内存时,系统优先使用空闲区低端的空间。对下列的请求序列:作业1申请130KB、作业2申请60KB、作业3申请100KB、作业2释放60KB、作业4申请200KB、作业3释放100KB、作业1释放130KB、作业5申请140KB、作业6申请60KB、作业7申请50KB、作业6释放60KB,请分别画图表示出使用首次适应算法和最佳适应算法进行内存分配和回收后,内存的实际使用情况。
【参考答案】首次适应算法将空闲区按起始地址递增的次序排序,而最佳适应算法则将空闲区按分区大小递增的次序排序。在分配时,它们都是从开始顺序查找,直至找到一个足够大的空闲分区为止,然后按作业大小从该分区中划出一块内存空间分配给请求者,余下的分区(如果有的话)仍按上述原则留在空闲分区链中;在释放时,则需分别按地址递增或大小递增的次序将空闲分区插入空闲分区表(链),并合并空闲分区。表给出了使用这两种算法进行上述内存分配和回收的具体过程。
使用首次适应算法和最佳适应算法进行上述内存的分配和回收后,内存的实际使用情况分别如图(a)和(b)所示。
(a)首次适应算法 (b)最佳适应算法
14.设作业A(30K)、B(7OK)和C(5OK)依次请求内存分配,内存现有F1(100K)、F2(50K)两个空闲区,如图所示。分别采用最佳适应算法和最差适应算法,画出内存分配情况示意图。
F1(100K) |
F2(50K) |
【参考答案】该题中按BF算法,作业A(3OK)分配到F2空闲区后,F2变为2OK;作业B(7OK)分配到F1空闲区后,F1变为3OK;作业C(5OK)分配失败。
该题中若按WF算法,作业A(3OK)分配到F1后,F1变为70K;作业B(7OK)也分配到F1空闲区;作业C(5OK)分配到F2空闲区。
因此,BF算法内存分配情况如图(a)所示。WF算法内存分配情况如图(b)所示。
(a) (b)
15.在一个分页存储管理系统中,页面大小为4KB,系统中的地址占24位,给定页面变换表如下表所示。
(1)计算逻辑地址(页号为3,页内地址为100)的物理地址。
(2)说明地址变换过程。
页号P |
块号B |
0 |
3 |
1 |
4 |
2 |
9 |
3 |
7 |
15.【参考答案】(1)逻辑地址(页号3,页内地址100)的物理地址为:
7×4KB+100=28KB+100=28772
(2)在请求分页存储管理中,系统是通过页表进行地址转换。先将逻辑地址分解成页号P和页内地址W两部分,然后查页表,可得页号P对应的物理块号为B,从而变换出对应的物理地址为:物理地址=块号×页面大小+页内地址
16.在某请求分页存储管理系统中,主存容量为1MB,被划分为256块,每块为4KB,现有一作业,其页表如下表所示。
试问:
(1)若给定一逻辑地址为9016(十进制),求其物理地址。
(2)若给定一逻辑地址为12300(十进制),其物理地址如何得到?
【参考答案】(1)逻辑地址(页号2,页内地址824)查页表可知,该页被装入主存的第32块中,所以,其物理地址为:128K+824。
若给定逻辑地址为12300,其页号为3,查页表,该页的状态位为1可知未装入主存,因而产生缺页中断。中断后由中断处理程序将该页装入主存,然后进行地址变换。
17.设作业的虚拟地址为24位,其中高8位为段号,低16位为段内相对地址。试问:
(1)一个作业最多可以有多少段?
(3)每段的最大长度为多少字节?
(3)某段式存储管理采用如下段表,试计算[0,430]、[1,50]、[2,30]、[3,70]的主存地址。其中方括号内的前一元素为段号,后一元素为段内地址。当无法进行地址变换时,应说明产生何种中断。
段号 |
段长 |
主存起始地址 |
是否在主存 |
0 |
600 |
2100 |
是 |
1 |
40 |
2800 |
是 |
2 |
100 |
否 |
|
3 |
80 |
4000 |
是 |
【参考答案】(1)一个作业最多可以有28=256个段。
(2)每段的最大长度为216=64KB=65536字节。
(3)逻辑地址(0,430)的主存地址为2100+430=2530;
逻辑地址(1,50)无法进行地址变换,因为产生了越界中断;
逻辑地址(2,30)无法进行地址变换,因为产生了缺段中断;
逻辑地址(3,70)的主存地址为4000+70=4070。
18.某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 |
物理块号 |
0 |
3 |
1 |
7 |
2 |
11 |
3 |
8 |
则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。
【参考答案】逻辑地址0A5C(H)所对应的二进制表示形式是: 0000 1010 0101 1100
所对应的页号是: 2 (十进制)
查页表,得到物理块号是: 11 (十进制)
拼接后,得到物理地址: 2E5C(H)
19.对于如下的页面访问序列:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5。当内存块数量分别为3和4时,试问:使用FIFO、LRU置换算法产生的缺页中断是多少?(所有内存开始时都是空的,凡第一次用到的页面都产生一次缺页中断)
【参考答案】(1)FIFO 淘汰算法:内存块为3 时,缺页中断(或称缺页次数、页面故障)为9;内存块为4 时,缺页中断为10。(Bleady现象)
(2)LRU淘汰算法:内存块为3时,缺页中断为10;内存块为4 时,缺页中断为8。
20.考虑一个请求分页系统,测得如下的时间利用率:
CPU:20%;分页磁盘:97.7%;其它外设:5%
下列措施中,哪个(些)可改善CPU 的利用率?说明理由:
【参考答案】因为分页磁盘占95%,主要是考虑页表的存储问题,挂起某个进程,可扩大进程的存储空间;更换更大容量的分页磁盘,可增加页表的分页速度,从而改善CPU 的利用率。所以应选择(2)和(4)。
21.对于一个利用快表且页表存于内存的分页系统,假定CPU 一次访问时间为1us,访问快表的时间可以忽略不记。如果85%的地址映射可直接通过快表完成,那么进程完成一次内存读写的平均有效时间是多少?
0.85*1μs+0.15*2μs=1.15μs
22.某计算机有32位虚地址空间,页大小为1024字节。每个页表项占4个字节。因为每个页表都必须包含在一页中,所以使用多级页表,问共需要几级?
【参考答案】因为一张页表只能包含1024/4=256个页表项。而页的大小为210,所以共需要32-10=22位来表示页号。而每一级页表只能处理22位中的8位,所以共需要3级。有两级页表有28个页表项,另一级只有26个页表项。
23.在某分页系统中,有224字节的物理内存,256页的逻辑地址空间并且页的大小为210字节,问逻辑地址为多少位?
【参考答案】256页的逻辑地址空间,256=28,需要8位二进制表示页号,且页的大小为210字节,页内偏移量需要10位表示,因此逻辑地址为8+10=18位。
24.在某段页式系统中,虚地址空间包含了8个段,段长为229字节。硬件把每个段分成大小为256字节的页。问虚地址中有多少位可以用于指定:
(a)段号;(b)页号;(c)页内偏移量;(d)整个虚地址。
【参考答案】(a)因为段个数为8=23,所以段号需要3位;(b)每页大小256字节为28,段长为229,因此每段最多可分为229/28=221个页,因此页号需21位;(c)页大小为256字节为28,页内偏移量需8位;(d)整个虚地址为段号和最大段长之和,即为3+29=32位。
25.已知某程序访问以下页面:0,1,4,2,0,2,6,5,1,2,3,2,1,2,6,2,1,3,6,2。如果程序有3个页框可用且使用下列替换算法,求出现缺页的次数。
(1)FIFO替换算法(2)LRU替换算法
【参考答案】(1)FIFO 算法总是淘汰最先进入内存页面,即选择在内存中驻留时间最长的页予以淘汰。算法如图所示:
缺页率13/20=65%
(2)LRU 算法是最近最久未使用的页面予以淘汰。算法如图所示:
缺页率14/20=70%
26.某系统使用请求分页存储管理,如果页在内存中,满足一个内存请求需要200ns。如果页不在内存,如有空闲的页框或者没有修改的换出的页,则请求需要7ms。如果替换出的页已经被修改,则需要15ms,如果缺页率是5%,并且60%的时间用于修改要换出的页,问有效访问时间是多长?假设系统只运行一个进程且页交换时CPU空闲。
【参考答案】200ns内得到满足的访问占用全部访问的95%。5%的访问造成缺页,其中40%的需要7ms。因此,5%×40%=2%的访问需要7ms。类似地,5%×60%=3%的访问需要15ms。把所有的时间转换为us,结果如下:
有效访问时间=0.95×0.2+0.02×7000+0.03×15000。
有效访问时间=590.19us。