# Synchronization Hardware ## Hardware Support - CS問題發生的原因是更改shared data的過程可能被中斷 - 如果在CS,disable interrupts - 在多processor的機器上行不通 - ==clock interrupts==不能fire in any machine - HW support解法:atomic指令 - atomic:原子的,不能被分開、中斷的單元 - 例子 1. TestAndSet(var) 2. Swap(a,b) ### Atomic TestAndSet() 執行==atomically==,回傳lock的值,一律將lock設為TRUE ```C boolean TestAndSet (bool &lock) { bool value = lock ; lock = TRUE ; return value ; } ``` - Mutual exclusion? Yes - Progress? Yes - ==Bounded-Wait? No!==  ### Atomic Swap() - 想法:enter CS if lock==false - key可表示是否想進去 - 多個procress也可以行得通 - ==搶到lock==的人才能進去 - Shared data: boolean lock; //initially lock = FALSE;  - Mutual exclusion? Yes - Progress? Yes - ==Bounded-Wait? No!==
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up