โ๏ธ ๋ฐ๋๋ฝ์ ๋ฐ์์กฐ๊ฑด
- ์ํธ ๋ฐฐ์
- ํ ๋ฒ์ ํ๋ก์ธ์ค ํ๋๋ง ํด๋น ์์์ ์ฌ์ฉํ ์ ์์.
- ์ฌ์ฉ ์ค์ธ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ค๋ฉด ์์ฒญํ ์์์ด ํด์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํจ
- ์ ์ ๋๊ธฐ
- ์์์ ์ต์ํ ํ๋ ๋ณด์ ํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ ์ ํ๊ธฐ ์ํด ๋๊ธฐํ๋ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํด์ผ ํจ
- ๋น์ ์
- ์ด๋ฏธ ํ ๋น๋ ์์์ ๊ฐ์ ๋ก ๋นผ์์ ์ ์์
- ์ํ ๋๊ธฐ
- ๋๊ธฐ ํ๋ก์ธ์ค์ ์งํฉ์ด ์ํ ํํ๋ก ์์์ ๋๊ธฐํ๊ณ ์์ด์ผ ํจ
โ๏ธ ๋ฐ๋๋ฝ์ ํด๊ฒฐ๋ฐฉ๋ฒ
๐ ๋ฐ๋๋ฝ ์๋ฐฉ(Prevention)
: ๋ฐ๋๋ฝ์ ๋ฐ์์กฐ๊ฑด 4๊ฐ์ง ์ค ํ๋๋ผ๋ ๋ฐ์ํ์ง ์๊ฒ ํ๋ ๊ฒ (๊ฐ๊ฐ์ ์กฐ๊ฑด์ ๋ฐฉ์งํ์ฌ ๋ฐ์๊ฐ๋ฅ์ฑ ์ฐจ๋จ)
- ์์์
์ํธ ๋ฐฐ์
์กฐ๊ฑด ๋ฐฉ์ง : ํ๋ฒ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ฌ์ฉํ ์ ์๊ฒ ํจ- but, ์ถํ ๋๊ธฐํ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
์ ์ ๋๊ธฐ
์กฐ๊ฑด ๋ฐฉ์ง : ํ๋ก์ธ์ค ์คํ์ ํ์ํ ๋ชจ๋ ์์์ ํ๊บผ๋ฒ์ ์๊ตฌํ๊ณ ํ์ฉํ ๋๊น์ง ์์ ์ ๋ณด๋ฅํด์, ๋์ค์ ๋ ๋ค๋ฅธ ์์์ ์ ์ ํ๊ธฐ ์ํ ๋๊ธฐ ์กฐ๊ฑด์ ์ฑ๋ฆฝํ์ง ์๋๋ก ํจ๋น์ ์
์กฐ๊ฑด ๋ฐฉ์ง : ์ด๋ฏธ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์์์ด ์ ์ ๊ถ์ด ์๋ค๊ณ ๊ฐ์ ํ ๋, ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ํด๋น ์์์ ์ ์ ํ ์ ์๋๋ก ํจ์ํ ๋๊ธฐ
์กฐ๊ฑด ๋ฐฉ์ง : ์์์ ์ํ ํํ๋ก ๋๊ธฐํ์ง ์๋๋ก ์ผ์ ํ ํ ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ์์์ ์๊ตฌํ ์ ์๋๋ก ํจ
๐๐ป ์ด๋ฌํ ์กฐ๊ฑด์ ๋ฐฉ์งํด์ ๋ฐ๋๋ฝ์ ์๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ์์คํ ์ ์ฒ๋ฆฌ๋์ด๋ ํจ์จ์ฑ์ ๋จ์ดํธ๋ฆฌ๋ ๋จ์ ์ด ๋ฐ์ ํ ์ ์์
๐ ๋ฐ๋๋ฝ ํํผ(Avoidance)
- ์์ ์ํ(Safe State) : ์์คํ ์ ํ๋ก์ธ์ค๋ค์ด ์์ฒญํ๋ ๋ชจ๋ ์์์, ๋ฐ๋๋ฝ์ ๋ฐ์์ํค์ง ์์ผ๋ฉด์๋ ์ฐจ๋ก๋ก ๋ชจ๋์๊ฒ ํ ๋นํด ์ค ์ ์๋ ์ํ
- ์์ ์์(Safe Sequence) : ํน์ ํ ์์๋ก ํ๋ก์ธ์ค๋ค์๊ฒ ์์์ ํ ๋น, ์คํ ๋ฐ ์ข ๋ฃ ๋ฑ์ ์์ ์ ํ ๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์๋ ์์
- ๋ถ์์ ์ํ๋ ์์ ์ํ๊ฐ ์๋ ์ํฉ์ ๋งํจ → ๋ฐ๋๋ฝ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ํฉ
- ๊ต์ฐฉ ์ํ(๋ฐ๋๋ฝ)๋ ๋ถ์์ ์ํ์ผ ๋ ๋ฐ์ํ ์ ์์
- ์ฆ, ๋ถ์์ ์ํ๊ฐ ๊ต์ฐฉ ์ํ๋ณด๋ค ์ข ๋ ํฐ ์งํฉ
ํํผ ์๊ณ ๋ฆฌ์ฆ
์ ์์์ ํ ๋นํ ํ์๋ ์์คํ ์ด ํญ์ Safe state์ ์์ ์ ์๋๋ก ํ ๋น์ ํ์ฉํ์๋ ๊ฒ์ด ๊ธฐ๋ณธ ํน์ง →์ํ์ ์๊ณ ๋ฆฌ์ฆ
- ๐ **์ํ์ ์๊ณ ๋ฆฌ์ฆ**(Banker’s Algorithm) ์ด๋ค ์์์ ํ ๋น์ ํ์ฉํ๋์ง์ ๊ดํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ ์, ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋ ๋ชจ๋ ์์๋ค์ ์ต๋ ๊ฐ๋ฅํ ํ ๋น๋์ ๊ฐ์ง๊ณ ์๋ฎฌ๋ ์ด์ ํ์ฌ Safe state์ ๋ค ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํจ. (์ฆ, ๋๊ธฐ์ค์ธ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ํ๋์ ๋ํ ๊ต์ฐฉ ์ํ ๊ฐ๋ฅ์ฑ์ ๋ฏธ๋ฆฌ ์กฐ์ฌํ๋ ๊ฒ)→ ๋ฏธ๋ฆฌ ์ต๋ ์์ ์๊ตฌ๋์ ์์์ผ ํ๊ณ , ํ ๋นํ ์ ์๋ ์์ ์๊ฐ ์ผ์ ํด์ผํ๋ ๋ฑ ์ฌ์ฉ์ ์์ด ์ ์ฝ์กฐ๊ฑด์ด ๋ง๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ์์ ์ด์ฉ๋ ํ๋ฝ ๋ฑ ๋จ์ ๋ ์กด์ฌ
๐ ๋ฐ๋๋ฝ ํ์ง(Detection) ๋ฐ ํ๋ณต(Recovery)
- ์์คํ
์ด ๋ฐ๋๋ฝ ์๋ฐฉ์ด๋ ํํผ๋ฒ์ ์ฌ์ฉํ์ง ์์์ ๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์์
→ ์ด ๋ฐ๋๋ฝ์ ํ๋ณตํ๊ธฐ ์ํด ๋ฐ๋๋ฝ์ ํ์งํ๊ณ , ํ๋ณตํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- ํ์ง ๊ธฐ๋ฒ
- Allocation, Request, Available ๋ฑ์ผ๋ก ์์คํ
์ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์
→ ํ์ฌ ์์คํ ์ ์์ ํ ๋น ์ํ๋ฅผ ๊ฐ์ง๊ณ ํ์ - ์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ํตํด ํ์ง
- Allocation, Request, Available ๋ฑ์ผ๋ก ์์คํ
์ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์
- ํ๋ณต ๊ธฐ๋ฒ : ์ํ ๋๊ธฐ์์ ๋ฒ์ด๋ ๋ฐ๋๋ฝ์ผ๋ก๋ถํฐ ํ๋ณตํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ
- ๋จ์ํ ํ๋ก์ธ์ค๋ฅผ 1๊ฐ ์ด์ ์ค๋จ
- ๊ต์ฐฉ ์ํ์ ๋น ์ง ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ค๋จ์ํค๋ ๋ฐฉ๋ฒ : ๊ณ์ ์ฐ์ฐ ์ค์ด๋ ํ๋ก์ธ์ค๋ค๋ ๋ชจ๋ ์ผ์์ ์ค๋จ๋์ด ๋ถ๋ถ ๊ฒฐ๊ณผ๊ฐ ํ๊ธฐ๋ ์ ์๋ ๋ถ์์ฉ์ด ๋ฐ์ํ ์ ์์
- ํ๋ก์ธ์ค๋ฅผ ํ๋์ฉ ์ค๋จ์ํฌ ๋๋ง๋ค ํ์ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ๋๋ฝ์ ํ์งํ๋ฉด์ ํ๋ณต์ํค๋ ๋ฐฉ๋ฒ : ๋งค๋ฒ ํ์ง ์๊ณ ๋ฆฌ์ฆ์ ํธ์ถ ๋ฐ ์ํํด์ผ ํ๋ฏ๋ก ๋ถ๋ด์ด ์ฃ๋ ์์ ์ผ ์ ์์
- ์์ ์ ์ ํ๊ธฐ
- ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ ์ ํด์ ๊ต์ฐฉ ์ํ๋ฅผ ํด๊ฒฐํ ๋๊น์ง ๊ทธ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋นํด์ฃผ๋ ๋ฐฉ๋ฒ
- ๋จ์ํ ํ๋ก์ธ์ค๋ฅผ 1๊ฐ ์ด์ ์ค๋จ
'CS > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ์ธ๋งํฌ์ด(Semaphore) & ๋ฎคํ ์ค(Mutex) (0) | 2024.02.25 |
---|---|
[CS] ๊ฒฝ์ ์ํ(Race Condition) (0) | 2024.02.25 |
[CS] CPU ์ค์ผ์ค๋ง (1) | 2024.02.06 |
[CS] IPC(Inter Process Communication) (0) | 2024.02.06 |
[CS] PCB & Context Switching (0) | 2024.02.01 |