作业系统第六章作业.PDF

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

作業系統第 六章作業 6.3 The first known correct software solution to the critical-section problem for n processes with a lower bound on waiting of n - 1 turns was presented by Eisenberg and McGuire. The processes share the following variables: enum pstate{idle, want_in, in_cs}; pstate flag[n]; int turn; All the elements of flag are initially idle; the inital value of turn is immaterial (between 0 and n-1). The structure of process Pi is shown in Figure 6.26. Prove that the algorithm satisfies all three requirements for the critical-section problem. (102165011) 第一個能以軟體解決 n個行程臨界區間 (加上等待 n-1 次的最低要求)問題的法 則是由 Eisenberg 和 McGuire所提出。這次行程共用以下的變數 : Enum pstate {idle, want_in, in_cs}; Pstate flag[n]; Int turn; Flag的所有元素原先都是 idle ; turn的初值不重要 (介於0 到n-1之間) 。Pi的 結構如圖 6.25所示。證明此演算法滿足臨界區間的所有三種要求。 do { while (TRUE) { j = tur n; while (j != i) { if (flag[j] !=idle) { j = turn; else j= (j+1) % n; } Flag[i] = in_cs; J = 0; While ((j n) (j== I || flag[j] != in_cs)) J++; If ((j = n) (turn == i || flag[turn] == idle)) Break; } // critical section J = (turn + 1) % n; While (flag[j] == idle) J =(j+1) % n; Turn = j; Flag[i] = idle; // remainder section } while (TURE); 圖 6.25 Eisenberg 和 McGuire 演算法的行程 Pi 結構 答案 : 本演算法作法步驟如下: 如果 process i要進入 critical section ,則將flag[]=want_in 。 確認 turn ~ i的 process都是 idle 狀態,如果任何一個不是idle ,則就 等到全部都是idle 狀態為止。 上述條件成就之後,flag[]=in_cs ,然後檢查是否有其他process也是 in_cs 接著,如果turn ==目前 process或者 flag[turn] = idle ,就可以進入 critical section 1. mutual exclusion 滿足:因為只要有其他任何一個 process是 in_cs 狀態, 則自己就不能進入 critical section 2. progress 滿足 :如果碰到兩個以

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档