操作系统第三章作业答案.docx
第三章作业1.下进程之间存在互相制约关系吗?若存在,是什么制约关系?为什么?几个同学去图书馆借同一本书。答:互斥,只能有一个借到篮球竞赛中两队同学争抢篮板球。答:互斥,只能有一个抢到果汁流水线消费中捣碎、消毒、灌装、装箱等各道工序。答:同步时进展,互相不影响商品的入库出库。答:同步时进展,互相无影响工人做工与农夫种粮。答:同步进展,互相无影响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人则允许进入,超过则在厅外等候;售票员某时只能给一个购票者效劳,购票者买完票后就分开。试问:购票者之间是同步关系还是互斥关系?答:互斥关系 用P、V操作描绘购票者的工作过程。如下:semaphore mutex=1;semaphore full=200;void customer() p(metux); P(full); Buying V(mutex); V(full);5.进程之间的关系如图3-16所示,试用P、V操作描绘它们之间的同步。如下:设:s1s2为a s1s3为b s2s6为c s3s4 为d s3s5为e s4s6为f s5s6为gsemaphore a,b,c,d,g,f,g=0,0,0,0,0,0,0; s1;v(a);v(b); p(a);s2;v(a); p(b);s3;v(b); p(d);s4;v(d); p(e);s5;v(e); p(c);s6; p(f);p(g);s66.有4个进程P1、P2、P3、P4共享一个缓冲区,进程P1向缓冲区存入消息,进程P2、P3、P4从缓冲区中去消息,要求发送者必需等三个进程都去过本消息后才能发送下调消息。缓冲区内每次只能包涵一个消息,用P、V操作描绘四个进程存取消息的状况。如下:Semaphore: metux=0; p1;v(metux); p(metux); p(metux); p(metux);P2; p3; p4;V(metux); v(metux); v(metux);7.分析消费者消费者问题中多个P操作颠倒引起的后果。semaphore mutex=1; semaphore empty=n; semaphore full=0; int i,j;ITEM buffern;ITEM data_p,data_c;void producer() While(ture) Produce an item in data_p; P(empty); P(mutex); bufferi=data_p; i=(i+1)%n; v(empty); v(full);Void consumer() While(ture) P(full); P(mutex);data_c= bufferj; j=(j+1)%n;v(metux); v(empty);coumer the item in data_c;8.读者写者问题中写者优先算法的实现。semaphore Wmutex,Rmutex=1;int Rcount=0;semaphore mutex=1void reader() void writer()while(true) while(true)P(mutex); P(mutex); P(Rmutex); P(wmutex); If(Rcount=0) P(wmutex); Rcount=Rcount+1 ; 写;V(Rmutex); V(mutex); V(Wmutex); V(mutex);读; P(Rmutex);Rcount=Rcount-1;if (Rcount=0) V(wmutex);V(Rmutex);9.写一个用信号量解决哲学家进餐问题不产生锁死的算法。如下:Semaphore chopstick5=1,1,1,1,1;Semaphore mutex;Void profession(int n)While (ture) p(chopsticki; p(chopstick(i+1)%5); p(metux); 进餐; V(chopsticki; V(chopstick(i+1)%5);思索;V(metux);10.一个文件可有若干个不同的进程所共享,每个进程具有唯一的编号。假定文件可有满意下列限制的若干个不同的进程同时访问,并发访问该文件的哪些进程的编号的总与不得大于n,设计一个协调对该文件访问的管程。不会做这道题11.用管程解决读者写者问题,并承受公允原则。不会做这道题第 5 页