计算机学科专业基础综合计算机操作系统9.docx
- 文档编号:26745281
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:25
- 大小:28.24KB
计算机学科专业基础综合计算机操作系统9.docx
《计算机学科专业基础综合计算机操作系统9.docx》由会员分享,可在线阅读,更多相关《计算机学科专业基础综合计算机操作系统9.docx(25页珍藏版)》请在冰豆网上搜索。
计算机学科专业基础综合计算机操作系统9
计算机学科专业基础综合计算机操作系统-9
(总分:
99.97,做题时间:
90分钟)
一、综合应用题(总题数:
25,分数:
100.00)
1.某分时系统中的进程可能出现如图所示的状态变化,回答下列问题:
(1)根据图示,该系统采用的是什么进程调度策略?
(2)把图示中的每一个状态变化的原因填在下表相应的栏中。
变化
原因
1
2
3
4
5
6
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
题目中没有文字的框应该是就绪队列。
(1)系统采用的是时间片轮转法(或者剥夺调度)策略。
(2)1是调度程序选择了一个进程可以占用CPU;2是时间片到时;3、4是发出I/O请求;5、6是I/O完成。
假设一个计算机系统具有如下性能特征:
处理一次中断,平均需要1ms;一次进程调度,平均需要2ms;将CPU分配给选中的进程,平均需要1ms。
再假设其定时器芯片每秒产生100次中断。
请同答:
(分数:
4.00)
(1).操作系统将百分之几的CPU时间用于处理时钟中断?
(分数:
2.00)
__________________________________________________________________________________________
正确答案:
()
解析:
系统每秒100次时钟中断,时间周期是10ms,因此10%的CPU时间用于时钟中断处理;
(2).如果操作系统采用轮转法调度,10个时钟中断为1个时间片,那么,操作系统将百分之几的CPU时间用于进程调度(包括调度、分配CPU和引起调度的时钟中断处理时间)?
(分数:
2.00)
__________________________________________________________________________________________
正确答案:
()
解析:
10次时钟中断一个时间片,则一个时间片是100ms,因此进程调度占用CPU的时间是4%。
有以下进程需要调度执行见下表。
进程名
到达时间/ms
运行时间/ms
P1
0.0
9
P2
0.4
4
P3
1.0
1
P4
5.5
4
P5
7
2
(分数:
3.99)
(1).如果采用非抢占的短进程优先调度算法,请问这5个进程的平均周转时间和平均响应时间分别是多少?
(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
10.6ms6.6ms
(2).如果采用抢占的短进程优先调度算法,请问这5个进程的平均周转时间和平均响应时间分别是多少?
(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
6.8ms2.8ms
(3).采用非抢占的短进程优先调度算法存在平均周转时间较大的问题。
为了降低平均周转时间,有这样一种解决方案:
依旧采用非抢占的短进程优先调度算法,但当就绪队列中只有一个进程等待运行时,不马上运行这个进程,而是让这个进程等待1个单位的时间,然后再选择一个运行时间短的进程投入运行。
请问采用这种方法上述5个进程的平均周转时间和平均响应时间分别是多少?
(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
7.48ms3.48ms
2.设某计算机系统有一块CPU、一台输入设备、一台打印机。
现有两个进程同时进入就绪状态,且进程A先得到CPU运行,进程B后运行。
进程A的运行轨迹为:
计算50ms,打印信息100ms,再计算50ms,打印信息100ms,结束。
进程B的运行轨迹为:
计算50ms,输入数据80ms,再计算100ms,结束。
试画出它们的时序关系图,并说明:
(1)开始运行后,CPU有无空闲等待?
若有,在哪段时间内等待?
计算CPU的利用率。
(2)进程A运行时有无等待现象?
若有,在什么时候出现等待现象?
(3)进程B运行时有无等待现象?
若有,在什么时候出现等待现象?
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
如图所示。
(1)存在CPU空闲(在进程A运行后100~150ms,进程A正打印,进程B正输入)。
CPU利用率为(300-50)÷300=83.3%。
(2)进程A运行后无等待现象。
(3)进程B运行后有等待现象(在A开始180~200ms;或进程B在运行后130~150ms)。
3.桌子上有一只盘子,每次只能放入或取出一个水果。
现有许多苹果和橘子。
一家4口人各行其职。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果。
请用P操作、V操作来实现4人之间的同步算法。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
盘子为互斥资源,只能放入一个水果,设信号量empty初值为1;爸爸放苹果前先看看有无空间,若有则抢盘子,放入苹果后向女儿发信号;妈妈放橘子前先看看有无空间,若有则抢盘子,放入橘子后向儿子发信号;女儿先看有无苹果,若有则抢盘子,取走苹果后发出盘子置空的信号;儿子看有无橘子,若有则抢盘子,取走橘子后发出盘子置空的信号;置空信号应是爸爸和妈妈都可以接收的。
该题是生产者/消费者问题的变形,有两对生产者和消费者。
生产者需要指明是给哪个消费者的产品,但消费者取走产品后无须特别通知某个生产者,因为空出的缓冲区可由两个生产者随意争夺。
此处无须设置信号量控制对盘子的互斥访问,因为盘子只能放一个产品;apple表示盘中有苹果,orange表示盘中有橘子,初值均为0。
Parbegin
爸爸:
begin
L1:
p(empty);
放苹果;
V(apple);
GotoL1;
end;
妈妈:
begin
L2:
P(empty);
放橘子;
V(orange);
GotoL2;
end;
女儿:
begin
L3:
P(apple);
取苹果;
V(empty);
GotoL3;
end;
儿子:
begin
L4:
p(orange);
取橘子;
V(empty);
GotoL4;
end;
Parend
4.8位哲学家围坐一方桌,桌子每边坐2位,每位哲学家面前放一盘面条,桌子四角和每一边(中间)各放着一把叉子。
哲学家只进行两种活动:
吃饭和思考问题。
当一位哲学家感到饥饿时,先取自己边上的叉子,拿到之后,再取自己角上的叉子,两把叉子到手才能用餐,吃完后把两把叉子放回原处。
写一段程序描述哲学家的行为,并讨论这种安排是否可能导致死锁。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
对8位哲学家顺序编号为:
P1,P2,P3,P4,P5,P6,P7,P8,对8个叉子顺序编号为:
1,2,3,4,5,6,7,8。
讨论每个哲学家的行为过程,再总结出规律,发现下标为奇数的哲学家是先拿左边的叉子,再拿右边的叉子;下标为偶数的哲学家先拿右边的叉子,再拿左边的叉子。
由此得到以下程序,信号量S[i]的初值均为1。
又因为编号P8的哲学家拿起的是8号和1号叉子,因此用取余运算令其返回1。
if(i%2==0){
P(S[i]);
P(S[(i+1)%8]);
吃;
V(S[i]);
V(S[(i+1)%8]);
}
else{
P(S[i+1]);
P(S[i]);
吃;
V(S[i+1]);
V(S[i]);
}
该题不可能死锁。
死锁产生的条件是所有的哲学家都从同一边拿起叉子,导致每个进程占用一个资源(叉子)而等待另一个资源,但该题的取叉子方式避免了这一现象。
5.下面是两个并发执行的进程。
它们能正确运行吗?
若不能请举例说明,并改正之。
Varx:
integer;
Processp1Processp2
Vary,z:
integer;Vart,u:
integer;
BeginBegin
x:
=1;①x:
=0;②
y:
=0;③t:
=0;⑥
ifx>=1theny:
=y+1;④ifx<=1thent:
=t+2;⑦
z:
=y;⑤u:
=t;⑧
endend
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
遍历x是两个进程的共享资源,在进程同时申请访问时很容易出错。
若采用顺序执行的方法,结构为y=1,z=1,t=2,u=2;若采用并发的方式,并按顺序①②③④⑤⑥⑦⑧执行,则结果为y=0,z=0,出错。
改正的方法是为临界资源x设置信号量S,初值为1。
程序如下:
Parbegin
Varx:
integer;
ProcessP1ProcessP2
Vaty,z:
integer;Vart,u:
integer;
BeginBegin
P(S);P(S);
x:
=1;①x:
=0;②
y:
=0;③t:
=0;⑥
ifx>=1theny:
=y+1;④ifx<=1thent:
=t+2;⑦
V(S);V(S);
z:
=y;⑤u:
=t;⑧
endend
Parend
6.兄弟俩共同使用一个账号,每次限存或取10元,存钱与取钱的进程分别如下所示:
begin
amount:
integer:
amount:
=0;
cobegin
ProcessSAVE
m1:
integer:
begin
m1:
=amount:
m1:
=m1+10;
amount:
=m1;
end;
ProcessTAKE
m2:
integer;
begin
m2:
=amount;
m2:
=m2-10;
amount:
=m2;
end;
coend;
end;
由于兄弟俩可能同时存钱和取钱,因此两个进程是并发的。
若哥哥先存了两次钱,但在第3次存钱的时候弟弟在取钱,请问最后账号amount上面可能出现的值?
如何用P操作、V操作实现两并发进程的互斥执行?
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
哥哥存两次钱后,amount=20,第三次存钱时,弟弟正在取钱,因没有对amount互斥操作,故发生错误。
最后amount上可能出现的值应与两进程相对执行速度有关;若TAKE执行结束后SAVE才开始,则剩20元;若SAVE执行结束后TAKE才开始,也剩20元;问题就出在两个进程交替使用CPU时,则会出现不同值。
关键在于最后被执行的语句是amount:
=m1,还是amount:
=m2,若先amount:
=m1后amount:
=m2,则amount=10,反之,先amount:
=m2后amount:
=m1,则amount=30。
设信号量mutex(初值为1)控制两进程对变量amount的互斥使用。
正确过程如下:
begin
amount:
integer;
amount:
=0;
cobegin
ProcessSAVE
m1:
integer;
Begin
P(mutex);
m1:
=amount;
m1:
=m1+10;
amount:
=m1;
V(mutex);
end;
ProcessTAKE
m2:
integer;
Begin
P(mutex);
m2:
=amount;
m2:
=m2-10;
amount:
=m2;
V(mutex);
end;
coend;
end;
7.战地指挥官通过无线电不断地向他的3个士兵下达作战指令,但是他必须在得到所有士兵对前一条指令的“acknowledgement”之后才能下达新的指令。
请使用P操作、V操作进行指挥官和士兵之间的协同管理,并对解题思路进行简要解释。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
思路如下:
typesemaphore=monitor;
varacknowledgement1,acknowledgement2,acknowledgement3:
boolean;
x,y:
condition;
a,b,c:
integer;
指挥官:
begin
whileacknowledgement1==false
oracknowledgement2==false
oracknowledgement3==false
dox.wait;
下达命令;
a:
=1;
b:
=1;
c:
=1;
y.signal;
end
士兵1:
begin
whilea==0doy.wait;
接收命令;
acknowledgement1=true;
x.signal;
end
士兵2:
begin
whilea==0doy.wait;
接收命令;
acknowledgement2:
true;
x.signal:
end
士兵3:
begin
whilea==0doy.wait;
接收命令;
acknowledgement3:
true;
X.signal;
end
begin
a:
=0;
b:
=0;
c:
=0;
acknowledgement1:
=false;
acknowledgement2:
=false;
acknowledgement3:
=false;
end
8.假定一个阅览室最多可容纳100人,读者进入和离开阅览室时都必须在阅览室门口的一个登记表上进行登记,而且每次只允许一人进行登记操作。
用信号量实现该过程。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
读者有任意多个,但进入阅览室读最多为100人,为此可设一个信号量s,代表空座位的数目;另登记表为临界资源,需设一个用于互斥的信号量mutex,防止2个及2个以上的读者进程同时对此表访问。
每个读者的动作包括进入、阅读、离开。
structsemaphore:
s,mutex=100,1;
cobegin
voidreaderi(void)(i=1,2,...,k){
while(TRUE){
P(s);
P(mutex);
查登记表,置某座位为占用;
V(mutex);
...
reading;
...
P(mutex);
查登记表,置某座位为空;
V(mutex);
V(s);
}
}
coend
用P操作、V操作解决读者/写者问题的正确程序如下:
Semaphore:
S,Sr;
intrc:
S=1;Sr=1;rc=0;
Reader(){
P(Sr);
rc=rc+1;
if(rc==1)thenP(S);
V(Sr);
read_file();
P(Sr);
rc=rc-1;
if(rc==0)thenV(S);
V(Sr);
}
Writer(){
P(S);
write_file();
V(S);
}
请回答:
(分数:
3.99)
(1).信号量Sr的作用;(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
Sr用于读者计数rc的互斥信号量;
(2).程序中什么语句用于读、写互斥,写、写互斥;(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
ifrc==1thenP(S)中的P(S)用于读/写互斥,写者进程中的P(S)用于写、写互斥,读、写互斥。
(3).若规定仅允许5个进程同时读,怎样修改程序?
(分数:
1.33)
__________________________________________________________________________________________
正确答案:
()
解析:
程序中增加一个信号量S5,初值为5,P(S5)语句加在读者进程P(Sr)之前,V(S5)语句加在读者进程第2个V(Sr)之后。
9.用信号量和P操作、V操作编写程序:
多个读进程和多个写进程共享一个文件。
要求:
(1)写操作只能互斥、独立进行;
(2)读操作可以同时共享读文件;
(3)当有写操作请求时,禁止新的读操作;有正在读文件的进程时,在读操作完成后进行写文件操作。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
设置信号量:
readcount:
=0,nwriter:
=0,swriter:
=1,mutex:
=1,wrt:
=1;
读者:
P(swriter);
if(nwriter==0){
P(mutex);
readcount:
=readcount+1;
if(readcount==1)
P(wrt);
V(mutex);
V(swriter);
}
else{
V(swriter);
block();
}
reading;
P(mutex);
readcount:
=readcount-1;
if(readcount==0)
V(wrt);
V(mutex);
写者:
P(swriter);
nwriter:
=nwriter+1;
P(wrt);
writing;
P(swriter);
nwriter:
=nwriter-1;
if(nwriter==0){
wakeup(读者进程);
V(swriter);}
else{
V(wrt);
V(swriter);
}
10.假设具有5个进程的集合P={P0,P1,P2,P3,P4},系统中有3类资源A、B、C,假设在某时刻有如下状态:
请问当前系统是否处于安全状态?
如果系统中的可利用资源Available为(0,6,2),系统是否安全?
如果系统处在安全状态,请给出安全序列;如果系统处在非安全状态,说明原因。
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
()
解析:
首先在题目的初始条件上找安全序列。
要想找安全序列,首先给出进程的剩余需求量,也就是在占有部分资源的基础上,还需要多少资源。
列表如下:
检查系统剩余资源数(1,4,0),看是否可以一次性满足某个进程的全部剩余需求量。
找到P0和P2,则选其一进入安全序列,并假设该进程已完成,然后将进入安全序列的进程所占有的资源回收,再检查是否可以一次性满足某个进程的全部剩余需求量。
依次类推,最后如果所有进程都可以进入安全序列,则系统处于安全状态,不会死锁。
本题第一问的答案是:
当前系统处于安全状态,因为至少可以找到一个安全序列<P0,P2,P1,P3,P4>(答案不定)。
如果系统中可用资源为(0,6,2),则只可满足P3的要求,P3归还后,可满足P4的要求,P4归还后,可满足P0的要求,P0归还后,无法满足P1和P2的要求,即找不到安全序列,因此系统处在不安全状态。
一个系统中存在某类资源m个,被n(n≤m)个进程共享,即每个进程至少需要一个资源。
资源的分配和释放必须一个一个地进行,请证明在以下两个条件下系统是否会发生死锁:
(分数:
4.00)
(1).每个进程需要资源的最大数在1~m之间;(分数:
2.00)
__________________________________________________________________________________________
正确答案:
()
解析:
这里要进行一下特别的说明。
题目中没有强调m与n的大小关系及取值范围,而实际上这点很重要,影响到该证明的正确与否。
举例如下:
假设m=6,根据题意,每个进程的最大需求资源数在1~6之间则不会死锁。
但请考虑,如果有3个进程,且每个进程最大需要3个资源,则当每个进程占用2个资源的时候,死锁就已经发生,所以该问无法证明。
(2).所有进程需要的资源总数小于m+n。
(分数:
2.00)
__________________________________________________________________________________________
正确答案:
()
解析:
用反证法。
假设发生死锁,此时系统的资源已全部分配,即m个资
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 学科专业 基础 综合 操作系统