์ด์์ฒด์ ์ ์ฃผ์ ๊ธฐ๋ฅ์?
- ์ด์์ฒด์ ๋ ์ปดํจํฐ ํ๋์จ์ด ์ํํธ์จ์ด ์์์ ๊ด๋ฆฌํ๋ฉฐ ์ปดํจํฐ์ ์ฌ์ฉ์ ์ฌ์ด์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ
- ํ๋ก์ธ์ค ๊ด๋ฆฌ : ํ๋ก์ธ์ค์ ์์ฑ, ์ค์ผ์ค๋ง ๋ฑ์ ๋ด๋น
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ๋ฉ๋ชจ๋ฆฌ ํ ๋น, ํด์ , ์ค์ํ ๋ฑ์ ๊ด๋ฆฌ. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ, ํ์ด์ง, ์ธ๊ทธ๋ฉํ ์ด์ ๊ธฐ๋ฒ๋ฑ์ ์ฌ์ฉ
- ํ์ผ ์์คํ ๊ด๋ฆฌ : ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ๊ณต. ํ์ผ ์ ์ฅ, ๊ฒ์, ์ญ์ ๋ฑ์ ์์ ์ ์ํ
- ์ ์ถ๋ ฅ ์์คํ ๊ด๋ฆฌ : ๋ค์ํ ์ ์ถ๋ ฅ ์ฅ์น์ ์ํธ์์ฉ์ ๊ด๋ฆฌ
๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ
๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ฒ Code, Data, Heap, Stack์์ญ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.

ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด
- ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค๋ก ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ์์ฒด ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. IPC ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๊ฐ ํต์ ์ด ์ด๋ฃจ์ด์ง๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์ ์ ๋จ์๋ก, ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์ค๋ ๋๋ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํ๋ค. ์ค๋ ๋๊ฐ ํต์ ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด ์ฝ๊ฒ ์ด๋ฃจ์ด์ง๋ค.
ํ๋ก์ธ์ค์ ์ํ ์ ์ด
ํ๋ก์ธ์ค๋ ์คํ๋๋ ๋์ ์ฌ๋ฌ ์ํ๋ฅผ ๊ฑฐ์น๋ค.
- ์ค๋น(Ready) : ํ๋ก์ธ์ค๊ฐ ์คํ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ.
- ์คํ(Running) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ์ค์ธ ์ํ
- ๋๊ธฐ(Waiting) : ์ ์ถ๋ ฅ๋ฑ์ผ๋ก ์ธํด ๋๊ธฐ์ค์ธ ์ํ. ํ์ํ ์์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ๊น์ง ๋๊ธฐ์ํ๋ฅผ ์ ์ง

CPU ์ค์ผ์ค๋ง
- CPU ์ค์ผ์ค๋ง์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค๋ค์ ์งํฉ ์ค์์ ์ด๋ ํ๋ก์ธ์ค๋ฅผ ๋ค์์ ์คํํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ ์ฑ ์ ์๋ฏธํ๋ค.
- ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ํฌ๊ฒ ๋น์ ์ ํ๊ณผ ์ ์ ํ์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
- ๋น์ ์ ํ : ์ค์ผ์ค๋ฌ๋ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์ค์ค๋ก CPU๋ฅผ ํฌ๊ธฐํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆผ
- FCFS(First Come, First Served)
- ๋จผ์ CPU๋ฅผ ์์ฒญํ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌ
- SJF(Shortest Job First)
- ๊ฐ์ฅ ์งง์ ์คํ ์๊ฐ์ ๊ฐ์ง ์์ ์ ๋จผ์ ์คํ
- FCFS(First Come, First Served)
- ์ ์ ํ : ์ค์ผ์ค๋ฌ๋ ํ๋ก์ธ์ค๋ฅผ ์ธํฐ๋ฝํธ ํ์ฌ context switch๋ฅผ ๋ฐ์์ํด
- STCF(Shortest Time to Completion First)
- ์๋ก์ด job์ด ์์คํ ์ ๋ค์ด์ค๋ฉด, ์ค์ผ์ค๋ฌ๋ ๋จ์ ์๋ ์์ ๊ณผ ์๋ก์ด ์์ ์ ๋จ์ ์คํ์๊ฐ์ ๋น๊ตํ์ฌ ๊ฐ์ฅ ์ ์ ์คํ์๊ฐ์ ๊ฐ์ง๋ ์์ ์ ์ค์ผ์ค๋ง
- RR(Round Robin)
- ์์ ์ ํ์ ์ฌ๋ผ์ด์ค๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๊ฐ ๋์๋ง ์คํํ๊ณ , ๋ชจ๋ ์์ ์ด ๋๋ ๋๊น์ง ์คํ ํ์ ์๋ ์์ ๋ค๋ก ๋ณ๊ฒฝํด ๊ฐ๋ฉฐ ์์ ์ ์ํ
- STCF(Shortest Time to Completion First)
- SJF, STCF๋ ์ํฌ๋ก๋์ ๋ํ ์ฌ์ ์ง์์ด ํ์ํ๋ค.(์ค์ ์ธ๊ณ์์๋ ์ ์๋ํ์ง ์์)
- RR์ ์๋ต์๊ฐ์ ์ฐ์ํ์ง๋ง, ๋ฐํ์๊ฐ์ด ์ข์ง ์๋ค.
- MLFQ(Multi Level Feedback Queue)

