《操作系统》试题库综合题.docx
《《操作系统》试题库综合题.docx》由会员分享,可在线阅读,更多相关《《操作系统》试题库综合题.docx(27页珍藏版)》请在冰豆网上搜索。
《操作系统》试题库综合题
1、设有三个进程,它们的提交时间及运行时间如下表,若采用短进程优先调度策略,试给出进程串行运行时的调度次序及平均周转时间。
作业 提交时间 运行时间
J1 0 4
J2 2 8
J3 3 5
答:
进程 提交时间 开始时间 完成时间 周转时间
J1 0 0 4 4
J2 2 9 17 15
J3 3 4 9 6
平均周转时间=(4+15+6)/3=25/3=8.33
各进程的调度次序:
J1,J3,J2
2、设有三道作业,它们的提交时间及运行时间如下表,若采用短作业优先调度策略,试给出作业单道串行运行时的调度次序及平均周转时间。
(8分)
作 业
提交时间(单位:
基本时间单位)
运行时间(单位:
基本时间单位)
J1
J2
J3
0
2
3
7
4
5
作业 提交时间 开始时间 完成时间 周转时间
J1 0 0 7 7
J2 2 7 11 4
J3 3 11 16 13
平均周转时间=(7+9+13)/3=29/3=9.67 (4分)
各作业的调度次序:
(3分)
3、假定在单CPU条件下,有A,B,C,D四个作业依次到达(后面的作业依次比前一作业迟到一个时间单位)。
四个作业分别需要运行11,6,2和1个时间单位,如果系统采用FCFS的调度算法,请计算:
(1)各作业的周转时间
(2)系统此时的平均周转时间;
(3)各作业的带权周转时间;
(4)系统此时的平均带权周转时间;
解答:
作业作业到达时间运行时间完成时间周转时间带权周转时间
A01111111
B1617162.67
C2219178.5
D31201717
平均周转时间T=15.25
平均带权周转时间W=7.29
4、假设在单处理机上有五个(1,2,3,4,5)进程争夺运行,其运行时间分别为10、1、2、1、5(秒),其优先级分别为4、1、3、5、2;在某时刻这五个进程按照1,2,3,4,5的顺序同时到达。
试回答:
(1)给出这些进程分别使用轮转法(时间片为2秒)、非剥夺优先级调度法时的运行进度表。
(2)在上述各算法的调度下每个进程的周转时间和等待时间为多少?
解答:
(1)轮转法运行进度表:
P1P2P3p4P5P1P5P1P5P1
0235681012141519
非剥夺优先级调度法运行进度表:
P4P1P3P5P2
0111131819
(2)轮转法周转时间和等待时间:
作业
运行时间(小时)
周转时间(小时)
等待时间(小时)
1
10
19
0+6+2+1=9
2
1
3
2
3
2
5
3
4
1
6
5
5
5
15
6+2+2=10
非剥夺优先级调度法周转时间和等待时间:
作业
优先级
调度顺序
运行时间(小时)
周转时间(小时)
等待时间(小时)
1
4
2
10
11
1
2
1
5
1
19
18
3
3
3
2
13
11
4
5
1
1
1
0
5
2
4
5
18
13
5、画出进程的五种状态变化图,并说明状态变化原因。
答:
变化原因在图上说明。
6、某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看作一个进程,请回答下列问题:
(1)用PV(或wait和signal)操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
(3)根据所定义的信号量,把应执行的PV(或wait和signal)操作填入下述括号中,以保证进程能够正确地并发执行。
Buyi(I=1,2,……)
{
Do{
进入售票厅;
()
购票;
()
退出;
}while
(1)
}
解答:
(1)定义一信号量S,初始值为20。
(1分)
意义:
S>0 S的值表示可继续进入售票厅的人数 (1分)
S=0 表示售票厅中已有20名顾客(购票者) (1分)
S<0 |S|的值为等待进入售票厅的人数 (1分)
(2)S的最大值为20 (1分)
S的最小值为20-n (1分)
(3)上框为P(S) (1分)
下框为V(S) (1分)
注:
信号量的符号可不同(如写成t),但使用时应一致(即上述的s全应改成t)。
7、现为某临界资源设一把锁w,当w=1时,表示关锁,w=0时,表示锁已打开,试写出开锁和关锁的原语,并说明如何利用它们去控制对该临界资源的互斥访问?
(7分)
①开锁原语unlock(w)如下:
unlock(w):
w:
=0
关锁原语lock(w)如下:
Lock(w):
L:
ifw=1thengotoLe
else w:
=1; (4分)
②可设临界段cs放在两者之间来实现互斥,即
Lock(w);
cs;
unlock(w) (3分)
8、有两个用户进程A和B,在运行过程中都要使用系统中的一台打印机输出计算结果。
(1)试说明A、B两进程之间存在什么样的制约关系?
(2)为保证这两个进程能正确地打印出各自的结果,请用信号量和P、V操作写出各自的有关申请、使用打印机的代码。
要求给出信号量的含义和初值。
解答:
(1)A、B两进程之间存在互斥的制约关系。
因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用。
(2分)
(2)mutex:
用于互斥的信号量,初值为1。
(2分)
进程A进程B
......
P(mutex)P(mutex)
申请打印机申请打印机
使用打印机使用打印机
V(mutex)V(mutex)
......
9、进程process_A进行计算后通过进程process_B输出,这两个并发进程的程序如下:
intCount=0;
process_A()
{do
{Count=Count+10
}while
(1)
}
process_B()
{do
{print(Count)
Count=0;
}while
(1)
}
请回答:
(1)指出这两个并发进程的临界区。
(2)指出它们并发执行时可能出现的与时间有关的错误。
(3)用信号量机制进行管理,写出它们能正确并发执行的程序。
解答:
(1)临界区为process_A():
Count=Count+10,
process_B():
print(Count)Count=0;
(2)错误顺序(不是唯一的)
①print(Count)
②Count=Count+10
③Count=0;
(3)实现同步
信号量:
S1=1(含义不清),S2=0;
信号量:
mutex=1;
intCount=0;
process_A()
{do{wait(S1)
wait(mutex);
Count=Count+10
Signal(mutex)
Signal(S2)
}while
(1)
}
process_B()
{do{wait(S2)
wait(mutex);
print(Count)
Count=0;
Signal(mutex)
Signal(S1)
}while
(1)
}
10、有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:
(?
)
(1)为描述读者的动作,应编写几个程序,设置几个进程?
(2)试用PV操作描述读者进程之间的同步关系。
答:
读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者。
读者在阅览室读书时,由于没有引起资源的变动,不算动作变化。
算法的信号量有三个:
seats——表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers——表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1。
读者进入阅览室的动作描述getin:
while(TRUE){
P(seats);/*没有座位则离开*/
P(mutex)/*进入临界区*/
填写登记表;
进入阅览室读书;
V(mutex)/*离开临界区*/
V(readers)
}
读者离开阅览室的动作描述getout:
while(TRUE){
P(readers)/*阅览室是否有人读书*/
P(mutex)/*进入临界区*/
消掉登记;
离开阅览室;
V(mutex)/*离开临界区*/
V(seats)/*释放一个座位资源*/
}
11、假定进程A负责为用户作业分配打印机,进程B负责释放打印机,系统中设立一个打印机分配表如下,由各个进程共用。
打印机编号
分配标志
用户名
用户定义的设备名
0
0
1
0
2
0
试用P,V操作实现两进程对分配表的互斥操作。
解答:
设一个互斥信号量mutex,其初值为1。
P1(分配进程)和P2(释放进程)的临界区代码可按下述形式组成:
P(mutex);P(mutex);
分配打印机;释放打印机;
(读写分配表)(读写分配表)
V(mutex);V(mutex);
12、设系统中只有一台打印机,有二个用户的程序在执行过程中都要使用打印机输出计算结果。
设每个用户程序对应一个进程。
问:
这二个进程间有什么样的制约关系?
试用P,V操作写出这二个进程使用打印机的算法。
解答:
因为打印机是一种临界资源,所以这二个进程只能互斥地使用这台打印机。
即一个用户的计算结果打印完后,另一个用户再打印,因此是互斥关系。
设两个进程分别为A和B,设一个互斥信号量mutex,其初值为1,其算法如下:
A进程B进程
P(mutex);P(mutex);
使用打印机;使用打印机;
V(mutex);V(mutex);
13、设P1,P2两进程共用一个缓冲区F,P1向F写入信息,P2则从F中读出信息。
问这两个进程间是什么样的制约关系?
试用P,V操作写出这两个进程读写缓冲区的算法。
解答:
A,B两进程间是同步关系,即A进程向Q写满信息后,B进程才能从Q中取走信息。
为此,设立两个信号量:
empty:
表示缓冲区Q为空(0为不空,1为空),初值为1,
full:
表示缓冲区Q为满(0为不满,1为满),初值为0。
算法如下:
A进程:
B进程:
while(true){while(true){
P(empty);P(full);
向Q写入信息;从Q中读出信息;
V(full);V(empty);
}}
注:
若信号量初值不同,算法有些不同。
如若empty和full的初值均为0,则A进程的算法中P(empty)语句应放在V(full)之后,即解法不惟一。
14、设A1,A2为两个并发进程,它们共享一临界资源,其临界区代码分别为CS1,CS2。
问这两个进程间是什么样的制约关系?
试用P,V操作写出这两个进程共享临界资源的算法。
解答:
因为A,B两个进程是并发的,它们共享一个临界资源,所以两个进程间应互斥地进入临界区。
设立一个互斥信号量mutex,其初值为1。
具体算法如下:
A进程:
B进程:
P(mutex);P(mutex);
临界区代码Csa;临界区代码Csb;
V(mutex);V(mutex);
15、设有一台计算机,有一条I/O通道,接一台卡片输入机,卡片机把一叠卡片逐一输入到缓冲区Q1中,计算机从缓冲区Q1中取出数据再进行加工处理。
假设系统中设一个输入进程Pr和一个计算进程Pc来完成这个任务。
问这两个进程间有什么样的制约关系?
请用P,V操作写出这些进程的算法。
解答:
进程Pr受Pc进程的影响,B1放满信息后,Pr进程要等待,等Pc进程将其中全部信息取走,才能继续读入信息;同样地,Pc进程受Pr进程的约束,B1中信息放满后Pc进程才能从中取走信息。
因此,两者之间是同步制约关系。
设两个信号量:
B1full──缓冲区B1满,初值为0;
B1empty──缓冲区B1空,初值为1。
算法如下:
Pr进程:
Pc进程:
while(true){while(true){
P(B1empty);P(B1full);
卡片信息写入缓冲区;从B1中取出信息;
V(B1full);V(B1empty);
}}
注:
若B1fullt和B1empty的初值均为0,这时进程Pr有所不同,即,P(B1empty);应放在V(B1full)之后。
也即解法不惟一。
16、多个进程共享一个文件,其中只读文件的进程称为读者,只写文件的进程称为写者。
读者可以同时读,但写者只能独立写。
下面的同步算法是用P、V操作写出的,并且它对写者优先,即一旦有写者到达,后续的读者必须等待。
(8分)
问题:
1)、在上述算法的空白处填上正确的语句,使得该算法完整。
2)、该算法有可能会出现什么问题?
算法如下:
intrmutex=1,wmutex=1,count=0(正在读的读者的个数),s=1;
main()
{
parbegin
reader();
writer();
parend;
}
reader()
{
while
(1)
{
__
(1)__;
__
(2)__;
if(count==1)p(wmutex);
count++;
__(3)__;
__(4)__;
读文件;
p(rmutex);
count--;
if(count==0)__(5)__;
v(rmutex);
}
}
writer()
{
while
(1)
{p(s);
p(wmutex);
写文件;
v(wmutex);
v(s);
}
}
答:
1)问题1:
(1)___p(s)____
(2)___p(rmutex)___
(3)____v(rmutex)_____(4)____v(s)______(5)____v(wmutex)____
2)问题2:
如果连续出现新的写者进程,则可能导致读者进程饿死。
17、指出下列哲学家就餐问题的算法在什么情况下会导致死锁,并改进此算法,使它不会产生死锁。
算法描述:
五个哲学家在一张圆桌上进行思考和吃饭。
哲学家思考时,并不影响他人。
只有当他吃饭时,他才试图拿起左右两根筷子(一根一根的拿起)。
如果筷子已在他人手上,则需等待。
只有当他同时拿起左右两根筷子时,才可以吃饭。
如图7-1所示:
程序描述为:
(第i个哲学家,i=0,1,2,3,4)
Varchopstick:
array[0..4]ofsemaphore;/*各信号量初值均为1*/
Repeat
P(chopstick[i]);/*P操作,拿左筷子*/
P(chopstick[i+1mod5]);/*P操作,拿右筷子*/
Eat();/*吃饭*/
V(chopstick[i]);/*V操作,放下左筷子*/
V(chopstick[i+1mod5]);/*V操作,放下右筷子*/图7.1
Think();/*思考*/
Untilfalse;
答:
1)、可能导致死锁的情况:
每位哲学家都拿了左筷子,而在等待右筷子。
即每位哲学家进程都只执行了语句:
P(chopstick[i])。
2)、改进:
编号为双数的哲学家先拿左筷子,而单数的先拿右筷子。
程序为:
Repeat
if(imod2=0){P(chopstick[i]);P(chopstick[i+1mod5]);}
else{P(chopstick[i+1mod5]);P(chopstick[i]);}
Eat();V(chopstick[i]);V(chopstick[i+1mod5]);Think();
Untilfalse;
18、简述信号量的定义和作用。
P,V操作原语是如何定义的?
解答:
信号量一般是由两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值,它是与相应资源的使用情况有关的;另一个是指向PCB的指针。
当多个进程都等待同一信号量时,它们就排成一个队列,由信号量的指针指出该队列的头。
信号量通常可以简单反映出相应资源的使用情况,它与P,V操作原语一起使用可实现进程的同步与互斥。
P,V操作原语的定义:
P(S):
顺序执行下述两个动作:
1信号量S的值减1,即S=S-1;
2如果S≥0,则该进程继续执行,如果S<0,则把该进程的状态置为阻塞态,把相应的PCB连入该信号队列的末尾,并放弃处理机,进行等待。
(直到有其它进程在S上执行V操作,把它释放出来为止。
)
V(S):
顺序执行下述两个动作:
①信号量S的值加1,即S=S+1;
3如果S>0,则该进程继续执行,如果S≤0,则释放信号量队列上的第一个PCB(即信号量指针所指向的PCB)所对应的进程(把阻塞态改为就绪态),执行V操作态的进程继续执行。
19、某虚拟存储器的用户编程空间共32KB,每个页面大小为1K,内存为16KB。
假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号
物理块号
0
5
1
10
2
4
3
7
则逻辑地址0A5C(H)所对应的物理地址是什么?
解答:
逻辑地址0A5CH)所对应的二进制表示形式是:
0000101001011100,由于1K=210,下划线部分前的编码为000010,表示该逻辑地址对应的页号为2查页表,得到物理块号是4(十进制),即物理块地址为:
0001001000000000,拼接块内地址0000000001011100,得0001001001011100,即125C(H)。
20、某段表内容如下:
段号
段首地址
段长度
0
120K
40K
1
760K
30K
2
480K
20K
3
370K
20K
一逻辑地址为(2,154)的实际物理地址为多少?
答:
逻辑地址(2154)表示段号为2,即段首地址为480K,154为单元号,则实际物理地址为480K+154。
21、
(1)某页式存储系统页表如下,设每页1KB,请写出逻辑地址为8300时所对应的页号和页的地址,以及在内存中对应的物理地址。
(请详细写出运算过程)
系统页表:
页号
0
1
2
3
4
5
6
7
8
块号
3
5
6
10
8
7
1
2
4
(2)已知如下段表:
段号
0
1
2
3
4
基址
219
2300
90
1327
1952
长度
600
14
100
580
96
在分段存储管理下系统运行时,下列逻辑地址(第一位表示段号,第二位表示段内位移)的物理地址是什么?
(a):
(1,10)
(b):
(4,112)
答:
(1)页号P=INT[A/L]=[8300/1024]=8
页内地址d=[A]MODL=[8300]MOD1024=108
物理地址4×1024+108=4024
(2)(a):
地址(1,10)的段号为1,查表得基址为2300,段长为14,
物理地址为:
2300+10=2310。
(b):
地址(4,112)的段号为4,查表得基址为1952,段长为96,地址(4,112)的段内位移为112,大于段长96,发生段越界,产生中断。
22、在页式虚拟存储管理的计算机系统中,运行一个共有8页的作业,且作业在主存中分配到4块主存空间,作业执行时访问页的顺序为6,0,1,2,0,4,3,1,2,6,7,4,2,5,6,请问用FIFO和LRU替换算法时,它们的缺页中断率分别是多少。
(要求图示出内存页面变化情况)。
答:
(1)、采用FIFO算法:
访问串
6
0
1
2
0
4
3
1
2
6
7
4
2
5
6
驻留集
6
6
6
6
6
4
4
4
4
4
4
4
2
2
2
0
0
0
0
0
3
3
3
3
3
3
3
5
5
1
1
1
1
1
1
1
6
6
6
6
6
6
2
2
2
2
2
2
2
7
7
7
7
7
是否缺页
×
×
×
×
×
×
×
×
×
×
缺页中断率为:
10/15=66.67%
(2)、采用LRU算法:
访问串
6
0
1
2
0
4
3
1
2
6
7
4
2
5
6
驻留集
6
6
6
6
6
4
4
4
4
6
6
6
6
5
5
0
0
0
0
0
0
0
2
2
2
2
2
2
2
1
1
1
1
3
3
3
3
7
7
7
7
6
2
2
2
2
1
1
1
1
4
4
4
4
是否缺页
×
×
×
×
×
×
×
×
×
×
×
×
×
缺页中断率为:
13/15=86.67%
教材P156,6题(中南大学出版社)
解答:
访问串为:
1,2,3,4,2,1,5,6,2,1,3,7,6,3,2,1,2,3,6
(一)、页框数为3时:
(1)FIFO算法
1234215621376321236
1
1
1
2
2
3
4
1
5
6
2
1
3
3
7
6
6
2
1
2
2
3