您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 操作系统期末考试,考研试题4
操作系统习题与解析(第四部分)十六、(南开大学1997年试题)在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但其中有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,如图2.14所示。试设计一个算法使来往的自行车均可顺利通过。p53《错》[分析及相关知识]在本题中,需要控制路段T到L,路段S到K及安全岛M的使用。路段T到L及路段S到K同时只允许一辆自行车通过,而安全岛M允许两辆自行车使用,因此可以用三个信号量来管理它们。另一方面,同一方向上的自行车最多只能有一辆通过这段路(两个方向上有两辆),因此还应该用两个信号量来控制.解:在本题中,应设置5个信号量ST,TS,K,L,M,信号量ST表示是否允许自行车从南开大学去天津大学,其初值为1;信号量TS表示是否允许自行车从天津大学去南开大学,其初值为1;信号量K表示是否允许自行车通过路段S到K,其初值为1;信号量L表示是否允许自行车通过路段T到L,其初值为1;信号量M表示安全岛上还可停放自行车的数目,其初值为2。其控制过程描述如下:intST=1;intTS=1;intK=1;intL=1;intM=2;totian()/*从南开大学去天津大学*/{p(ST);p(K);从S走到K;p(M);进入安全岛;v(K);p(L);从L走到T;v(M);v(L);v(ST);}tonan()/*从天津大学去南开大学*/{p(TS);p(L);从T走到L;p(M);进入安全岛;v(L);p(K);从K走到S;v(M);v(K);v(TS);}另一题在南开大学和天津大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,如图3-28所示。试设计一个算法使来往的自行车均可顺利通过。L3.46p129《正确》[解答]由于小路中间的安全岛M仅允许两辆自行车停留,本应该作为临界资源而设置信号量,但仔细分析可以发现:在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此,无需为安全岛M设置信号量。在路口S处,南开出发的若干自行车应进行进入小路权的争夺,以决定谁能够进入小路SK段,为此,设置信号量S(初值为1)来控制南开路口资源的争夺。同理,设置信号量T(初值为1)来控制天大路口资源的争夺。此外,小路SK段仅允许一辆自行车通过,所以设置信号量SK(初值为1)来进行控制,而对于LT段则设置信号量LT(初值为1)进行控制。beginS:=1;T:=1;SK:=1;LT:=1;cobegin进程i(i为南开方向的自行车,i=1,2,…):beginP(S);/*与其他南开方向的自行车争夺路口S的使用权*/P(SK);/*同对面(天大)来的自行车争夺SK路段的使用权*/通过SK路段;进入安全岛M;V(SK);/*一旦进入安全岛M便可释放路段SK的使用权*/P(LT);/*同对面(天大)来的自行车争夺LT路段的使用权*/通过LT路段:V(LT);/*已通过LT路段,释放路段LT的使用权*/V(S)/*已经通过小路,则允许在路口S等待的自行车争夺再次进入S的使用权*/end;进程j(j为天大方向的自行车,j=1,2,…):beginP(T);/*与其他天大方向的自行车争夺路口T的使用权*/P(LT);/*同对面(南开)来的白行车争夺LT路段的使用权*/通过LT路段;进入安全岛M;V(LT):/*—旦进入安全岛M便可释放路段LT的使用权*/P(SK):/*同对面(南开)来的自行车争夺SK路段的使用权*/通过SK路段:V(SK);/*已通过SK路段,释放路段SK的使用权*/V(T)/*已经通过小路,则允许在路口T等待的臼行车争夺再次进入T的使用权*/endcoendend;注意:如果在进程i进入安全岛M后,在释放路段SK的同时释放了路口S,而此时进程i也进入安全岛,同样在释放路段LT的同时释放路口T,那么,南开、天大方向将各有一自行车又进入路段SK和路段LT,这使得在安全岛M中的两辆自行车都无法继续前进,而在SK路段和LT路段的—自行车也无法进入安全岛M,从而造成死锁。因此,进程i在进入安全岛M后是为对面天大)来的自行车释放路段SK的使用权,而进程j在进入安全岛M后也是为对面(南开)来的自行车释放路段LT的使用权。十七、(中国科学院软件研究所1995年试题)多个进程共享一个文件,其中只读文件的称为读者,只写文件的称为写者。读者可以同时读,但写者只能独立写。请:①说明进程间的相互制约关系,应设置哪些信号量?②用P、V操作写出其同步算法。③修改上述的同步算法,使得它对写者优先,即一旦有写者到达,后续的读者必须等待。而无论是否有读者在读文件。解:本题前两问是经典读者写者问题,第三问对读者写者问题加了一些限制,即使算法对写者优先。①进程间的相互制约关系有三类:一是读者之间允许同时读;二是读者与写者之间须互斥;三是写者之间须互斥。为了解决读者、写者之间的同步,应设置两个信号量和一个共享变量;读互斥信号量rmutex,用于使读者互斥地访问共享变量count,其初值为1;写互斥信号量wmutex,用于实现写者与读者的互斥及写者与写者的互斥,其初值为1;共享变量count,用于记录当前正在读文件的读者数目,初值为0。②进程间的控制算法如下所示:intrmutex=l;intwmutcx=l;intcount=0;main(){cobeginreader();writer();coend}reader(){while(1){p(rmutex);if(count=0)p(wmutex);/*当第一个读者读文件时,阻止写者写*/count++;v(rmutex);读文件;p(rmutex);count--;if(coun==)v(wmutex);/*当最后一个读者读完文件时,允许写者写*/v(rmutex);}}writer(){while(1){p(wmutex);写文件;v(wmutex);}}③为了提高写者的优先级,增加一个信号量s,用于在写进程到达后封锁后续的读者。其控制流程如下:intrmutex=1;intwmutex=l;intcount=0;ints=1;main(){cobeginreader();writer();coend}reader(){while(1){p(s);p(rmutex);if(coun==0)p(wmutex);/*当第一个读者读文件时,阻止写者写*/count++;v(rmutex);v(s);读文件;p(rmutex);count--;if(count==0)v(wmutex);/*当最后一个读者读完文件时,允许写者写*/v(rmutex);}}writer(){while(1){p(s);p(wmutex);写文件;v(wmutex);v(S);}}十八、既考虑作业等待时间,又考虑作业执行时间的调度算法是_____。A.响应比高者优先B.短作业优先p91C.优先级调度D.先来先服务答:A十九、______是指从作业提交给系统到作业完成的时间间隔。p91A.周转时间B.响应时间C.等待时间D.运行时间答:A二十、作业从进入后备队列到被调度程序选中的时间间隔称为_____。p91A.周转时间B.响应时间C.等待时间D.触发时间答:C
本文标题:操作系统期末考试,考研试题4
链接地址:https://www.777doc.com/doc-4603299 .html