如果 Pj重新澳门太阳娱乐集团官网设置 flag[j] 为 true

当前位置:澳门太阳娱乐集团官网 > 澳门太阳娱乐集团官网 > 如果 Pj重新澳门太阳娱乐集团官网设置 flag[j] 为 true
作者: 澳门太阳娱乐集团官网|来源: http://www.ucylang.com|栏目:澳门太阳娱乐集团官网

文章关键词:澳门太阳娱乐集团官网,临界区

  Peterson 算法提供了解决临界区问题的一个很好的算法,并能说明满足互斥、进步、有限等待等要求的软件设计的复杂性。

  Peterson算法适用于两个进程交错执行临界区与剩余区。两个进程为 P0和 P1。为了方便,当使用 Pi时,用 Pj来表示另一个进程,澳门太阳娱乐集团官网即 j == 1 - i。

  为了进入临界区,进程 Pi首先设置 flag[i] 的值为 true;并且设置 turn 的值为 j,从而表示如果另一个进程 Pj希望进入临界区,那么 Pj能够进入。澳门太阳娱乐集团官网如果两个进程同时试图进入,那么 turn 会几乎在同时设置成 i 和 j。只有一个赋值语句的结果会保持;另一个也会设置,但会立即被重写。变量 turn 的最终值决定了哪个进程允许先进入临界区。

  为了证明第 1 点,应注意到,只有当 flag[j] == false 或者 turn == i 时,进程 Pi才能进入临界区。而且注意,如果两个进程同时在临界区内执行,那么 flag[0]==flag[1]==true。这两点意味着,P0和 P1不可能同时成功地执行它们的 while 语句,因为 turn 的值只可能为 0 或 1,而不可能同时为两个值。

  因此,只有一个进程如 Pj,能成功地执行完 while 语句,而进程 Pi应至少再一次执行语句(“turn == j”)。而且,只要在临界区内,flag[j]==true 和 turn==j 就同时成立。结果,互斥成立。

  然而,当 Pj退出临界区时,它会设置 flag[j] 为 false,以允许 Pi进入临界区。如果 Pj重新设置 flag[j] 为 true,那么它也应设置 turn 为 i。因此由于进程 Pi执行 while 语句时并不改变变量 turn 的值,所以 Pi会进入临界区(进步),而且 Pi在 Pj进入临界区后最多一次就能进入(有限等待)。

  文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

  精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,澳门太阳娱乐集团官网看一眼就倾心。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!