临界区问题


临界区是一段代码段,其中可以访问共享变量。临界区需要原子操作,即一次只有一个进程可以在其临界区执行。所有其他进程都必须等待才能在其临界区执行。

下图展示了临界区的示意图:

 Critical Section.png

在上图中,入口段处理进入临界区。它获取进程执行所需的资源。出口段处理退出临界区。它释放资源,并通知其他进程临界区已释放。

临界区问题的解决方案

临界区问题需要一个解决方案来同步不同的进程。临界区问题的解决方案必须满足以下条件:

  • 互斥

    互斥意味着任何时候只有一个进程可以在临界区内。如果任何其他进程需要临界区,则它们必须等待直到临界区空闲。

  • 进展

    进展意味着如果一个进程没有使用临界区,那么它不应该阻止任何其他进程访问它。换句话说,任何进程如果临界区空闲,都可以进入临界区。

  • 有界等待

    有界等待意味着每个进程都必须有有限的等待时间。它不应该无限期地等待访问临界区。

更新于:2020年1月31日

82K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告