电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

操作系统第六次作业VIP免费

操作系统第六次作业_第1页
1/8
操作系统第六次作业_第2页
2/8
操作系统第六次作业_第3页
3/8
操作系统第五次作业6.1 第一个著名的正确解决两个进程的临界区问题的软件方法是Dekker 设计的。两个进程 P0 和 P1 共享以下变量:booleanflag[2];/*initiallyfalse*/intturn;进程 Pi(i==0 或 1)的结构见图 6.25,另一个进程是 Pj(j==0 或1)。试证明这个算法满足临界区问题的所有三个要求。答:临界区的问题的解答必须满足以下三个条件:1)互斥:如果进程 Pi 在其临界区内执行,那么其他进程都不能在其临界区内执行。2)有空让进:如果没有进程在其临界区内执行且有进程需进入临界区,那么只有那些不在剩余区内执行的进程可参加选择,以确定谁能下一个进入临界区,且这种选择不能无限推迟。3)有限等待:从一个进程做出进入其临界区的请求,直到该请求允许为止,其他进程被允许进入其临界区的次数有上限。为了表述方便,接下来用 0,1 来代替 i,j;首先两个进程共享以下变量:booleanflag[2];/*initiallyfalse*/intturn;flag 用来记录谁要访问临界区,就让对应的 flag 二 true(例如 P0要访问临界区,就让 flag[0]=true),相当于“举手示意我要访问”初始值为 0 表示一开始没人要访问。trun 用于标识当前允许谁进入,turn=O 则 P0 可进入,turn=1 则P1 可进入。接下来看进程 P0 的逻辑do{flag[O]=true;〃首先 P0 举手示意我要访问 while(flag[1]){〃看看 P1是否也举手了讦(turn==1){〃如果 P1 也举手了,那么就看看到底轮到谁flag[O]=false;〃如果确实轮到 P1,那么 P0 先把手放下(让 P1先)while(turn==1);//donothing//只要还是 P1 的时间,P0 就不举手,一直等flag[O]=true;〃等到 P1 用完了(轮到 P0 了),P0 再举手}}//Criticalsection//访问临界区turn=1;//P0 访问完了,把轮次交给 P1,让 P1 可以访问flag[0]=false;//P0 放下手//remaindersection//剩余区}while(1);P1 的逻辑和 P0 相同:do{flag[1]=true;//首先 P1 举手示意我要访问while(flag[0]){//看看 P0 是否也举手了if(turn==0){//如果 P0 也举手了,那么就看看到底轮到谁flag[1]=false;〃如果确实轮到 P0,那么 P1 先把手放下(让 P0 先)while(turn==O);//donothing〃只要还是 P0 的时间,P1 就不举手,一直等flag[1]=true;〃等到 P0 用完了(轮到 P1 了),P1 再举手}}//Criticalsection//访问临界区turn=0;//P1 访问完了,把轮次交给 P0,让 P0 可以访问flag[1]=false;//P1 放下手//remainder...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

操作系统第六次作业

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部