临界区问题
临界区是一段代码段,其中可以访问共享变量。临界区需要原子操作,即一次只有一个进程可以在其临界区执行。所有其他进程都必须等待才能在其临界区执行。
下图展示了临界区的示意图:
在上图中,入口段处理进入临界区。它获取进程执行所需的资源。出口段处理退出临界区。它释放资源,并通知其他进程临界区已释放。
临界区问题的解决方案
临界区问题需要一个解决方案来同步不同的进程。临界区问题的解决方案必须满足以下条件:
- 互斥
互斥意味着任何时候只有一个进程可以在临界区内。如果任何其他进程需要临界区,则它们必须等待直到临界区空闲。
- 进展
进展意味着如果一个进程没有使用临界区,那么它不应该阻止任何其他进程访问它。换句话说,任何进程如果临界区空闲,都可以进入临界区。
- 有界等待
有界等待意味着每个进程都必须有有限的等待时间。它不应该无限期地等待访问临界区。
广告