今天我正在阅读有关同步的内容。在阅读Peterson solution关键部分问题是基于软件的解决方案后,我有点困惑。 现在我的问题是:它是什么意思“基于软件的解决方案”?
答案 0 :(得分:3)
要解决关键部分的问题并实施互斥,有以下几种方法:
首先是基于软件的解决方案此解决方案基于Peterson algorithm,Dekker's algorithm和Lamport's bakery algorithm等算法(针对多个流程)来保护关键部分。这些解决方案仅假设存储器访问级别的基本互斥。除此之外,不支持硬件,操作系统或编程语言
软件approches的主要问题是它们的高进程开销和逻辑错误的风险(基于Stallings的操作系统内部)
除了软件解决方案,我们还提供了Interrupt disabling,Compare&Swap instruction和Exchange指令等硬件解决方案。这些解决方案采用忙碌的等待,并且存在饥饿和死锁的可能性。
实施互斥的另一个范例是使用信号量和监视器,它们是由操作系统和编程语言实现的机制。
答案 1 :(得分:0)
基于软件的解决方案:
1)基于软件的解决方案,从某种意义上说,它们所依赖的硬件的唯一特征是,如果两个进程试图将值存储在同一个存储单元中,那么硬件将保证最终的值将是与两者中的一个所写的相同,但是关于订单没有任何保证。2)在软件解决方案中,我们不能保证变量在给定进程查看它的时间和它自己尝试更改它的时间之间不会被改变。这是因为检查值和更改值通常需要两个或更多机器指令,可能存在中断(在单处理器上)或来自另一个处理器的访问干预。这增加了解决方案的复杂性。
基于硬件的解决方案:
1)这里制定了特殊的硬件规定,使得所执行的操作是原子的(作为单个操作)。
2)许多处理器都有一条指令,用于在单个原子操作中测试和修改存储器中的位置,这样在检查位置的时间和修改位置之间就不会有其他操作干预。 例如,Intel IA32具有交换寄存器和存储器位置的XCHG操作。