2011-04-13 22 views
2

最近我在看书操作系统概念第六章关于临界区问题,在6.2节中,我们知道解决同步问题的算法必须满足三个要求:1。互相排斥2.进步3.有限的等待。 显然,如果一个算法满足第二个要求(Progress),它并不一定意味着该算法由于处理速度或调度问题而满足有界等待。关于考虑临界区问题的三个需求的问题

但是,我的问题是,如果一个算法满足有界等待的要求,那么我们可以从中暗示这个算法是否也满足Progress的要求? 如果不是,条件是什么? 如果是,为什么我们不提出第三个要求,删除第二个要求,因为第三个要求可能包含第二个要求。 顺便说一句,任何人都可以解释第二个和第三个之间的关系(和差异)吗?

回答

4

进步的概念和有限的等待是完全不同的。

有界的等待意味着一个进程最终可以获得锁/互斥量。进度条件意味着流程可以完成其执行。有一种称为live-lock(对应于死锁)的情况,其中两个或多个进程被组织为一个进程组,所有进程都可以获取或释放锁,这满足有界等待,但进程组无法进展(或为什么我们称之为活锁。:-))。

好运和问候

0

的第一个要求是晶莹剔透的,因为Mutal排除的主要目标是......嗯,相互排斥,对不对?

从某种意义上说,第二个要求(进展)是误用。假设一个给定的系统有一堆并发运行的进程,比如说P1,P2,P3,P4和P5,并且它们都没有执行临界区(CS)。最终,在给定的时刻,进程P1,P2和P3变得对同时执行CS感兴趣。在这种情况下,进展要求规定,只有P1,P2和P3有权选择谁进入CS(决不允许P4和P5会影响这样的决定)。顺便说一下,这个要求也决定了这样一个决定不能永久存在,因此它的名字(“进展要求”)我认为这是一个非描述性的术语;“封闭要求”更合适,因为只有感兴趣的过程才有权决定谁将执行CS)。我的理解是,这项要求旨在防止活锁(所有流程都是“相互交流”,“彼此执行,相互交替”)。

第三个要求(有界等待)与第二个要求密切相关。虽然进展要求说有关过程必须在有限的时间内作出决定,但有界等待规则规定任何过程都不得不无限期地等待,从而防止饥饿:在Pn提出进入CS的请求之后,只有一个有限数量的进程可以绕过Pn。鉴于其定义并与第二个相反,这一要求被命名为(有界等待或有时是有界的旁路,如here)。 如果你懂葡萄牙语,在这里不用我发现here定义:

Øprimeiro requisitoéóbvio,兴趣点éØobjetivo本金达solução。 O segundo diz que senãoháprocesso dentro deregiãocríticae existem processos desejando entrar,entãoapenas os processos que desejam entrar participam nadecisãode quem entra e essadecisãonãoé postergada indefinidamente。第三个要求是,希望进入关键区域 的流程不应该无限期地轮流等待;也就是说,当有一些过程 等待进入,应该有对的次数限制,在和 其他进程离开临界区。