CPU ์ค์ผ์ค๋ง์ ์ด์ ์ฒด์ ์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ณต์ ํ์ฌ ์คํ๋ ๋, ์ด๋ค ์์๋ก CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ ์ ์ฑ ์ ์๋ฏธํฉ๋๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋ ์ ์๋ ํ๊ฒฝ์์ CPU ์ค์ผ์ค๋ฌ๋ ํ๋ก์ธ์ค ๊ฐ์ ๊ฒฝ์์ ์กฐ์ ํ๊ณ ํจ์จ์ ์ผ๋ก CPU๋ฅผ ํ์ฉํ๊ธฐ ์ํ ์ผ๋ จ์ ๊ท์น๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํฉ๋๋ค.
CPU ์ค์ผ์ค๋ง์ ๋ชฉํ
- ๊ณตํ์ฑ(Fairness): ๋ชจ๋ ํ๋ก์ธ์ค์๊ฒ ๊ณตํํ ์คํ ๊ธฐํ๋ฅผ ์ ๊ณตํ์ฌ, ์ด๋ค ํ๋ก์ธ์ค๋ ์ง๋์น๊ฒ ์ํํ ๋ฐ์ง ์๋๋ก ํฉ๋๋ค.
- ์ฒ๋ฆฌ๋(Maximum Throughput): ๋จ์ ์๊ฐ๋น ์ต๋ํ ๋ง์ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ฌ ์์คํ ์ ์ฒ๋ฆฌ๋์ ๊ทน๋ํํฉ๋๋ค.
- ๋๊ธฐ ์๊ฐ ์ต์ํ(Minimizing Waiting Time): ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ต์ํํ์ฌ ์๋ต ์๊ฐ์ ํฅ์์ํต๋๋ค.
- ์ฐ์ ์์ ์ง์ (Priority Assignment): ํน์ ํ๋ก์ธ์ค๋ ์์ ์ ๋ํด ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ ์ค์ํ ์์ ์ด๋ ์์คํ ์ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ์ํต๋๋ค.
- ์ ์ฒด ์์คํ ์ ํจ์จํ(Efficiency): CPU์ ๋ค๋ฅธ ์์๋ค์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ์์คํ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฌํ ๋ชฉํ๋ค์ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ค์ํ ๋ฐฉ์์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์ ํํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ ํ์ ์์คํ ์ ํน์ฑ, ์ฌ์ฉ ๋ชฉ์ , ํ๊ฒฝ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
์ค๋น ํ(Ready Queue)์ ๋๊ธฐ ํ(Waiting Queue)
์ค๋น ํ๋ ํ์ฌ CPU์์ ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค๋ค์ ๋ด๋ ํ์ด๊ณ , ๋๊ธฐ ํ๋ ํน์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ๋ด๋ ํ์ ๋๋ค. ์ด๋ค ํ๋ ์ค์ผ์ค๋ฌ๊ฐ ํ๋ก์ธ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์
์ถ๋ ฅ ์์
์ด ๋ง์ ํ๋ก์ธ์ค๋ CPU ์์
์ด ๋ง์ ํ๋ก์ธ์ค๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ์ ์์ต๋๋ค. ์ด๋ ์
์ถ๋ ฅ ์์
์ด ์๋ฃ๋ ๋๊น์ง ํด๋น ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋๊ธฐ ์ํ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฌ๋ฌ ๊ฐ์ง CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
1) FCFS (First-Come-First-Served)
๊ฐ์ฅ ๊ฐ๋จํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋๋ ๋ฐฉ์์
๋๋ค. ๋๊ธฐ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ๋ฉด ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๋์ด๋ ์ ์์ต๋๋ค. (=ํธ์ ํจ๊ณผ)
2) SJF (Shortest Job First)
์คํ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ํ๊ท ๋๊ธฐ ์๊ฐ์ ์ต์ํํ ์ ์์ผ๋, ์คํ ์๊ฐ์ ์ ํํ ์์ธกํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
3) Priority Scheduling
๊ฐ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ํ ๋นํ๊ณ , ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ์ฐ์ ์์๋ ์ ์ ์ผ๋ก ํ ๋น๋ ์ ์๊ฑฐ๋, ๋์ ์ผ๋ก ๋ณํ ์ ์์ต๋๋ค.
๋ถ์์ฉ์ผ๋ก๋ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ง ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ๊ณ์ ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค๋ ๊ธฐ์ ํ์(Starvation)์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ ์ฐจ ๋์ด๋ ๋ฐฉ์(=์์ด์ง)์ด ๋์ ๋ ์ ์์ต๋๋ค.
4) Round Robin
๊ฐ ํ๋ก์ธ์ค์ ์ผ์ ํ ์๊ฐ์ ํ ๋น๋์ ๋ถ์ฌํ๊ณ , ํด๋น ์๊ฐ์ด ์ง๋๋ฉด ๋ค์ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋ ๋ฐฉ์์
๋๋ค. ์๋ถํ ์์คํ
์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ํ๋ก์ธ์ค์๊ฒ ๊ณตํํ ์คํ ๊ธฐํ๋ฅผ ๋ถ์ฌํฉ๋๋ค
FCFS + Time Slice (๊ฐ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ ๋ฐ๋ก ์ ํด๋ ๊ฒ)
5) Multilevel Queue Scheduling
ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํ๋ก ๋๋๊ณ ๊ฐ ํ์ ๋ค๋ฅธ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์
๋๋ค. ๊ฐ ํ๋ง๋ค ๋
๋ฆฝ์ ์ธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๊ฐ์ ํ๋ก ๋๋๋ค๋ณด๋ ํ๋ก์ธ์ค๊ฐ์ ์ด๋์ด ๋ถ๊ฐ๋ฅํ๊ณ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ๊ณ์ ์คํ์ด ์ ๋๋ ๊ธฐ์ ํ์์ด ์๊น๋๋ค.
6) Multilevel Feedback Queue Scheduling
Multilevel Queue์ ์ ์ฌํ์ง๋ง, ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก ์ด๋ํ ์ ์๋ ๋์ ์ธ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ํ์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฉด ์ฐ์ ์์๋ฅผ ๋์ ํ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ ์ ํ & ๋น์ ์ ํ ์ค์ผ์ค๋ง
์ ์ ํ๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ CPU ์ค์ผ์ค๋ง์์ ํ๋ก์ธ์ค ๊ฐ์ CPU ํ ๋น ๋ฐฉ์์ ๋ํ๋ด๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์ ํ์ ๋๋ค.
์ ์ ํ(Preemptive) ์ค์ผ์ค๋ง
- ์ ์ ํ ์ค์ผ์ค๋ง์ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๊ฐ์ ๋ก ์ค๋จ๋ ์ ์๋ ๋ฐฉ์์ ๋๋ค.
- ์ค์ผ์ค๋ฌ๋ ์ธ์ ๋ ์ง ์ฐ์ ์์๊ฐ ๋์ ์๋ก์ด ํ๋ก์ธ์ค๋ก ์ ํํ ์ ์์ต๋๋ค.
- ์ ์ ํ ์ค์ผ์ค๋ง์ ์ฌ์ฉํ๋ ์์คํ ์์๋ ํ๋ก์ธ์ค์ ์คํ์ด ๊ฐ์ ๋ก ์ค๋จ๋ ์ ์๊ธฐ ๋๋ฌธ์, ํ์ ์ฌ๋ผ์ด์ค(time slice) ๋๋ ์์(quantum)๋ผ ๋ถ๋ฆฌ๋ ์์ ์๊ฐ ๋จ์๋ก CPU๋ฅผ ํ ๋นํฉ๋๋ค. ์ด ์๊ฐ ๋์์๋ง ํด๋น ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ฉฐ, ํ์ ์ฌ๋ผ์ด์ค๊ฐ ๋๋๋ฉด ๋ค์ ํ๋ก์ธ์ค๊ฐ ์คํ๋ฉ๋๋ค.
- ๋ํ์ ์ธ ์ ์ ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ Round Robin์ด ์์ต๋๋ค.
๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง
- ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋๊ฑฐ๋ ๋๊ธฐ ์ํ๋ก ๋ค์ด๊ฐ์ง ์๋ ์ด์, ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๊ฐ์ ๋ก ์ค๋จ๋์ง ์๋ ๋ฐฉ์์ ๋๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ผ๋ฉด ํด๋น ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ I/O ์์ฒญ ๋ฑ์ผ๋ก ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๊ธฐ ์ ๊น์ง CPU๋ฅผ ๊ณ์ ๋ณด์ ํฉ๋๋ค.
- ์ ์ ํ์ ๋นํด ๊ฐ๋จํ๊ณ ์ค๋ฒํค๋๊ฐ ์ ์ ํน์ง์ด ์์ง๋ง, ์๋ต ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- ๋ํ์ ์ธ ๋น์ ์ ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ FCFS(First-Come-First-Served)์ SJF(Shortest Job First)๊ฐ ์์ต๋๋ค.
์ ์ ํ๊ณผ ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ์ ํ์ ์์คํ ์ ์๊ตฌ์ฌํญ๊ณผ ํน์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ, ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
CPU scheduling is an operating system technique that determines how processes, sharing the CPU, are scheduled for execution, aiming to achieve efficient resource utilization and minimize response times.
'Computer Science > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
10 Deadlock (๊ต์ฐฉ ์ํ) (0) | 2024.01.06 |
---|---|
9 Process Synchronization (ํ๋ก์ธ์ค ๋๊ธฐํ) (0) | 2023.12.31 |
7 Thread in Software (0) | 2023.12.28 |
6 ํ๋ก์ธ์ค ์ํ์ ๊ณ์ธต ๊ตฌ์กฐ (1) | 2023.12.28 |
5 User Space in Process (ํ๋ก์ธ์ค ์ฌ์ฉ์ ์์ญ) (0) | 2023.12.23 |
๋๊ธ