2012-08-05 116 views
3

今天我正在阅读关于同步。我有点困惑阅读了Peterson solution的关键部分问题是一个基于软件的解决方案之后。 现在我的问题是:“基于软件的解决方案”是什么意思?Peterson的关键部分解决方案是基于软件的解决方案 - 这意味着什么?

+0

一些同步方法需要的硬件支持,例如原子指令,而这看起来似乎是不需要硬件支持的解决方案,即仅用于软件的解决方案。 – 2012-08-05 08:07:49

回答

3

要解决关键部分的问题并强制互斥,有几种方法:

首先是基于软件的解决方案。该解决方案基于像Peterson algorithmDekker's algorithmLamport's bakery algorithm(超过一个过程)算法来保护关键部分。这些解决方案在内存访问级别只假设基本的互斥。除此之外,硬件上不支持,操作系统或编程语言被假定。
的主要问题软件approches是它们的开销高的过程和逻辑错误的风险(根据斯托林操作系统内部)

除了软件解决方案,我们也有硬件解决方案,如Interrupt disablingCompare&Swap instruction交易指令。这些解决方案都在忙着等待,并有可能发生饥饿和僵局。

另一个范例执行互斥是使用信号灯和监控器,它们是由操作系统和编程语言实现的机制。

0

基于软件的解决方案:

1)基于Sofware的解决方案,在这个意义上,它们依赖于硬件的唯一特性是,如果两个过程尝试存储在相同的存储单元中的值,则硬件将保证最终的价值将与二者之一所写的相同,尽管关于订单没有保证。

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

基于硬件的解决方案:

1)在此特殊的硬件规定制成为使得所执行的操作是原子(作为单操作)。 2)许多处理器都有一条指令,它在单个原子操作中测试和修改内存中的某个位置,使得在检查位置和修改位置之间不会有其他操作干预。 例如,Intel IA32具有交换寄存器和内存位置的XCHG操作。