Peterson的临界区解决方案是一种基于软件的解决方案 - 这意味着什么?

3
今天我在阅读有关同步的内容。读完 Peterson解决方案 后,我有点困惑,因为它是一种基于软件的解决方案。 现在我的问题是:什么是“基于软件的解决方案”?

一些同步方法需要硬件支持,例如原子指令,而这似乎是一种不需要硬件支持的解决方案,即仅基于软件的解决方案。 - Paul R
2个回答

3
为解决关键区问题并强制互斥,有以下几种方法:

第一种是软件解决方案。这些解决方案基于算法,如Peterson算法Dekker算法Lamport面包店算法(对于多个进程)来保护关键部分。这些解决方案只假定在内存访问级别上存在基本的互斥性。除此之外,不假设硬件、操作系统或编程语言有任何支持。
软件方法的主要问题是它们的高进程开销和逻辑错误的风险(基于Stallings的操作系统内部)。

除了软件解决方案,我们还有硬件解决方案,如中断禁用比较与交换指令和交换指令。这些解决方案采用忙等待方式,存在饥饿和死锁的可能性。

强制互斥的另一种范例是使用信号量和监视器,它们是由操作系统和编程语言实现的机制。


0

基于软件的解决方案:

1) 基于软件的解决方案,指的是它们所依赖的硬件特性仅限于如果两个进程尝试将一个值存储在同一内存单元中,则硬件将保证最终值与其中一个写入的值相同,但关于顺序则没有任何保证。

2) 在软件解决方案中,我们无法保证变量在给定进程查看它和自身尝试更改它之间不会被更改。这是因为检查值和更改值通常需要两个或多个机器指令,并可能会有中断(在单处理器上)或来自另一个处理器的访问干扰。这增加了解决方案的复杂性。

基于硬件的解决方案:

1) 这里提供了特殊的硬件支持,以使执行的操作是原子的(作为单个操作)。

2) 许多处理器都有一条指令,可以在单个原子操作中测试和修改内存中的位置,以使在检查位置和修改位置之间没有其他操作可以干扰。例如,Intel IA32具有交换寄存器和内存位置的XCHG操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接