弱公平与强公平有什么区别?

时间:2011-02-27 03:31:21

标签: programming-languages

弱公平与强公平有什么区别?什么是一个例子,它包含一组变量和一组动作?

2 个答案:

答案 0 :(得分:7)

我不完全确定,但我相信这就是答案:

强弱对弱

如果每个无限次启用的进程最终都会运行,那么调度程序非常公平。

如果每个持续启用的进程最终都会运行,那么调度程序是不公平的。

  • 对于共享变量程序,弱公平是合理的
  • 对于同步过程,弱公平是合理的,但它不是很有用(启用不是本地的)
  • 强烈的公平是不现实的(太多的簿记)
  • 对于异步流程,弱公平既合理又有用

实施例

a!0 k n:=0; go:=true;
do
    (go ^ a?x ! go:=false)
    2 (go ! n:=n + 1)
od

继续执行第二种选择是不公平的,因为这会忽略两个进程之间同步通信的可能性,这可能是无数次执行的。

有效的实现应该尽量合理公平,并且应该确保输出命令在首次变为可执行文件后不会被不合理地延迟。

什么是公平的?

  • 这样的执行不是很公平,但是不公平。
  • 假设公平性很强,程序终止于n = 0。
  • 假设公平性较弱,该计划也可能出现分歧。

答案 1 :(得分:7)

给出转换图:

  1. 弱公平确保执行不会永远存在 处于启用其他州的行动的状态。
  2. 强烈公平下,不会在没有执行的情况下经常启用任何操作。