哲学家就餐问题算法解析
1. 受限形式的解决方案
在资源分配问题中,我们考虑的解决方案有一种特定形式:每个资源都有一个对应的读 - 修改 - 写共享变量,且只有需要该资源的进程才能访问这个变量。以哲学家就餐问题为例,其受限形式的架构中,共享变量与叉子一一对应,如 $f(1), \cdots, f(5)$ ,每个进程 $i$ 会访问叉子变量 $f(i)$ 和 $f(i + 1)$ 。
2. 对称哲学家就餐算法的不存在性
对称算法是一类有趣的哲学家就餐问题候选算法。在给定框架下,若所有进程相同,只能通过本地名称 $f(left)$ 和 $f(right)$ 引用可访问的叉子变量,且所有共享变量初始值相同,则该算法为对称算法。
然而,不存在对称的哲学家就餐问题解决方案。下面进行证明:
假设存在一个针对 $n$ 个进程的对称算法 $A$ 。考虑 $A$ 的一个执行 $\alpha$ ,开始时所有进程处于相同的进程状态,所有共享变量具有相同的初始值。执行 $\alpha$ 按“轮询”方式进行,进程按顺序 $1, \cdots, n, 1, \cdots$ 依次执行对应步骤,从每个进程的尝试步骤开始,并且所有非确定性选择的解决方式相同。
通过对轮询“轮数” $r$ 进行归纳,可以证明在 $r$ 轮之后,所有进程再次处于相同状态,所有变量具有相同的值。但根据进度属性,某些进程最终会进入临界区 $C$ ,这意味着所有其他进程也会在同一轮进入 $C$ ,这与互斥属性相矛盾。
例如,有一个简单的对称算法 WrongDP :
- 非正式描述 :每个进程
超级会员免费看
订阅专栏 解锁全文
38

被折叠的 条评论
为什么被折叠?



