最近我正在阅读关于关键部分问题的操作系统概念第六章,在第6.2节中,我们知道解决同步问题的算法必须满足三个要求:1。互斥2 。进步3.Bounded Waiting。 显然,如果算法满足第二个要求(进度),则由于进程速度或调度问题,并不一定意味着该算法满足有界等待算法。
但是,我的问题是,如果算法满足有界等待要求,我们可以从中暗示这个算法是否也满足进度要求? 如果不是,那条件是什么? 如果是的话,为什么我们不仅仅提出第三个要求并删除第二个要求,因为第三个要求可能意味着第二个要求。 顺便说一下,任何人都可以解释第二个和第三个之间的关系(和差异)吗?
答案 0 :(得分:5)
进步的概念和有限的等待是完全不同的。
有限等待意味着一个进程最终可以获得锁/互斥锁。进度条件意味着该过程可以完成其执行。存在一种称为活锁(对应于死锁)的情况,其中两个或多个进程被组织为进程组,所有进程都可以获取或释放锁,这满足有界等待,但进程组无法进行(或为什么我们称之为实时锁定。: - ))。
祝你好运和问候
答案 1 :(得分:1)
第一个要求非常明确,因为Mutal Exclusion的主要目标是...... Hum,相互排斥,对吗?
第二个要求(进步)在某种意义上是用词不当。假设给定系统有一堆并发运行的进程,比如P1,P2,P3,P4和P5,它们都没有执行临界区(CS)。最终,在给定时刻,过程P1,P2和P3变得对同时执行CS感兴趣。在这种情况下,进度要求规定只有P1,P2和P3有权在他们自己之间进行选择,谁将进入CS(绝不允许P4和P5影响这样的决定)。顺便说一下,这个要求也决定了这样的决定不能永远,因此它的名称(“进度要求”。我认为这是一个非描述性术语;“封闭要求”更合适,因为只有感兴趣的流程才有权获得决定谁将执行CS)。我的理解是,这个要求旨在防止实时锁定(所有进程都说“请,执行,轮到你了”)。
第三个要求(有界等待)与第二个要求密切相关。虽然进度要求说有兴趣的过程必须在有限的时间内做出决定,但是有界等待规则没有过程必须无限期地等待,因此防止饥饿:在Pn请求进入CS之后,只有有限数量的进程可以绕过Pn。鉴于其定义并与第二个定义相反,这个要求被极其命名(有界等待或有时,有界绕过看见here)。 如果您了解葡萄牙语,我会找到here:
的定义O primeirorequisitoéóbvio,poiséoobjetivo principaldasolução。 O segundo diz que senãoháprocessodentroderegiãocríticaeexistem processos desejando entrar,entãapenasos processos que desejam entrar participamnocisisãodequem entra eessadecisãonãoé postergada indefinidamente。 O terceiro requisito diz que um processo que deseja entrarnaregião críticanãodeveesperar indefinidamente por sua vez; istoé,quando existe algum processo esperando para entrar,deve haver um limitenonúmerodevezes que outros processos entram e saem desuasregiõescríticas。