计算机操作系统第二版答案郁红英Word下载.docx
《计算机操作系统第二版答案郁红英Word下载.docx》由会员分享,可在线阅读,更多相关《计算机操作系统第二版答案郁红英Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
a=3-x;
S2:
b=2*a;
S3:
c=5+a;
(1)并发程序执行的Bernstein条件是什么?
若P1与P2R并发执行,当且仅当R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}时才满足。
(2)试画图表示它们执行时的先后次序。
(3)利用Bernstein条件证明,S1、S2和S3哪两个可以并发执行,哪两个不能。
R(s1)={x},W(s1)={a};
R(s2)={a},W(s2)={b};
R(s3)={a},W(s3)={c};
(1).R(s1)∩W(s2)∪R(s2)∩W(s1)∪W(s1)∩W(s2)={a},则s1与s2不能并发执行;
(2).R(s1)∩W(s3)∪R(s3)∩W(s1)∪W(s1)∩W(s3)={a},则s1与s3不能并发执行;
(3).R(s2)∩W(s3)∪R(s3)∩W(s2)∪W(s2)∩W(s3)={},则s2与s3可以并发执行。
习题三
1.一下进程之间存在相互制约关系吗?
若存在,是什么制约关系?
(1)几个同学去图书馆借同一本书。
互斥关系;
因为他们要借同一本书,不可能同时借到,所以互斥。
(2)篮球比赛中两队同学争抢篮板球。
因为争抢同一个篮板,存在互斥关系。
(3)果汁流水线生产中捣碎、消毒、灌装、装箱等各道工序。
同步关系;
他们必须相互协作才能使进程圆满完成。
(4)商品的入库出库。
因为商品出库可以为入库提供空间。
(5)工人做工与农民种粮。
没有制约关系。
2.在操作系统中引入管程的目的是什么?
条件变量的作用是什么?
用信号量可以实现进程的同步于互斥,但要设置许多信号量,使用大量的P、V操作,而且还要仔细安排P操作的排列次序,否则将会出现错误的结果或是死锁现象。
为了解决这些问题引进了管程;
条件变量的作用是使进程不仅能被挂起,而且当条件满足且管程再次可用时,可以恢复该进程并允许它在挂起点重新进入管程。
3.说明P、V操作为什么要设计成原语。
答:
用信号量S表示共享资源,其初值为1表示有一个资源。
设有两个进程申请该资源,若其中一个进程先执行P操作。
P操作中的减1操作有3跳及其指令组成:
去S送寄存器R;
R-1送S。
若P操作不用原语实现,在执行了前述三条指令中的2条,即还未执行R送S时(此时S值仍为1),进程被剥夺CPU,另一个进程执行也要执行P操作,执行后S的值为0,导致信号量的值错误。
正确的结果是两个进程执行完P操作后,信号量S的值为-1,进程阻塞。
4.设有一个售票大厅,可容纳200人购票。
如果厅内不足200人则允许进入,超过则在厅外等候;
售票员某时只能给一个购票者服务,购票者买完票后就离开。
试问:
(1)购票者之间是同步关系还是互斥关系?
互斥关系。
(2)用P、V操作描述购票者的工作过程。
semaphoreempty=200;
semaphoremutex=1;
semaphorewaiting=0;
voidbuy()
{p(waiting);
p(mutex);
买票;
v(mutex);
v(empty);
}
voidwaiting()
{
p(empty);
等待;
waiting++;
5.进程之间的关系如图3-16所示,试用P、V操作描述它们之间的同步。
semaphoreA,B,C,D,E,F,G=0;
{S1,V(A),V(B)};
{P(A),S2,V(C)};
{P(B),S3,V(D),V(E)};
{P(D),S4,V(F)};
{P(E),S5,V(G)};
{P(C),P(F),P(G),S6};
6.有4个进程P1、P2、P3、P4共享一个缓冲区,进程P1向缓冲区存入消息,进程P2、P3、P4从缓冲区中取消息,要求发送者必须等三个进程都取过本消息后才能发送下调消息。
缓冲区内每次只能容纳一个消息,用P、V操作描述四个进程存取消息的情况。
semaphorep1=0;
semaphorep2,p3,p4=1;
semaphorecout=0;
semaphoremutex=1;
voidmain()
{P(p2);
P(p3);
P(4);
V(cout);
writep1()
{P(p1);
P(metux);
P(cout);
存入消息;
V(p1);
V(metux);
Readp2()
{P(mutex);
P(p1);
读消息;
V(p2);
Readp3()
V(p3);
Readp4()
V(p4);
V(metux);
7.分析生产者——消费者问题中多个P操作颠倒引起的后果。
semaphoreempty=n;
semaphorefull=0;
inti,j;
ITEMbuffer[n];
ITEMdata_p,data_c;
voidproducer()/*生产者进程*/voidconsumer()/*消费者进程*/
{while(true){while(true)
{{P(mutex);
P(mutex);
P(full);
P(empty);
data_c=buffer[j];
buffer[i]=data_p;
j=(j+1)%n;
i=(i+1)%n;
V(mutex);
V(mutex);
V(empty);
V(full);
}}
若把生产者进程的P操作颠倒,消费者进程的P操作颠倒(如图),则生产者进程执行到V(mutex)时,消费者就可以执行P(mutex)但由于full=0,消费者进程不可执行P(full);
当生产者进程执行完V(full)后,full=1,但由于mutex=0,消费者进程无法执行,造成死锁。
8.读者——写者问题中写者优先的实现。
semaphoreWmutex,Rmutex=1;
intRcount=0;
semaphoremutex=1
voidreader()/*读者进程*/
{while(true)
{P(mutex);
P(Rmutex);
If(Rcount==0)P(wmutex);
Rcount=Rcount+1;
V(Rmutex);
V(mutex);
…;
read;
/*执行读操作*/
…;
P(Rmutex);
Rcount=Rcount-1;
if(Rcount==0)V(wmutex);
V(Rmutex);
voidwriter()/*写者进程*/
P(wmutex);
write;
/*执行写操作*/
V(Wmutex);
}}
9.写一个用信号量解决哲学家进餐问题不产生锁死的算法。
semaphorechopstick[5]={1,1,1,1,1};
voidphilosopher(){while(true)
P(chopstick[i]);
P(chopstick[(i+1)%5]);
…;
eat;
V(chopstick[i]);
V(chopstick[(i+1)%5]);
think;
10.一个文件可有若干个不同的进程所共享,每个进程具有唯一的编号。
假定文件可由满足下列限制的若干个不同的进程同时访问,并发访问该文件的哪些进程的编号的总和不得大于n,设计一个协调对该文件访问的管程。
11.用管程解决读者——写者问题,并采用公平原则。
习题四
1.某进程被唤醒后立刻投入运行,能说明该系统采用的是可剥夺调度算法吗?
不能说明,因为如果现在就绪队列中没有进程,那么唤醒的进程会立刻投入运行。
2.在哲学家进餐问题中,如果将先拿起左边筷子的哲学家称为左撇子,先拿起右边筷子的哲学家称为右撇子。
请说明在同时存在左、右撇子的情况下,任何的就坐安排都不能产生锁死。
任何的就坐安排都不会构成环路,这就符合避免死锁的条件,所以不会产生死锁。
3.系统中有5个资源被4个进程所共享,如果每个进程最多需要2个这种资源,试问系统是否会产生锁死?
不会产生死锁;
因为因为资源数可以满足进程的需要,当其中的一个进程争取到剩下的一个资源可以执行,当执行完成以后会释放资源,供其他进程使用,所以不会产生死锁。
4.计算机系统有8台磁带机,由N个进程竞争使用,每个进程最多需要3台。
问:
N为多少时,系统没有死锁的危险?
当n为1、2、3时,没有死锁的危险;
因为当n小于3时,每个进程分配2台磁带机,还有磁带机剩余,那么当其中的一个进程得到剩余的磁带机则可运行,运行结束后会释放磁带机,供其他进程使用,系统不会有死锁的危险;
当n为4时,每台分配2台时没有剩余,则会产生死锁,当大于5时同样会死锁。
5.系统有5个进程,它们的到达时间和服务时间如表4-8所示。
新进程(没有运行过)与老进程(运行过的进程)的条件相同时,假定系统选新进程运行。
表4-8进程情况
进程名
到达时间
服务时间
A
3
B
2
6
C
4
D
5
E
8
若按先来先服务(FCFS)、时间片轮法(时间片q=1)、短进程优先(SPN)、最短剩余时间优先(SRT,时间片q=1)、响应比高者优先(HRRN)及多级反馈队列(MFQ,第一个队列的时间片为1,第i(i>
1)个队列的时间片q=2(i-1))算法进行CPU调度,请给出各个进程的完成时间、周转时间、带