Mutual Exclusion Solutions (SW & HW)
SW Solutions
Dekker's Algorithm
โ Two process ME๋ฅผ ๋ณด์ฅํ๋ ์ต์ด์ ์๊ณ ๋ฆฌ์ฆ
โ flag์ turn ๋๋ค ํ์ฉ
Petersen's Algorithm
โ dekker's algorithm ๋ณด๋ค ๊ฐ๋จํ๊ฒ ๊ตฌํ
N-Process Mutual Exclusion
โ ๋ค์ต์คํธ๋ผ(Dijkstra)
- ์ต์ด๋ก ํ๋ก์ธ์ค n๊ฐ์ ์ํธ๋ฐฐ์ ๋ฌธ์ ๋ฅผ ์ํํธ์จ์ด์ ์ผ๋ก ํด๊ฒฐ
- ์คํ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ ํ ๋นํ๋ ์ธ๋งํฌ ๋ฐฉ๋ฒ, ๊ฐ์ฅ ์งง์ ํ๊ท ๋๊ธฐ์๊ฐ ์ ๊ณต
โ ํฌ๋์ค(Knuth)
โ ๋จํฌํธ(lamport)
โ ํธ์จ(brinch Hansen)
Dijkstra's Algorithm
โ Dijkstra ์๊ณ ๋ฆฌ์ฆ์ flag[] ๋ณ์
โ 3๊ฐ์ ๊ฒฝ์ฐ๋ก ๋๋ ์ ์ ๊ทผ
โ 1๋จ๊ณ์์ ์ง์ ์์ฌ ํ์ ํ turn ํ์ธํ๋ฉด์ ๋๊ธฐ
โ 2๋จ๊ณ์์ in-CS์ ํผ์ ๋จ์ ๋๊น์ง loop
SW solutions์ ๋ฌธ์ ์
โ ์๋๊ฐ ๋๋ฆผ
โ ๊ตฌํ์ด ๋ณต์ก
โ ME primptive ์คํ ์ค preemption ๋ ์ ์๋ค.
- ๊ณต์ ๋ฐ์ดํฐ ์์ ์ค์ interrupt ์ต์ ๋ฅผ ํตํด ํด๊ฒฐ ๊ฐ๋ฅ(overhead)
โ Busy Waiting
HW solution
Synchronization Hardware
โ TestAndSet(TAS) instruction
- Test์ Set์ ํ๋ฒ์ ์ํํ๋ ๊ธฐ๊ณ์ด
- Machine instruction
- ์คํ ์ค interrupt x (preemption ๋์ง ์๋๋ค)
- Busy waiting
TAS instruction
โ target์ ํ์ฌ๊ฐ ๋ฐํํ๋ฉด์ target์ true๋ก ๋ณ๊ฒฝ
โ ํ๋ฒ์ ์ํ
ME with TAS instruction
โ ๊ทธ๋ฌ๋ 3๊ฐ ์ด์์ ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ, bounded waiting ์กฐ๊ฑด ์๋ฐฐ
- ์์์ ๋ฐ๋ผ์ ์ด๋ค ํ๋ก์ธ์ค๋ ๊ณ์ ๋ชป๋ค์ด๊ฐ ์ ์๋ค
โ N-Process mutual exclusion
โ waiting์ ํ์ฉํด ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ํ์
HW solution์ ์ฅ๋จ์
โ ์ฅ์ : ๊ตฌํ์ด ๊ฐ๋จํ๋ค
โ ๋จ์ : Busy waiting
โ Semaphore: OS๋ฅผ ํ์ฉํด busy waiting ๋ฌธ์ ํด๊ฒฐ
'โญ Group_Study > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[3์ฃผ์ฐจ] Mutual Exclusion Solutions (Language-Level solution) (0) | 2022.12.21 |
---|---|
[3์ฃผ์ฐจ] Mutual Exclusion Solutions (OS supported SW solution) (0) | 2022.12.18 |
[3์ฃผ์ฐจ] Process Synchronization and Mutual Exclusion (0) | 2022.12.16 |
[2์ฃผ์ฐจ] Scheduling Algorithms (0) | 2022.12.14 |
[2์ฃผ์ฐจ] Process Scheduling (0) | 2022.12.13 |
๋๊ธ