๐ Race Condition
@0418
- ๋ณํ์ฒ๋ฆฌ Concurrent Processing์ ๊ฒฝ์์ํฉRace Condition
- ๋ณํ์ฒ๋ฆฌ
- ํ๋์ CPU๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์กฐ๊ธ์ฉ ๋ฒ๊ฐ์ ์ฒ๋ฆฌ
- ๊ฑฐ์์ ๊ด์ ์์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๋ ํจ๊ณผ
- ์ด๋ ์๊ฐ์ ๋ณด๋ฉด ์ค์ง ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ฒ๋ฆฌ๋์ง๋ง, ๊ณต์ ๋ณ์๋ฅผ ์ ๊ทผํ๋ค๋ฉด ๊ฒฝ์์ํฉ์ด ๋ฐ์ํ ์ โ์์โ = ๋ฌด์กฐ๊ฑด ๋ฐ์์ด ์๋ (๋ณ๋ ฌ์ฒ๋ฆฌ๋ณด๋ค๋ ๋น๋๊ฐ ๋ฎ์, ์์ผ ์๋ ์์)
- ๋ณํ์ฒ๋ฆฌ
- ๋ณ๋ ฌ์ฒ๋ฆฌ Parallel Processing์ ๊ฒฝ์์ํฉ
- ๋ณ๋ ฌ์ฒ๋ฆฌ
- ๋ค์์ CPU๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌ
- ์ด๋ ์๊ฐ์ ๋ณด๋ฉด ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ค์ด ์ฒ๋ฆฌ
- ๊ณต์ ๋ณ์๋ฅผ ์ ๊ทผํ๋ค๋ฉด ๊ฒฝ์์ํฉ์ด ๋์ฑ ์ฌํ๊ฒ ๋ฐ์ํ ์ โ์์โ = ๋ฌด์กฐ๊ฑด ๋ฐ์์ด ์๋ (๊ทผ๋ฐ ๋ณํ์ฒ๋ฆฌ๋ณด๋ค๋ ๋น๋๊ฐ ๋์, ์์ผ ์๋ ์์)
- ๋ณ๋ ฌ์ฒ๋ฆฌ
- ์๊ณ์์ญ Critical Section
- ๊ฒฝ์์ํฉ์ด ๋ฐ์๋์ด ์ฒ๋ฆฌ์ ์ค๋ฅ๋ฅผ ์ผ์ผํฌ ์ ์๋ ๋ถ๋ถ
- ์ํธ๋ฐฐ์
- ์๊ณ ์์ญ์์๋ ์ค์ง ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ง์ ํ ์ ์ดใ ๋๋กํจ
- ์ํธ๋ฐฐ์ ๋ ์ ๊ธ Looking ์ฅ์น์ ์ฑ์ UnLock ์ฅ์น๋ก ์คํ
- ํ๋ก๊ทธ๋จ ๋๊ธฐํ Process Synchronization
- ์๊ณ ์์ญ์ ์ค์ ํ๊ณ ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด ๊ตฌ๋ถ์๋ค๊ฐ ์ํธ๋ฐฐ์ ์์น๋ฅผ ์ ์ค์น
- ์ํธ๋ฐฐ์ ์ ์ฐจ (์ ๊ธ๊ณผ ํด์ ์ฅ์น)์ ์กฐ๊ฑด
- ๊ณ์ ์งํ
- ์๊ณ ์์ญ์ ์ง์ ํ ํ๋ก์ธ์ค๊ฐ ์์ ๋๋ ์ํ๋ ํ๋ก์ธ์ค๊ฐ ๊ณง๋ฐ๋ก ์ง์ ํ ์ ์์ด์ผํจ
- ํญํธ ๋ฐฐ์
- ์๊ณ ์์ญ์ ์ง์ ํ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ์ง์ ์ ๋ถํ๋์ด์ผ ํจ
- ๋๊ธฐ ํ์
- ์๊ณ ์์ญ ์ง์ ์ ์ํ๋ ํ๋ก์ธ์ค๋ค์ ๋๋คํ๊ณ ๊ณตํํ๊ฒ ์ง์ ํ ์ ์๋ ๊ธฐํ๊ฐ ์ฃผ์ด์ ธ์ผ ํจ
- ๊ณ์ ์งํ
- ์ํธ๋ฐฐ์ ์ ๊ตฌํ ๋ฐฉ๋ฒ
- ์์ ํ SW๋ก๋ง ๊ตฌํํ๋ ๋ฐฉ๋ฒ
- HW์ ์ง์์ ๋ฐ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
@0420
๋ฏธ์์ฑ SW ์ํธ๋ฐฐ์ ์๋๋ค
- ๊ณตํต ๊น๋ฐ ์ฒดํฌ ๋ฐฉ๋ฒ
- whilie(flag == 1); flag = 1;
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ผ๋ ๊ฑฐ์ ๋์์ ์ง์ ํ๋ฉด ๊ฒฝ์์ํฉ ๋ฐ์ ๊ฐ๋ฅ
- ๋ณํ ์ฒ๋ฆฌ์ผ๋ ํ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ ์ดํ flag = 1; ์ฒ๋ฆฌ ์ง์ , ์ฃผ๋๊ถ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๊ณ , ํด๋น ํ๋ก์ธ์ค์์๋ flag = 0; ์ฒ๋ฆฌ ์ง์ , ์ฃผ๋๊ถ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋์ด๊ฐ๋ฉด ๊ฒฝ์์ํฉ ๋ฐ์ ๊ฐ๋ฅ (๊ณต์ ๋ณ์๊ฐ ๋ฎ์ด์์์ง๋)
- ์๊ธฐ ๊น๋ฐ ํ์ ๋ฐฉ๋ฒ
- while(flag[1] == 1); flag[0] = 1;
- ๊ณตํต ๊น๋ฐ ์ฒดํฌ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ
- flag[0] = 1; while(flag[1] == 1);
- ์ฐจ๋ก์งํค๊ธฐ ๋ฐฉ๋ฒ
- ๋์์๋ ๋ชป๋ค์ด๊ฐ
- ๊ทผ๋ฐ ์๊ธฐ ์ฐจ๋ก๊ฐ ์๋๋ฉด ๊ณตํ์ ํ๋ ๊ฒฝ์ฐ +> ๊ณ์ ์งํ X
@0504
- Spin Lock ์คํ ๋ก (if then else white, TAS SAWP, ๋น๊ธ๋น๊ธ ๋๋ค - CPU๋ฅผ ์ด๋ค)
- ์์์ ์ ์๋ SW ๋ฐ HW ์ํธ๋ฐฐ์ ๊ธฐ๋ฒ๋ค์ ๋ชจ๋ ๋ฐ์ ๋๊ธฐ ๊ธฐ๋ฐ์ ์ ๊ธ์ฅ์น๋ค์ โ ์คํ๋ก
- ์ด๋ฐ ๋ฐฉ๋ฒ๋ค์ ๋์ ๋ฐ๋ผ CPU ๋ญ๋น๊ฐ ์ฌํ๊ณ ์๊ณ ์์ญ์ ์ง์ ํ ํ๋ก์ธ์ค๊ฐ ๋น์ ์์ ์ผ๋ก ํ๋ํ๋ฉด ํ๊ธํจ๊ณผ๊ฐ ํผ
- ๋ฐ๋ผ์ ๋ณด๋ค ํธ๋ฆฌํ๊ณ ๋ณดํธ์ ์ธ ๊ฐ๋ ์ ์ ๊ธ์ฅ์น๊ฐ ํ์ โ ์ธ๋งํฌ
- ์ธ๋งํฌ (๋น๊ธ๋น๊ธ ๋์ง ์๊ณ ๋๊ธฐ)
- S ์ด์
- P(S) ์ด์ ๋ฅผ ๊ฐ์ ธ๊ฐ๋ ์ฐ์ฐ (์ด์ -= 1)
- P(S) ์ฐ์ฐ ์ ์ด์ ๊ฐ ์์ผ๋ฉด (์ด์ == 0) ๋๊ธฐ โ OS๊ฐ ์ฒ๋ฆฌ
- V(S) ์ด์ ๋ฅผ ๋๋ ค๋๋ ์ฐ์ฐ (์ด์ += 1)
- ์ด์ง ์ธ๋งํฌ์ ์นด์ดํ
์ธ๋งํฌ
- ์ด์ง ์ธ๋งํฌ : ์ฃผ๋ก ์ํธ๋ฐฐ์ฌ ์ฉ์ผ๋ก, ๋ฐ์ ๋ง์ถ๊ธฐ
- ์ธ๋งํฌ ๋ณ์ S๋ฅผ 0 or 1๋ก ์ด๊ธฐํํ๊ณ 0 or 1 ์ด์ธ์ ๊ฐ์ ์ฌ์ฉ์น ์๋ ๊ฒฝ์ฐ
- 1๋ก ์ด๊ธฐํ ์ ์ํธ ๋ฐฐ์ฌ, 0์ผ๋ก ์ด๊ธฐํ ์ ๋ณด์กฐ๋๊ธฐํ์ฉ์ผ๋ก ์ฌ์ฉ๋จ
- While(1) P(S) โฆ (V), V(S) P(S), V(S) ์ดํ ๊ธฐ๋ค๋ ธ๋ค๊ฐ P(S) ํ๋
- ์นด์ดํ
์ธ๋งํฌ : ๋ฐ์ ๋ง์ถ๊ธฐ, ๋ฆฌ์์ค ์นด์ดํ
- ๊ธฐ๋ฅ์ ๋๊ฐ์ ๋ฐ 1 ์ด์์ ๊ฐ์ ์ฌ์ฉํ๋
- S๋ฅผ Buffer ๊ฐ์๋ก ์๊ฐ, ๊ฐ์ ธ๊ฐ ๋ P(S)
- ์ S -= 1 ์ผ๋ฐ ์ฐ์ฐ ์์ ? โ ์ด๊ฑฐ ์์ฒด๊ฐ ์๊ณ ์์ญ
- ์ด์ง ์ธ๋งํฌ : ์ฃผ๋ก ์ํธ๋ฐฐ์ฌ ์ฉ์ผ๋ก, ๋ฐ์ ๋ง์ถ๊ธฐ
- ์์ฐ์-์๋น์ ๋ฌธ์ Producer-Consumer Problem
- ๊ฐ๋
- ํ ์ชฝ ํ๋ก์ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์์ฐํ์ฌ ์ ๋ฌํ๊ณ , ๋ค๋ฅธ ํ ์ชฝ ํ๋ก์ธ์ค๋ ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์๋ชจํจ
- E Empty, F Full, M Mutual Exclusion (์ํธ๋ฐฐ์ฌ์ฉ = ์ด์ ?)
- I.E. Circular Queue ์ ํ ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ํ ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋
- ์๋น์ (P(F), P(M), F ํ๋ ์ฑ์, 0์ด๋ฉด ๋๊ธฐ, V(M), V(F))
- ์์ฐ์ (P(E), P(M), E ํ๋ ์ฑ์, 0์ด๋ฉด ๋๊ธฐ, V(M), V(E))
- I.E. ๋ฐ์ ๋ง์ถ๊ธฐ
- ์๋น์ While P(S) Process(Data)
- ์์ฐ์ While GetData() V(S)
- ๊ฐ๋
- Dining Philosophers Problem ์์ฌํ๋ ์ฒ ํ์๋ค ๋ฌธ์
- ๊ฐ๋
- ์ ๊ธ (์ธ๋งํฌ)์ด ํด์ฌ๋๊ธฐ๋ฅผ ์์ํ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ, ์ฆ, ๊ต์ฐฉ ์ํ๋ฅผ ์ดํ๋ณด๋ ์์ง์ ๋ฌธ์
- ๊ฐ๋
- ๋ชจ๋ํฐ์ ๊ฐ๋
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ค์์ ์ ๊ณต๋๋ ๊ณ ์์ค ์ํธ๋ฐฐ์ฌ ์ฅ์น
- ํจ์(์๋ธ๋ฃจํด, ๋ฉ์๋) ํํ๋ก ๊ตฌ๋ถ๋ ์๊ณ ์์ญ๋ค์ ๋ชจ์
- ๋ชจ๋ํฐ ๋ด์์๋ ์ค๋ก์ง ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์ง์ ๊ฐ๋ฅ
- ๋ชจ๋ํฐ๋ ๊ณ ์ ์ ์๋ณ ์ด๋ฆ์ ๊ฐ์ง
- ์ธ๋งํฌ์ ์๋ชป๋ ์ฌ์ฉ์ ๋ฐ๋ฅธ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ๊ฐ์
- @ ์์๋ฑ์ผ๋ก ํ ๋๋ง ๋ค์ด๊ฐ๋๋ก ๊ฐ์
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ค์์ ์ ๊ณต๋๋ ๊ณ ์์ค ์ํธ๋ฐฐ์ฌ ์ฅ์น
- ๋ชจ๋ํฐ์ ๋ด๋ถ(์กฐ๊ฑด) ํ
- ๋ชจ๋ํ ์ง์ ํ ํ๋ก์ธ์ค๊ฐ ์๊ฐ์ด๋ ์์์ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ์ ์ ์คํ์ ์ ๋ณดํด์ผ ํ๋ ์ํฉ
- ํด๋น ํ๋ก์ธ์ค๋ ๋ชจ๋ํฐ ์ ๊ธ ์ฅ์น๋ฅผ ํด์ ํ๊ณ ์์ ์ ๋ด๋ถ ํ์์ ๋๊ธฐ
- ๋ค๋ฅธ ในํ๋ก์ธ์ค๊ฐ ๋ชจ๋ํฐ์ ์ง์ ํ์ฌ ์ฒ๋ฆฌ๋ฅด ๋ง์น๊ณ ๋๊ฐ๋ฉด์, ํ์ํ ๊ฒฝ์ฐ ๋ด๋ถ ํ์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค์๊ฒ ์ ๊ธ์ ์ธ๊ณ โ ๋๊ธฐ ์ค์ด๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ํฐ ๋ด์์ ์คํ์ ์ ๊ฐ
- ์๋ฐ ๋ชจ๋ํฐ
- ์๋ฐ๋ ๊ฐ์ฒด ๋จ์๋ก ๋ชจ๋ํฐ๋ฅผ ํ์ฑ
- ํด๋น ๋ชจ๋ํฐ์๋ synchronized ๋ฉ์๋๋ค๋ง ํฌํจํจ
@0509
- ๊ต์ฐฉ ์ํ Deadlocks
- ๊ณ ์ฅ๋ ์ข๋ฌผ์ โ ๋๊ฐ์ง๋ ๋ชปํ๊ณ ๋์ค์ง๋ ๋ชปํจ
- ์งํด์๋ โ ์์ํ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ
- ์ฃผ์ ์์ธ : ๊ณ ์ฅ์ด๋ ๊ธฐํ ์ด์ ๋ก ์ธํ ์์์ ๋ถ์กฑ
- ์ปดํจํฐ ์์์ ์ ํ
- HW ์์๊ณผ SW ์์
- ์ ์ ๊ฐ๋ฅํ ์์๊ณผ ์ ์ ๋ถ๊ฐ๋ฅ ์์
- ๊ณต์ ๊ฐ๋ฅ ์์๊ณผ ๋ฐฐํ์ ์ฌ์ฉ ์์
- ์ปดํจํฐ์ ์์ ๊ด๋ฆฌ ๋ชจ๋ธ
- ์์ฒญ โ ์ฌ์ฉ โ ๋ฐ๋ฉ (๋ฌต์์ , ๋ช
์์ )
- ํ๋ก์ธ์ค๋ค์ OS์๊ฒ ํ์ํ ์์์ ์์ฒญ
- ์ง์ ์์ฒญ์ ์์คํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง
- ์ ๋์ค/๋ฆฌ๋ ์ค์ ๋ํ์ ์ธ ์์ ์์ฒญ ์์คํ ์ฝ์ open(), ์์ ๋ฐ๋ฉ ์์คํ ์ฝ์ close()
- ์์ฒญ โ ์ฌ์ฉ โ ๋ฐ๋ฉ (๋ฌต์์ , ๋ช
์์ )
- ๊ต์ฐฉ ์ํ์ ํ์์กฐ๊ฑด
- ์์์ ๋ฐฐํ์ ์ฌ์ฉ Mutual Exclusion
- ์์์ ์ ์ ๋๊ธฐ Hole & Wait
- ์์์ ๋ถ๋ถ ํ ๋น Partial Allocation
- ์์ ๋น์ ์ No Preemption
- ์์์ ๋ํ ํํ ๋๊ธฐ Circular Wait
- ์์ ํ ๋น ๊ทธ๋ํ RAH Resource Allocation Graph๋ก ํ๋ณ ๊ฐ๋ฅ
- ๊ต์ฐฉ ์ํ ๋์ ๋ฐฉ์
- ๊ต์ฐฉ ์ํ ์๋ฐฉ Prevention
- ๊ต์ฐฉ ์ํ์ ํ์์กฐ๊ฑด ์ค ํ๋๊ฐ ์ฑ๋ฆฝํ์ง ์๋ ํ ๋น์ ์ฑ ๋์
- ๊ต์ฐฉ ์ํ ํํผ Avoidance
- ์์์ ํ ๋นํ๋ฉด์ ๊ต์ฐฉ ์ํ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด ์ถ๊ฐ ํ ๋น ๋ณด๋ฅ
- ๊ต์ฐฉ ์ํ ํ์ง ๋ฐ ๋ณต๊ตฌ Detection & Recovery
- ๊ต์ฐฉ ์ํ ๋ฐฉ์น Donโt Care
- ๊ต์ฐฉ ์ํ ์๋ฐฉ Prevention
@0511
- ๊ต์ฐฉ ์ํ ์๋ฐฉ Prevention
- ๊ต์ฐฉ ์ํ์ ํ์์กฐ๊ฑด ์ค ํ๋๊ฐ ์ฑ๋ฆฝํ์ง ์๋ ํ ๋น์ ์ฑ ๋์
- ์์์ ๋ฐฐํ์ ์ฌ์ฉ ์กฐ๊ฑด ์ ๊ฑฐ
- ์ปดํจํฐ ์์์ ๋๋ถ๋ถ์ ๋ฐฐํ์ ์ผ๋ก ์ฌ์ฉ๋์ด์ผํจ, ๋์ ๋ถ๊ฐ
- ์์์ ์ ์ ๋๊ธฐ ์กฐ๊ฑด ์ ๊ฑฐ
- ์ฌ์ฉํ ์์ ์ ์ฒด๋ฅผ ํ๊บผ๋ฒ์ ํ ๋นํ ์ ์์ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
- ์ฌ๋ฌ ์ข ๋ฅ์ ์์์ด ํ์ํ ํ๋ก์ธ์ค์ ๊ธฐ์ ์ํ ๊ฐ๋ฅ์ฑ
- ์์์ ๋ฏธ๋ฆฌ ํ๋ณดํจ์ผ๋ก์จ ํ๋๋ ์ ํ, ๋์ ๊ณค๋
- ์์์ ๋น์ ์ ์กฐ๊ฑด ์ ๊ฑฐ
- ์์์ด ๋ถ์กฑํ๋ฉด ์ด์ง ์ ์ ์ค์ธ ์์์ ๊ฐ์ ํ์
- ๋กค๋ฐฑ Rollback, ๋ฑ ํฐ ๋น์ฉ ๋๋ฐ, ๋์ ๊ณค๋
- ์์์ ๋ํ ํํ ๋๊ธฐ ์กฐ๊ฑด ์ ๊ฑฐ
- ๋ชจ๋ ์์์ ์ผ๋ จ ๋ฒํธ๋ฅผ ๋ถ์ฌํ๊ณ , ํ๋ก์ธ์ค์๊ฒ ์์์ ํ ๋นํ ๋๋์์์ ๋ฒํธ ์์๋๋ก๋ง ํ ๋น, ํํ ๋๊ธฐ ์กฐ๊ฑด ๋ฐ์ํ์ง ์์
- ๊ต์ฐฉ ์ํ ํํผ Avoidance
- ์์์ ํ ๋นํ๋ฉด์ ๊ต์ฐฉ ์ํ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด ์ถ๊ฐ ํ ๋น ๋ณด๋ฅ
- Safe ์ํ์ Unsafe ์ํ
- Safe State
- ์์ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋๋ผ๋ ๊ต์ฐฉ ์ํ๊ฐ ๊ฒฐ์ฝ ์ผ์ด๋์ง ์๋ ์ํ
- ํ์ฌ ๋จ์ ์์์ด ๋ถ์กฑํ๋๋ผ๋ ์ ์ ์ค์ธ ํ๋ก์ธ์ค ์ข ๋ฃ๋ก ์์์ด ๋ฐ๋ฉ๋์ด ๋ชจ๋ ์์ ํ ๋น ์๊ตฌ๋ฅผ ๋ง์กฑ-ํ๋ ์๋๋ฆฌ์ค๊ฐ ์กด์ฌํ๋ฉด
- Unsafe State
- ์์ ํ ๋น์ด ์ด๋ฃจ์ด์ง ํ, ์ดํ์ ๋ชจ๋ ์์ ํ ๋น์ ๋ง์กฑ์ํฌ ์๋๋ฆฌ์ค๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
- Safe State
- ์์ ํ ๋น ๊ทธ๋ํ ์์ฝ ๊ฐ์ , ์์ ์ํ ํ๋ณ, ๊ต์ฐฉ ์ํ
ํํผ
- ์์ ํ ๋น ๊ทธ๋ํ์ ์์ฝ ๊ฐ์
- ํ์ฌ์์ฒญ๋ ์์์ ํ ๋น ํ๋ค๋ ๊ฐ์ ํ์ ์์ ํ ๋น ๊ทธ๋ํ
- ์์ฝ ๊ฐ์ ์ด ํฌํจ๋ ์์ ํ ๋น ๊ทธ๋ํ๋ก๋ถํฐ ์์ ์ํ ์ฌ๋ถ ํ๋ณ
- ์์ ์ํ๊ฐ ์๋๋ฉด ์์ ์์ฒญ ๋ณด๋ฅ
- ์์ ํ ๋น ๊ทธ๋ํ์ ์์ฝ ๊ฐ์
- Dijstra์ ์ํ๊ฐ ์๊ณ ๋ฆฌ์ฆ Bankerโs Algorithm
- ๊ฐ๋
- ์์์ ๋ํ ์ ์ฌ ์์ ๋ฐ ์ฌ๊ณ ํํฉ์ผ๋ก๋ถํฐ ์์ ์ํ ์๋ณ
- ๊ฐ๋
- ๊ต์ฐฉ ์ํ ํ์ง ๋ฐ ๋ณต๊ตฌ Detection & Recovery (์ฃผ๊ธฐ์ ์ผ๋ก, ๊ฐ๋)
- ์์ ํ ๋น ๊ทธ๋ํ๋ก๋ถํฐ ์์ ์ํ ์ฌ๋ถ ํ๋ณ
- ์ ์ ๋๊ธฐ ํ์ (ํํ ๋๊ธฐ, ์ฌ์ดํด, Cycle) ์ด ์กด์ฌํ๋์ง ์กฐ์ฌ
- ์ฌ์ดํด์ด ์กด์ฌํ๋ค๊ณ ํ์ฌ ๋ฐ๋์ ๊ต์ฐฉ ์ํ๋ ์๋
- ์ฌ์ดํด ํ์ ์๊ณ ๋ฆฌ์ฆ
- ๊ต์ฐฉ์ํ ๋ณต๊ตฌ
- ๊ต์ฐฉ ์ํ๋ฅผ ๋ณต๊ตฌ (ํด์ )ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ ํ์๊ฐ ๋ถ๊ฐํผ
- ํ๋ก์ธ์ค ๋จ์์ ์์ ํ์
- ํฌ์ Victim ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ๊ณ , ๊ทธ ํ๋ก์ธ์ค์ ์ ์ ์์ ์ ์ฒด๋ฅผ ํ์
- ์์์ด ๋ถ์กฑํ๋ฉด ๊ณ์ํด์ ํฌ์ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ์ฌ ํ์
- ์์์ ํ์ ๋นํ ํ๋ก์ธ์ค๋ ๊ฐ์ ์ข ๋ฃ (Roolback)
- ๊ฐ๋ณ ์์ ๋จ์์ ํ์
- ํฌ์ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๊ณ ์๋ ์์ ์ค ์ผ๋ถ๋ง ํ์
- ์์์ ์ผ๋ถ๋ฅผ ํ์๋นํ ํ๋ก์ธ์ค๋ ํํดํ์ฌ ์ฌ์คํ Rollback
- ํ๋ก์ธ์ค ๋จ์์ ์์ ํ์
- ๊ต์ฐฉ ์ํ๋ฅผ ๋ณต๊ตฌ (ํด์ )ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ ํ์๊ฐ ๋ถ๊ฐํผ
- ์์ ํ ๋น ๊ทธ๋ํ๋ก๋ถํฐ ์์ ์ํ ์ฌ๋ถ ํ๋ณ
- ๊ต์ฐฉ ์ํ ๋ฐฉ์น Donโt Care
- ๊ต์ฐฉ ์ํ ์๋นต, ํํผ, ํ์ง ๋ฐ ๋ณต๊ตฌ๋ ์ฌ๊ฐํ ๋ถ๋ด (์ฑ๋ฅ ์ ํ)๋ฅผ ๋๋ฐ
- OS๋ ๊ต์ฐฉ ์ํ์ ๊ด๋ จํ์ฌ ์ด๋ ํ ํ๋๋ ํ์ง ์์
- ๊ต์ฐฉ ์ํ์ ๊ด๊ณ๋์ด ์คํ์ด ์ค๋จ๋ ํ๋ก์ธ์ค๋ค์ ์ฌ์ฉ์๊ฐ ์ธ์ํ๊ณ ์ฒ๋ฆฌ
- ๋๋ถ๋ถ์ ์ฌ์ฉ OS์์ ์ฑํ
- ๊ต์ฐฉ ์ํ ์๋นต, ํํผ, ํ์ง ๋ฐ ๋ณต๊ตฌ๋ ์ฌ๊ฐํ ๋ถ๋ด (์ฑ๋ฅ ์ ํ)๋ฅผ ๋๋ฐ
์ด ๊ธฐ์ฌ๋ ์ ์๊ถ์์ CC BY 4.0 ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.