- 1. ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
- 2. ๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ค๋ ๋์ ํน์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- 3. ๋ฉํฐ์ค๋ ๋์ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 4. ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฃผ์ํด์ผ ํ ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 5. ์ปจํ ์คํธ ์ค์์นญ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 6. ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 7. ๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํด ๋งํด์ฃผ์ธ์.
- 8. ์ ์ ํ ์ค์ผ์ค๋ง๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ๋ํด ๋งํด์ฃผ์ธ์.
-
ํ๋ก์ธ์ค(Process)๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ผ๋ก, ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(Code, Data, Heap, Stack)์ ๊ฐ์ง๋ค.
-
์ค๋ ๋(Thread)๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์ ์ ๋จ์์ด๋ค.
- Stack๋ง ๊ฐ๋ณ์ ์ผ๋ก ํ ๋น๋ฐ๊ณ , Code, Data, Heap ์์ญ์ ๊ณต์ ํ๋ค.
- ๊ฐ์ ํ๋ก์ธ์ค ๋ด์์๋ ์ค๋ ๋ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค.
โ๏ธ ์ค๋ ๋๋ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๋๋ฐ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ค๋ ๋๋ ๊ฐ์ ํ๋ก์ธ์ค ๋ด์์ ๋ฉ๋ชจ๋ฆฌ(Code, Data, Heap)๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๊ฒฝ์ ์ํ(Race Condition) ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๊ฒฝ์ ์ํ(Race Condition)๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
โ๏ธ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ค๋ฃฐ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฎคํ ์ค(Mutex)๋ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋๋ก ์ ํํ๋ค. (์ํธ ๋ฐฐ์ )
- ์ธ๋งํฌ์ด(Semaphore)๋ ๋์ ์ ๊ทผ ๊ฐ๋ฅํ ์ค๋ ๋ ์๋ฅผ ์ ํํ๋ค.
๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ค๋ ๋์ ํน์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฉํฐํ๋ก์ธ์ค๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ด๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๋ ์ํฅ์ด ์๋ค.
- ๋จ, ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ด๋ ต๊ณ , ๋ฌธ๋งฅ ์ ํ ๋น์ฉ(Context Switching)์ด ํฌ๋ค.
-
๋ฉํฐ์ค๋ ๋๋ ํ๋์ ํ๋ก์ธ์ค ๋ด๋ถ์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ์ค๋ ๋ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ฉ์ดํ์ง๋ง, ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
โ๏ธ ๋ฉํฐ์ค๋ ๋์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฝ(Lock)์ ์ฌ์ฉํ์ฌ ํน์ ์์์ ๋ํด ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์ ๊ทผํ๋๋ก ์ ํํ๋ค.
- ์ธ๋งํฌ์ด(Semaphore)๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ค๋ ๋ ์๋ฅผ ์กฐ์ ํ๋ค.
โ๏ธ ๋ฉํฐํ๋ก์ธ์ค๋ณด๋ค ๋ฉํฐ์ค๋ ๋๊ฐ ๋ ํจ์จ์ ์ธ ๊ฒฝ์ฐ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ก ์น ์๋ฒ, ๊ฒ์ ์์ง, ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ๋ ํจ์จ์ ์ด๋ค.
- ๋ฌธ๋งฅ ์ ํ ๋น์ฉ์ด ํฐ ๊ฒฝ์ฐ๋ก ๋ฉํฐํ๋ก์ธ์ค๋ณด๋ค ๋ฉํฐ์ค๋ ๋๋ ๋ฌธ๋งฅ ์ ํ(Context Switching) ๋น์ฉ์ด ์ ๋ค.
- I/O ์์ ์ด ์ ๊ณ , ์ฐ์ฐ์ด ์ง์ค๋ ๊ฒฝ์ฐ๋ก ๋ฉํฐ์ค๋ ๋๊ฐ ๋ ๋น ๋ฅธ ์คํ ์๋๋ฅผ ๊ฐ์ง๋ค.
๋ฉํฐ์ค๋ ๋์ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋์์ฑ(Concurrency)์ ์ฑ๊ธ ์ฝ์ด์์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ๋, ๋ ผ๋ฆฌ์ ๋์ ์คํ ๋ฐฉ์์ด๋ค.
- ์น ์๋ฒ๊ฐ ์ฌ๋ฌ ์์ฒญ์ ๋ฒ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
-
๋ณ๋ ฌ์ฑ(Parallelism)์ ๋ฉํฐ ์ฝ์ด์์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์์ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ๋ฐ์ดํฐ ๋ถ์ ์์ ์ ์ฌ๋ฌ ์ฝ์ด์์ ๋์์ ์ํํ๋ค.
โ๏ธ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ๋ณ๋ ฌ์ฑ๋ณด๋ค ๋์์ฑ์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ฑ๊ธ ์ฝ์ด ํ๊ฒฝ์์๋ ๋ณ๋ ฌ์ฑ ๋์ ๋์์ฑ์ ์ฌ์ฉํด์ผ ํ๋ค.
- I/O ์์
์ด ๋ง์ ๊ฒฝ์ฐ์๋ ๋์์ฑ์ด ๋ ์ ๋ฆฌํ๋ค.
- ์๋ฅผ ๋ค์ด, ์น ์๋ฒ์ ๊ฒฝ์ฐ๋ก ํด๋ผ์ด์ธํธ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ๋ณด๋ค ๋์ ์คํ์ด ๋ ํจ๊ณผ์ ์ด๋ค.
โ๏ธ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ์ต์ ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ์ค๋ ๋ ํ(Thread Pool)์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ์ค๋ ๋ ์์ฑ ๋ฐ ์ญ์ ๋ฅผ ๋ฐฉ์งํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๋ค.
- ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ(Async Programming)์ ์ ์ฉํ์ฌ ํ์ํ ๋๋ง ์์ ์ ์ํํ๋๋ก ํ๋ค.
- ์์ ์ ์ ์ ํ ๋ถํ ํ๋๋ก ์ฐ์ฐ์ ์ฌ๋ฌ ์ค๋ ๋๋ก ๋๋ ์ ์คํํ๋ค.
๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฃผ์ํด์ผ ํ ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ :
- ๊ฒฝ์ ์ํ(Race Condition)๋ก ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ฉด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ฐ๋๋ฝ(Deadlock) ์ํ๋ก ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ์๋ก ์์์ ์ ์ ํ ์ํ์์ ๋ฌดํ ๋๊ธฐํ ์ ์๋ค.
- ๊ต์ฐฉ ์ํ(Starvation)๋ก ํน์ ์ค๋ ๋๊ฐ ๊ณ์ํด์ ์์์ ํ ๋น๋ฐ์ง ๋ชปํ๊ณ ๋๊ธฐํ๋ ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
-
๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ:
- ๋ฎคํ ์ค(Mutex)๋ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ๊ณต์ ์์์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
- ์ธ๋งํฌ์ด(Semaphore)๋ ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ค๋ ๋ ๊ฐ์๋ฅผ ์ ํํ๋ค.
- ์คํ๋ฝ(Spinlock)์ ๋ฐ์ ๋๊ธฐ ๋ฐฉ์์ผ๋ก CPU ์ฌ์ฉ๋ฅ ์ ์ต์ ํํ๋ค.
โ๏ธ ๋ฐ๋๋ฝ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด (Coffman's ์กฐ๊ฑด): ์๋ 4๊ฐ์ง ์กฐ๊ฑด์ด ๋์์ ๋ง์กฑํ๋ฉด ๋ฐ๋๋ฝ(Deadlock)์ด ๋ฐ์ํ๋ค.
- ์ํธ ๋ฐฐ์ (Mutual Exclusion)๋ ์์์ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํ๋ ์ํ์ด๋ค.
- ์ ์ ๋๊ธฐ(Hold and wait)๋ ์์์ ์ ์ ํ ์ํ์์ ์ถ๊ฐ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ด๋ค.
- ๋น์ ์ (No Preemption)์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ ์์์ ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ์ํ์ด๋ค.
- ์ํ ๋๊ธฐ(Circular Wait)๋ ํ๋ก์ธ์ค๋ค์ด ์ํ์ผ๋ก ์์์ ๋๊ธฐํ๋ ๊ตฌ์กฐ์ด๋ค.
-
๋ฐ๋๋ฝ ๋ฐฉ์ง ๋ฐฉ๋ฒ:
- ์ํธ ๋ฐฐ์ ์กฐ๊ฑด ์ ๊ฑฐ(์์ ๊ณต์ )๋ก ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฌ์ฉํ ์ ์๋๋ก ์์์ ๊ณต์ ํ๋ฉด ๋ฐ๋๋ฝ์ ๋ฐฉ์งํ ์ ์๋ค.
- ์ ์ ๋๊ธฐ ์กฐ๊ฑด ์ ๊ฑฐ(์์ ์์ฒญ ์ ๋ถ ์๋ฃ ํ ์คํ)๋ก ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ ์์์ ํ ๋ฒ์ ํ ๋นํ์ฌ ์ ์ ๋๊ธฐ ์ํ๋ฅผ ๋ง๋ค์ง ์๋๋ค.
- ํ์ง๋ง ์์์ ํ์ฉ๋ฅ ์ด ๋ฎ์์ง๊ณ , ์์ฒญํ์ง ์์ ์์๊น์ง ํ ๋น๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ๋น์ ์ ์กฐ๊ฑด ์ ๊ฑฐ(์์ ํ์)๋ก ์์์ ์ ์ ํ ํ๋ก์ธ์ค๊ฐ ์ถ๊ฐ ์์์ ์์ฒญํ๋ฉด ๊ธฐ์กด ์์์ ๋ฐ๋ฉํ๋๋ก ํ๋ค.
- ํ์ง๋ง ์ผ๋ถ ํ๋ก์ธ์ค๊ฐ ์์์ ์ป์ง ๋ชปํ๊ณ ๊ณ์ ์คํ๋์ง ์๋ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ์ํ ๋๊ธฐ ์กฐ๊ฑด ์ ๊ฑฐ(์์ ์์ ์ง์ )๋ ๋ชจ๋ ์์์ ๊ณ ์ ํ ์ฐ์ ์์(๋ฒํธ)๋ฅผ ๋ถ์ฌํ์ฌ ์์๋๋ก๋ง ์์ฒญํ ์ ์๋๋ก ํ๋ค.
- ์ํ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ๋๋ฝ ํํผ ๊ธฐ๋ฒ ์ค ํ๋๋ก, ์์์ ํ ๋น์ ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ฌ ๋ฐ๋๋ฝ์ ๋ฐฉ์งํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ์ํ ์์์ ์ต๋๋์ ์ ์ธํ๊ณ , ์์ ์ํ์ธ ๊ฒฝ์ฐ์๋ง ์์์ ํ ๋นํ๋ค.
โ๏ธ ๋ฎคํ
์ค์ ์ธ๋งํฌ์ด์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋ฎคํ ์ค(Mutex)๋ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๋ฝ(Lock) ๊ธฐ๋ฒ์ด๋ค.
-
์ธ๋งํฌ์ด(Semaphore)๋ ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ค๋ ๋์ ๊ฐ์๋ฅผ ์ง์ ํ ์ ์๋ ๊ธฐ๋ฒ์ด๋ค.
-
๋ฎคํ ์ค๋ ๊ฐ์ผ๋ก 0 ๋๋ 1์ ์ฌ์ฉํ๋ ์ด์ง ์ธ๋งํฌ์ธ ๋ฐ๋ฉด, ์ธ๋งํฌ์ด๋ ๊ฐ์ผ๋ก 0 ์ด์์ ์ฌ์ฉํ๋ค.
-
๋ฎคํ ์ค๋ ๋จ์ผ ์ค๋ ๋ ์ ๊ทผ์ ์ ํํ๋ ๋ชฉ์ ์ด์ง๋ง, ์ธ๋งํฌ์ด๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋ ๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋๊ธฐํ๊ฐ ๋ชฉ์ ์ด๋ค.
-
๋ฎคํ ์ค๋ ๋ฝ์ ํ๋ํ ์ค๋ ๋๋ง ํด์ ๊ฐ๋ฅํ์ง๋ง, ์ธ๋งํฌ์ด๋ ์์ ๊ถ์ด ์์ด ๋ค๋ฅธ ์ค๋ ๋๋ ํด์ ๊ฐ ๊ฐ๋ฅํ๋ค.
์ปจํ ์คํธ ์ค์์นญ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
CPU๊ฐ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํ ๋, ๊ธฐ์กด ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ณต๊ตฌํ๋ ๊ณผ์ ์ด๋ค.
-
๋ฌธ๋งฅ ์ ํ์ด ๋ฐ์ํ๋ฉด CPU ์บ์ ์ด๊ธฐํ, ๋ ์ง์คํฐ ๋ณ๊ฒฝ, PCB(Process Control Block) ๊ต์ฒด ๋ฑ์ด ์ด๋ฃจ์ด์ง๋ค.
-
์ปจํ ์คํธ ์ค์์นญ์ ์ฌ๋ฌ ์์ ์ด ์ด๋ฃจ์ด์ง๋ฏ๋ก ๋น์ฉ์ด ์ปค์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
-
๋ํ, ์บ์ ๋ฏธ์ค๊ฐ ์ฆ๊ฐํ์ฌ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค.
โ๏ธ ์ปจํ
์คํธ ์ค์์นญ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฉํฐ์ค๋ ๋ ๋์ ์ค๋ ๋ ํ(Thread Pool)์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ์ค๋ ๋ ์์ฑ ๋ฐ ์ ๊ฑฐ๋ฅผ ๋ฐฉ์งํ๋ค.
- ์์ ๋จ์๋ฅผ ํฌ๊ฒ ๋ง๋ค์ด์ ๋๋ฌด ์์ฃผ ๋ฌธ๋งฅ ์ ํ์ด ์ผ์ด๋์ง ์๋๋ก ์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
- ๋๊ธฐํ๋ฅผ ์ต์ํํ์ฌ ๋ฝ์ ์ ๊ฒ ์ฌ์ฉํด์ ๋ฌธ๋งฅ ์ ํ ํ์๋ฅผ ์ค์ธ๋ค.
โ๏ธ ๋ฉํฐ์ค๋ ๋์์ ๋ฌธ๋งฅ ์ ํ์ ์ต์ํํ๋ ์ ๋ต์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ฝ์ ์ต์ํ์ผ๋ก ์ฌ์ฉํ์ฌ ์ค๋ ๋ ๊ฐ ์ ํ ๋น์ฉ์ ๊ฐ์์ํจ๋ค.
- ์ค๋ ๋ ๋ฐ์ธ๋ฉ์ ์ ์ฉํ์ฌ ํน์ ์ฝ์ด์์ ํน์ ์ค๋ ๋๋ง ์คํํ๋๋ก ๊ณ ์ ์ํจ๋ค.
ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
ํ์ด์ง ๋ถ์ฌ ๋ฐ์ ์, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ ์๋ก์ด ํ์ด์ง๋ฅผ ๊ฒฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
-
ํ์ด์ง ๊ต์ฒด์ ์ฃผ์ ์๊ณ ๋ฆฌ์ฆ:
- FIFO: ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- LRU: ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- LFU: ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- OPT(Optimal): ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
โ๏ธ LRU์ LFU์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
LRU(Least Recently Used)๋ ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- ์ฌ์ฉ ๊ธฐ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ๊ต์ฒดํ๋ค.
-
LFU(Least Frequently Used)๋ ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- ์์ฃผ ์ฌ์ฉ๋ ํ์ด์ง๋ ์ ์งํ๋ค.
โ๏ธ OPT ์๊ณ ๋ฆฌ์ฆ์ ์ ํ์ค์ ์ผ๋ก ๊ตฌํ์ด ๋ถ๊ฐ๋ฅํ์ง์ ๋ํด ๋งํด์ฃผ์ธ์.
- OPT(Optimal Page Replacement)๋ ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์ด๋ค.
- ํ์ง๋ง ๋ฏธ๋์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํจํด์ ์์ธกํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ์ด์์ฒด์ ์์๋ ๊ตฌํํ ์ ์๋ค.
๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
๋๊ธฐ(Synchronous)๋ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํธ๋์ญ์ , ํ์ผ I/O ๋ฑ์ผ๋ก ํ์ฉํ ์ ์๋ค.
-
๋น๋๊ธฐ(Asynchronous)๋ ์์ ์ ์์ฒญํ๊ณ ์ฆ์ ๋ค์ ์์ ์ ์คํํ๋ค.
- ๋คํธ์ํฌ ์์ฒญ, UI ์ด๋ฒคํธ ๋ฑ์ผ๋ก ํ์ฉํ ์ ์๋ค.
โ๏ธ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
- CPU ์ฌ์ฉ ์ต์ ํ๋ก ํ๋์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ ๋ค์ ์์ ์คํ์ด ๊ฐ๋ฅํ๋ค.
- I/O ์์ ์ด ๋ง์ ์น ์๋ฒ, ํ์ผ ์ฒ๋ฆฌ, ๋คํธ์ํฌ ์์ฒญ ๋ฑ์์ ํจ๊ณผ์ ์ด๋ค.
์ ์ ํ ์ค์ผ์ค๋ง๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์ฐจ์ด์ ์ ๋ํด ๋งํด์ฃผ์ธ์.
-
CPU ์ค์ผ์ค๋ง์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฝ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
-
์ ์ ํ ์ค์ผ์ค๋ง (Preemptive Scheduling): ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด CPU ์ฌ์ฉ์ด ์ค๋จ๋ ์ ์๋ ๋ฐฉ์์ด๋ค.
- CPU๋ฅผ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค์๊ฒ ํ ๋น์ด ๊ฐ๋ฅํ๋ค.
- ์ฆ์ ์ฐ์ ์์ ๋์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ฏ๋ก ์๋ต ์๋๊ฐ ๋น ๋ฅด๋ค.
-
๋น์ ์ ํ ์ค์ผ์ค๋ง (Non-Preemptive Scheduling): ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ผ๋ฉด ๋๋ ๋๊น์ง ์ ์ง๋๋ค.
- CPU๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ค.
- ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋๋ฉด ๋๊ธฐํ๋ฏ๋ก ์๋ต ์๋๊ฐ ๋๋ฆฌ๋ค.
โ๏ธ ๋ํ์ ์ธ ์ ์ ํ๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋งํด์ฃผ์ธ์.
- ๋ํ์ ์ธ ์ ์ ํ ์ค์ผ์ค๋ง์ RR(Round Robin), SRTF(Shortest Remaining Time First)๊ฐ ์กด์ฌํ๋ค.
- ๋ํ์ ์ธ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ FCFS(First Come First Served), SJF(Shortest Job First)๊ฐ ์กด์ฌํ๋ค.