Concurrency Control, ๋ณํ์ ์ด
์๊ณ์์ญ์ด๋?
์๊ณ์์ญ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ด์ฉํ๊ฒ๋ ํด์ฃผ๋ ์์ญ์ด๋ค.
์๊ณ์์ญ ๋ณด์ฅ ์กฐ๊ฑด
์๊ณ์์ญ์ ๋ณด์ฅํด์ฃผ๊ธฐ ์ํด์๋ 3๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํด์ผ ํ๋ค.
1) Mutual exclution
ํ๋์ ํ๋ก์ธ์ค๊ฐ ์๊ณ์์ญ์ ์ง์ ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ง์ ๋ถ๊ฐ
2) Progress
์๊ณ์์ญ์ ์๋ฌด ํ๋ก์ธ์ค๊ฐ ์๋ ์ํ์์ ๋ค์ด๊ฐ๋ ค๋ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ๊ฐ๋ผ๋ฉด ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋ค์ด๊ฐ์ง ๊ฒฐ์ ํด์ค์ผ ํจ.
3) Bounded waiting
๋ค๋ฅธ ํ๋ก์ธ์ค์ starvation ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ฒ ์๊ณ์์ญ์ ๋ค์ด๊ฐ ํ๋ก์ธ์ค๋ ๋ค์๋ฒ์ ๋ค์ด๊ฐ ๋ ์ ํ์ ๋ฌ์ผ ํจ.
Concurrency Control, ๋ณํ ์ ์ด or ํ๋ก์ธ์ค ๋๊ธฐํ ๊ธฐ๋ฒ
์ด ์กฐ๊ฑด์ ์ถฉ์กฑํด์ฃผ๊ธฐ ์ํ ๋ฐฉ๋ฒ, ์ฆ ํ๋ก์ธ์ค์ ๋๊ธฐํ ๊ธฐ๋ฒ์ ์๋์ ๊ฐ๋ค.
1) Semaphores
์ธ๋งํฌ์ด ๋ณ์(S)๋ฅผ ํ๋ ๋๊ณ , ์๊ณ์์ญ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ S๋ฅผ 0์ผ๋ก ๋ฌ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ง์ ์ ๋ง๋๋ค. ์๊ณ์์ญ์์ ๋์ฌ ๋๋ S๋ฅผ 1๋ก ๋๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ง์ ํ ์ ์๊ฒ ํจ.
2) monitor
Semaphores ๋ ๊ตฌํ์ด ๊น๋ค๋ก์์ high-level ์์ค์ผ๋ก ๊ตฌํํ ๋ฐฉ๋ฒ. library, framework ์์ค์์ ์ ๊ณต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ syncrhonized ์ปค๋งจ๋๋ฅผ ์๊ฐํ๋ฉด ๋๋ค.
๊ต์ฐฉ์ํ ํด๊ฒฐ๋ฐฉ๋ฒ
๊ต์ฐฉ์ํ๋?
ํ๋ก์ธ์ค๋ค์ด ์๋๋ฐฉ์ ์์(ํ๋์จ์ด or ์ํํธ์จ์ด)์ ์์ฒญํ์ง๋ง ๋ฐ์ง ๋ชปํ๊ณ ์ ๋ถ block ๋ ์ํ
* ํ๋ก์ธ์ค๋ ์์์ ์์ฒญ > ํ ๋น > ๋ฐ๋ฉ ํ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์นจ.
๊ต์ฐฉ์ํ ๋ฐ์ 4๊ฐ์ง ์กฐ๊ฑด(์ด๋ก ์ ...)
1. Mutual exclusion, ์ํธ๋ฐฐ์
๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์์์ ์ฌ์ฉํ ์ ์์.
2. No preemption (๋น์ ์ )
์์์ ๋นผ์๊ธฐ์ง ์์.
3. Hold and wait (๋ณด์ ๋๊ธฐ)
ํ๋ก์ธ์ค๊ฐ ๋ณด์ ์์์ ๋์ง ์์ผ๋ฉด์ ๋ค๋ฅธ ์์์ ์์ฒญํจ.
4. Circular wait (์ํ๋๊ธฐ)
์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ์ฌ์ด์ ์ฌ์ดํด์ด ํ์ฑ๋จ.
์์ ํ ๋น ๊ทธ๋ํ
๊ต์ฐฉ์ํ๋ ์์ ํ ๋น ๊ทธ๋ํ(Resource-Allocation Graph)๋ฅผ ํตํด ์ ์ ์๋ค. ์์ ํ ๋น ๊ทธ๋ํ๊ฐ ์ฌ์ดํด์ด ์๊ณ resource instance ๊ฐ ํ๋๋ฉด deadlock ์ผ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ์๋ ๊ทธ๋ฆผ์์ ์ผ์ชฝ์ ๋ฐ๋๋ฝ์ด๋ค. ์ค๋ฅธ์ชฝ์ P2๋ฒ ํน์ P4๋ฒ์ด ์์์ ๋ฐ๋ฉํ๋ฉด ๊ต์ฐฉ์ํ๊ฐ ํด๊ฒฐ๋๋ฏ๋ก ๋ฐ๋๋ฝ์ด ์๋๋ค.
๊ต์ฐฉ์ํ ์ฒ๋ฆฌ๋ฐฉ๋ฒ
1. Deadlock Prevention (์๋ฐฉ, ๋ฐฉ์ง)
4๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑ๋์ง ์๋๋ก ๋ฏธ์ฐ์ ๋ฐฉ์ง
- Mutual Exclusion : ์ด ์กฐ๊ฑด์ ๋ฐ๋์ ์ฑ๋ฆฝํด์ผ ํจ.
- Hold and Wait : ํ๋ก์ธ์ค๊ฐ ์์ ์ ๋ชจ๋ ์์์ ํ ๋น๋ฐ๊ฒ ํ๊ฑฐ๋ ์์์ด ํ์ํ ๊ฒฝ์ฐ ๋ณด์ ์์์ ๋ชจ๋ ๋๊ณ ์์ฒญ.
- No Preemption : ์์์ ์ฌ์ฉ ์ํ๋ฅผ save ํ๊ณ restore ํ ์ ์๋ ์์์ ํํด ๋บ์ ์ ์๊ฒ ํจ.
- Circular Wait : ์์ ํ ๋น ์์๋ฅผ ์ ํด์ 1๋ฒ ์์์ ํ๋ํด์ผ๋ง 3๋ฒ ์์์ ํ๋ํ ์ ์๋๋ก ํด์ ์ฌ์ดํด์ด ์๊ธฐ์ง ์๊ฒ ํจ.
๋ฐ๋๋ฝ์ ๋ฏธ๋ฆฌ ์๊ฐํด์ ์ ์ฝ์กฐ๊ฑด์ ๋ฌ์๋๊ธฐ ๋๋ฌธ์ utilization(์์์ด์ฉ๋ฅ ) ์ ํ, throughput(์์คํ ์ฑ๋ฅ) ๊ฐ์, starvation ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
2. Deadlock Avoidance
์์ ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ด์ฉํด ๋ฐ๋๋ฝ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์์ ํ ๋น.
ํ๋ก์ธ์ค๊ฐ ์์๋ ๋ ํ๋ก์ธ์ค๊ฐ ์ธ ์์์ ์ต๋๋(๋ถ๊ฐ์ ๋ณด)์ ๋ฏธ๋ฆฌ ํ์ ํด์ ๋ฐ๋๋ฝ์ ํผํด๊ฐ.
1) ์์ instance ๊ฐ 1๊ฐ ์ผ ๋, ์์ํ ๋น ๊ทธ๋ํ๋ฅผ ์ด์ฉํด์ ๋ฏธ๋ฆฌ ํ์ . ์ ์ ํ์ดํ๋ฅผ ์ถ๊ฐํด์ ๋ฏธ๋์ ์ธ ์ ๋ณด๋ฅผ ํ์ํจ.
์ฆ, ์ต์ ์ ์ํฉ์ ๊ฐ์ ํด์ ๋ฐ๋๋ฝ์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด ์์ ํ ๋น X.
2) ์์ instance ๊ฐ 2๊ฐ ์ด์์ผ ๋, Banker's Algorithm ์ ์ด์ฉํจ.
์ ๊ทธ๋ฆผ์ 5๊ฐ ํ๋ก์ธ์ค๊ฐ ๊ฐ๊ฐ 10๊ฐ, 5๊ฐ, 7๊ฐ์ instance ๋ฅผ ๊ฐ์ง ์์ A, B, C ๋ฅผ ๊ฐ์ง๊ณ ์์ ํ๋ ์ํฉ์ด๋ค. Allocation ์ ํ ๋น ๋ฐ์ ์์, Max ๋ ํ์ ์ฌ์ฉํ ์์์ ์ต๋๋, Avaliable ์ ํ์ฌ ๊ฐ์ฉ๊ฐ๋ฅํ ์์, Need ๋ ์ถ๊ฐ๋ก ์์ฒญํ ์ ์๋ ์์์ ์ ๋ณด๋ค.
๋ง์ฝ P1 ์ด A1, C2 ๊ฐ๋ฅผ ์์ฒญํ๋ค๋ฉด Need ๋ฅผ Avaliable ๋ก ํด๊ฒฐํ ์ ์๋์ง ๋ณด๊ณ ๋๋ค๋ฉด ํ ๋นํจ. ๋ง์ฝ P0์ด B2 ๋ฅผ ์์ฒญํ๋๋ฐ Need ๋ฅผ ๋ณด๋ Avaliable ๋ง์ผ๋ก๋ ํด๊ฒฐํ ์ ์์ผ๋ฏ๋ก ํ ๋น x.
์ด์ฒ๋ผ Banker's Algorithm ์ ํด๋น ์์ ์์๋ ์ดํ ๋ฐํํ๋ ๊ฒ์ ๊ณ์ฐํ์ง ์๊ณ , ์์ฒญํ๋ ์๊ฐ ์ต๋ Need ๋ฅผ Avaliable ์์์ผ๋ก ํด๊ฒฐํ ์ ์๋๊ฐ๋ง ๋ด. ๋จ Allocation ์์ Max ๋ฅผ ์ถฉ์กฑํ๋ค๋ฉด ์ดํ ๋ฐํํ ๊ฒ์ Avalicable ์ ๋ฐ์ํ๊ณ ๊ณ์ฐํจ.
ํน์ ๋ชจ๋ฅด๋ ์ํฉ์ ๋๋น์ ๋จ์๋๋ ์์์ ์ด์ฉํ์ง ์์ผ๋ฏ๋ก ๋นํจ์จ์ ์ธ ๋ฐฉ๋ฒ.
3. Deadlock Detection and recovery
๋ฐ๋๋ฝ ๋ฐ์ ํ์ฉํ๋ ๋ฐ๋๋ฝ detection ๋ฃจํด์ ๋ง๋ค๊ณ ๋ฐ๊ฒฌ์ recover
๋ฐ๋๋ฝ์ ์์ฃผ ๋ฐ์ํ์ง ์๋๋ฐ ๊ทธ๊ฒ์ ๋ฐฉ์งํ๋ ค๊ณ ์์ ๊ฐ์ฉ๋ฅ ์ ๋ฎ์ถ๋ ๊ฑด ๋นํจ์จ์ ์ด๋ฏ๋ก ๋ฐ์ํ์ ๋ ํด๊ฒฐ.
์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ํ ์ด๋ธ์ ์ด์ฉํจ.
- ์์ ํ ๋น ๊ทธ๋ํ
์ฌ๊ธฐ์๋ ์์ ์ต๋ ์ฌ์ฉ๋์ ๋ฏธ๋ฆฌ ์ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ ์ ์ด ์์.
๊ทธ๋ํ์์ ์ฌ์ดํด์ด ์๊ฒผ๋์ง ์ฃผ๊ธฐ์ ์ผ๋ก detection ํจ.
- ํ ์ด๋ธ ์ด์ฉ
- recover
1) ๋ฐ๋๋ฝ์ ์ฐ๋ฃจ๋ ํ๋ก์ธ์ค๋ฅผ ํ๊บผ๋ฒ์ ์ฃฝ์ด๊ฑฐ๋ ํ๋์ฉ ์ฃฝ์.
2) ๋ฐ๋๋ฝ์ ์ฐ๋ฃจ๋ ํ๋ก์ธ์ค ์ค ํ๋์ ์์์ ๋บ์. ์์์ ๋บ๋ ํจํด์ ๋งค๋ฒ ๋ฌ๋ผ์ ธ์ผํ ํ์๊ฐ ์์.
4. Deadlock Ignorance
ํ๋ OS ๊ฐ ์ฑํ. ์์คํ ์ด ์ฑ ์์ง์ง ์์.