MLFQ๋ ์์ ์ ํน์ฑ์ ๋ฐ๋ผ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค.
- Interactive Jobs
- ์งง์ ์คํ์๊ฐ, ๋น ๋ฅธ ์๋ต์๊ฐ์ด ์๊ตฌ๋จ.
- ์์ ๋ค์ I/O๋ฅผ ์ํํ๋ ๋์ ๋ฐ๋ณต์ ์ผ๋ก CPU๋ฅผ ์๋ณดํจ.
- ์์ ์ ๋์ ์ฐ์ ์์๋ฅผ ์ ์งํ๋ค.
- CPU-Intensive Jobs
- ๊ธด ์๊ฐ๋์ CPU๋ฅผ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์๋ต์๊ฐ์ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์
- ์์ ์ ์ฐ์ ์์๋ฅผ ๋ฎ์ถค.
์ฐ์ ์์์ ์กฐ์ ๊ณผ ์ฐ์ ์์์ ํํฅ ์กฐ์ (Priority Boost)๋ฅผ ํตํด ์ค์ผ์ค๋ง์ ํ๋ค.
๋ฐ๋๋ฝ์ด๋?
- ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์์์ ์ ์ ํ ์ํ์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ์ค์ธ ์์์ ์๊ตฌํ๋ฉฐ ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ฅผ ๋ฐ๋๋ฝ์ด๋ผ๊ณ ํ๋ค.

- ๋ฐ๋๋ฝ์ 4๊ฐ์ง ์กฐ๊ฑด์ด ๋ชจ๋ ๋ง์กฑํ ๋ ๋ฐ์ํ๋ค.
- ์ํธ ๋ฐฐ์ (Mutal Exclusion) : ์์์ ํ๋ฒ์ ํ ํ๋ก์ธ์ค๋ง์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ์ ์ ๋๊ธฐ(Hold & Wait) : ์ต์ ํ๋์ ์์์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋์ด ์ฌ์ฉํ๊ณ ์๋ ์์์ ์ถ๊ฐ๋ก ์ ์ ํ๊ธฐ ์ํด ๋๊ธฐ
- ๋น์ ์ (Non-Preemptive) : ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๋บ์ ์ ์์
- ์ํ ๋๊ธฐ(Circular Wait) : ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์์ ์ ๊ทผ์ ๊ธฐ๋ค๋ฆด ๋, ๊ด๊ณ๊ฐ ์ํ์ ์ธ ๊ตฌ์กฐ
์ ๋ฐ์ดํธ ์์
'๐CS-๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฃ๊ตฌ์กฐ (0) | 2024.07.31 |
---|---|
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์น / ๋คํธ์ํฌ (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - ์๋ฐ (0) | 2024.07.29 |
๊ธฐ์ ๋ฉด์ ์ค๋นํ๊ธฐ - Spring/SpringBoot (0) | 2024.07.27 |