每个作业的运行将经历两级调度作业调度和进程调度作业调度采用短.doc

每个作业的运行将经历两级调度作业调度和进程调度作业调度采用短.doc

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
每个作业的运行将经历两级调度作业调度和进程调度作业调度采用短.doc

操作系统硕士研究生入学考试 全真试题分类解析 与时间有关错误类 进程管理及调度类 同步和互斥类 死锁问题类 存储管理类 文件管理类 设备管理类 与时间有关错误类 北航2001与时间有关错题 有两个优先级相同的进程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。 华中科技大2000、国防科大1999与时间有关错题 进程P0,P1共享变量flag和turn。若flag和turn单元内容的修改和访问是互斥的,它们如下进入临界区: var flag:array[0…1] of Boolean; turn:0…1;flag[0]:=flag[1]:=false;turn:=0; process i (i=0 or 1) while true do begin flag[i]:=true;…………………………… .① while turn≠i…………………………… . ② do begin while flag[j]==false do skip; turn:=i ………… ………….. ③ end; 临界区; flag[i]:=false; 出临界区; end. 该算法能正确实现互斥吗?应如何修改? 解:不能。若P0执行到①,flag[0]:=true;这时P0被打断,P1开始执行,首先执行.① ,使得flag[1]的值为true。接着执行②,由于turn的初值为0,故进入内循环时turn置为1。这时调度转向P0,P0也进入内循环,由于flag[1]的值己为true,故P0再次把turn值置为0。重复上述两个操作,没有进程能进临界区。修改算法如下: var flag:array[0…1] of Boolean; turn:0…1;flag[0]:=flag[1]:=false;turn:=0 or 1; process 0 while true do begin flag[0]:=true; turn:=1; while flag[1] and turn=1 do skip; 临界区; flag[0]:=false; 出临界区; e

您可能关注的文档

文档评论(0)

wendang_12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档