- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统部分题
习题 1、有两个优先级相同的进程P1和P2,各自执行的操作如下,信号量S1和S2初值均为0。试问P1、P2并发执行后,x、y、z的值各为多少? P1: P2: begin begin y:=1; x:=1; y:=y+2; x:=x+1; V(S1); P(S1); z:=y+1; x:=x+y; P(S2); V(S2); y:=z+y z:=z+x; end. end. 现对进程语句进行编号,以方便描述。 P1: P2: begin begin y:=1; ① x:=1; ⑤ y:=y+2; ② x:=x+1; ⑥ V(S1); P(S1); z:=y+1; ③ x:=x+y; ⑦ P(S2); V(S2); y:=z+y ④ z:=z+x; ⑧ end. end. ①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到x=5,y=3。按Bernstein条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到z=4。最后,语句④和⑧并发执行,最后结果为: 语句④先执行,再执行⑧:x=5,y=7,z=9。 语句⑧先执行,再执行④:x=5 ,y=12,z=9。 2、在UNIX系统中运行以下程序,最多可产生出多少进程?画出进程家属树。 main( ) { fork( ); /*←pc(程序计数器),进程A fork( ); fork( ); } 解:首先采用fork( )创建的子进程,其程序是复制父进程的;其次,父、子进程都从调用后的那条语句开始执行。 当进程A执行后,派生出子进程B, 当进程A、B执行后,各派生出子进程C、D, 当进程A、B、C、D执行后,各派生出子进程E、F、G、H。这时进程A共派生出7个子进程。 3、有一个仓库,可以存放A和B两种产品,但要求: (1)每次只能存入一种产品(A或B); (2)-N<A产品数量-B产品数量<M。 其中,N和M是正整数。试用P、V操作描述产品A与产品B的入库过程。 分析 本题给出的第一个条件是临界资源的访问控制,可用一个互斥信号量解决该问题。第二个条件可以分解为: -N<A产品数量-B产品数量 A产品数量-B产品数量<M 也就是说,A产品的数量不能比B产品的数量少N个以上,A产品的数量不能比B产品的数量多M个以上。 解:在本题中,可以设置两个信号量来控制A、B产品的存放数量, sa表示当前允许A产品比B产品多入库的数量,即在当前库存量和B产品不入库的情况下,还可以允许sa个A产品入库; sb表示当前允许B产品比A产品多入库的数量,即在当前库存量和A产品不入库的情况下,还可以允许sb个B产品入库。 初始时,sa为M-1,sb为N-1。当往库中存放入一个A产品时,则允许存入B产品的数量也增加1;当往库中存放入一个B产品时,则允许存入A产品的数量也增加1。 var mutex:semaphore=1;/*互斥信号量*/ sa,sb:semaphore; sa=M-1; sb=N-1; mian( ) { while (1) { 取一个产品; if(取的是A产品) { P(sa); P(mutex); 将A产品入库; V(mutex); V(sb); } 4、公路上有一座桥,该桥一次
文档评论(0)