操作系统作业 联系客服

发布时间 : 星期一 文章操作系统作业更新完毕开始阅读83f0de1351e79b8969022615

第三章

思考与练习题

1.以下进程之间存在相互制约关系吗?若存在,是什么制约关系?为什么? (1)几个同学去图书馆借同一本书。

答:互斥关系;只有一本书,先到者先得,剩下的人必须等待。 (2)篮球比赛中两队同学争抢篮板球。

答:互斥关系;先抢到篮板球者先得分,由于争抢篮板球,产生制约关系。 (3)果汁流水线生产中捣碎、消毒、灌装、装箱等各道工序。

答:同步关系;果汁的生产存在某种时序关系,它们按照规定的时序执行,以共同完成一项任务。

(4)商品的入库和出库。

答:同步关系;只有商品先入库了才能出库,所以存在一定的时序关系。 (5)工人做工与农民种粮。 答:没有相互制约关系。

2.在操作系统中引入管程的目的是什么?条件变量的作用是什么?

答:用信号量可以实现进程之间的同步和互斥,但要设置很多信号量,使用大量的P、V操作,还要仔细安排多个P操作的排列次序,否则将出现错误的结果或出现死锁现象。为了解决这些问题引入了管程。

条件变量的作用:条件变量是一种机制,使得进程不仅能被挂起,而且当条件满足且管程再次可用时,可以恢复该进程并允许它在挂起点重新进入管程。管程必须使用条件变量提供对同步支持,这些条件变量包含在管程中,并且只有在管程中才能被访问。 3.说明P、V操作为什么要设计成原语。

答:原语由若干指令构成,是用于完成一定功能的过程。用信号量S表示共享资源,其初值为1表示有一个资源。现在有两个进程申请该资源,其中一个进程先执行P操作,P操作由三条指令组成,先去S的寄存器使其减一再赋给S,若不用原语实现,在执行前两条指令时还没有把S-1的值赋给S进程被剥夺CPU,另一进程也要执行P操作。正确的结果是一个进程执行完,使另一进程阻塞。

4.设有一个售票大厅,可容纳200人购票。如果厅内不足200人则允许进入,超过则在厅外等候;售票员某时只能给一个购票者服务,购票者买完票后就离开。试问: (1)购票者之间是同步关系还是互斥关系? 答:购票者之间是互斥关系。

(2)用P、V操作描述购票者的工作过程。 答:

9

semaphore empty?200;semaphore mutex?1;void buyer? ?{ P(empty);P(mutex);buy;V(mutex);V(empty);}

5.进城之间的关系如图3-16所示,试用P、V操作描述它们之间的同步。

S2bS1S4aS3cS5gdefS6 图3-16 进程之间的关系

答:

?S1;P(a),P(b);??V(b);S2;P(e);??V(a);S3;P(d),P(c);??V(d);S4;P(f);? ?V(c);S5;P(g);??V(e),V(f),V(g);S6;?6.有四个进程P1、P2、P3、和P4共享一个缓冲区,进程P1向缓冲区中存入消息,进程P2、P3和P4从缓冲区中取消息,要求发送者必须等三个进程都取过本条消息后才能发送下一条消息。缓冲区每次只能容纳一个消息,用P、V操作叙述四个进程存取消息的情况。

10

semaphore mutex?0;{P1;V(mutex);}{P(mutex);P2;V(mutex);}{P(mutex);答:

P3;V(mutex);}{P(mutex);P4;V(mutex);}7.分析生产者—消费者问题中多个P操作颠倒引起的后果。

答:多个P操作的次序不能颠倒,在程序中,应先对资源信号执行P操作,再对互斥信号量执行P操作,否则可能引起死锁。

如以下的程序将P操作颠倒,先对互斥信号量执行P操作,此时易出现死锁现象,当消费者进程运行时,在full信号量上阻塞,此时mutex=0,在想运行生产者程序mutex=-1<0,此时生产者进程阻塞就产生死锁,生产者和消费者两个进程均不能运行。

11

semaphore mutex=1;semaphore empty=n;semaphore full=0;int i,j;ITEM buffer[n];ITEM data_p,data_c;void producer(){while (true){ produce an item in data_p; P(mutex); P(empty); buffer[i]=data_p; i=(i+1)%n; V(mutex); V(full); }}void consumer(){while (true){ P(mutex); P(full); data_c=buffer[j]; j=(j+1)%n; V(mutex); V(empty); consume the item in data_c; } }8.读者—写者问题中写者优先算法的实现。

12