Spinlock
: ์ก์ผ๋ ค๋ lock์ด avaliable ํด ์ง ๋ ๊น์ง ๊ณ์ ๋ฃจํ๋ฅผ ๋๋ฉฐ ์ง์ ์ ์ฌ์๋ํ๋ค.
์ด๋ฅธ๋ฐ ๋ฐ์๊ฒ ๊ธฐ๋ค๋ฆฌ๋ busy waiting์ ํ ์ข ๋ฅ์ด๋ค.
Busy waiting
: lock์ ์ก๊ธฐ ์ํด ๋ค๋ฅธ ์์ ์ ์ํํ์ง ์๊ณ ๊ณ์ํด์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ.
- Sofrware-only Algorithm
- Peterson's Algorithm
- ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฒ์์ผ๋ก ๊ณ ์๋ ๋ฐฉ๋ฒ
- ์ค์ง ๋๊ฐ์ context๋ง์ด ์กด์ฌํ๋ ์ํฉ์ ๊ฐ์ ํ๋ค.
- ์ ์ญ๋ณ์ flag, turn ์ ์ธ
- flag: critical section์ ๋ค์ด๊ฐ ์ค๋น๊ฐ ๋์๋์ง, flag[0] = true;
- turn: ๋๊ฐ critical section์ ๋ค์ด๊ฐ ์ฐจ๋ก์ธ์ง
- ๋ฌธ์ ์
- ๋๊ฐ์ context๋ง ์กด์ฌํ๋ ์ํฉ์์๋ง ๊ฐ๋ฅ
- atomicํ์ง ์์ ์ํคํ ์ณ์์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ
- Peterson's Algorithm
- Hardware Approaches
- Disabling Interrupts
- ์ธํฐ๋ฝํธ ๋๊ณ ํค๋ ๊ฒ์ instruction์ผ๋ก ๋์ด ์์. -> priviliged instruction์ด๋ฏ๋ก ์ปค๋ ๋ชจ๋์์ ์คํํด์ผ ํจ.
- ์ด์์ฒด์ ํธ์ถ
- ๋ฌธ์ ์
- ์ฑ๊ธ ํ๋ก์ธ์ค์์๋ง ๊ฐ๋ฅ
- ๋ฉํฐ ์ฝ์ด ํ๊ฒฝ์์ ์ ์ฉํ๊ธฐ ํ๋ฌ
- ์ด์์ฒด์ ํธ์ถ์ ๋ํ cost ๋น์ฉ ์ฆ๊ฐ
- ํ๋์จ์ด์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ 2๊ฐ์ง
- Disabling Interrupts
-
-
- Test-And-Set
- Atomic instruction์ ์ ๊ณต. ํ๋์ ๋ช ๋ น์ด๋ก ์ํ.
- ํ๊ฐ์ ์ธ์คํธ๋ญ์ ์ผ๋ก ์๋ก์ด ๊ฐ ์ฐ๊ณ ์๋ ๊ฐ ๋ฆฌํด๋๋ ๊ฒ์ด ํ๋ฒ์ ์ผ์ด๋จ.
- ์์ ํ ๋์์ ๋ค์ด์๋ ํ๋์จ์ด ์์ค์์ ๋จผ์ ๋ค์ด์จ ๊ฒ์ด ๊ฒฐ์ ๋๊ณ ๊ฑ๋ ๋ฌด์กฐ๊ฑด lock์ ์ก๋๋ค.
- ๊ฐ์ด return๋๋ ๊ฒ์ test ๊ฒฐ๊ณผ๋ผ๊ณ ๋ด์ test and set์ธ ๊ฒ์ด๋ค.
- ์๋ ๊ฑฐ๋ฅผ test ํ๋๋ก ๊ฐ์ ธ์ค๊ณ ์๋ก์ด ๊ฐ์ผ๋ก setํด๋ผ.
- Compare-And-Swap
- Atomic instruction์ ์ ๊ณต. ํ๋์ ๋ช ๋ น์ด๋ก ์ํ
- condition์ ์ค์ ์์ํ๋ ๊ฐ์ด๋ฉด ์๋กญ๊ฒ ๋ฐ๊พธ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ๊ฐ returnํด๋ผ.
- Test-And-Set
-
'๐ป > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Synchronization - 3. Spin lock๊ณผ Mutex lock, Mutex์ Semaphore (0) | 2022.12.16 |
---|---|
[์ด์์ฒด์ ] Synchronization - 1 (0) | 2022.12.16 |
[์ด์์ฒด์ ] Real-time System์ด๋? (1) | 2022.12.16 |
CS ์ฐธ๊ณ (0) | 2022.06.12 |
CS50_๋ฐฐ์ด (0) | 2022.06.12 |