2012-08-05 94 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操作。