CPU ์ค์ผ์ค๋ง์ด๋?
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ณ ์๋ ๊ฒฝ์ฐ CPU๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ฅผ ์ ๋ฐฐ์ ํ๋๋ก ํ๋ ๊ฒ
์ค๋ฒํค๋๋ ์ค์ด๊ณ , ์ฌ์ฉ๋ฅ ์ ๋๋ฆฌ๊ณ ๊ธฐ์ ํ์์ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๊ฒ
Batch System : ๊ฐ๋ฅํ๋ฉด ๋ง์ ์ผ์ ์ํ, ์ฒ๋ฆฌ๋์ด ์ค์ํ๋ค.
Interactive System : ๋น ๋ฅธ ์๋ต์๊ฐ == ์ ์ ๋๊ธฐ ์๊ฐ
Real-time System : ๋ฐ๋๋ผ์ธ ๋ง์ถ๊ธฐ
์ ์ ๊ณผ ๋น์ ์ ์ค์ผ์ค๋ง
- ์ ์ ์ค์ผ์ค๋ง : OS๊ฐ CPU์ ์ฌ์ฉ๊ถ์ ํ๋ก์ธ์ค์๊ฒ ๋บ์ ์ ์๋ ๊ฒฝ์ฐ
- ๋น์ ์ ์ค์ผ์ค๋ง : ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ I/O๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์คํ ๋ณด์ฅ
CPU ์ค์ผ์ค๋ง์ ์ข ๋ฅ
๋น์ ์ ์ค์ผ์ค๋ง : FCFS (Fist Come First Served)
- FIFO(First In First Out)๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ๋ง ๊ทธ๋๋ก ๊ฐ์ฅ ๋จผ์ ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋จผ์ CPU๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ๋ง์ฝ ์ฒ๋ฆฌํ๋๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ์์ชฝ์ผ๋ก ์ค๊ฒ ๋๋ฉด ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
๋น์ ์ ์ค์ผ์ค๋ง : SJF (Shortest Job First)
- FCFS์ ๋๊ธฐ์๊ฐ์ด ํฌ๋ค๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- FCFS๊ฐ ์ํ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ ์์ผ๋ก ์ค๊ฒ ๋๋ฉด ํ๊ท ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๋ค๋ ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ํ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ CPU๋ฅผ ํ ๋น์ํค๋๋ก ํ๋ ๊ฒ์ด๋ค.
- FCFS๋ณด๋ค ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ฐ์ํ์ง๋ง, ์งง์ ์์ ์ ์ ๋ฆฌํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
- ํ์ง๋ง CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ํ๋ก์ธ์ค์ ์ํ์๊ฐ์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊ธฐ์ ์ค์ ๋ก ์ ์ฉ์ํค๋ ์ด๋ ค์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋น์ ์ ์ค์ผ์ค๋ง : HRN (Hightest Response-ratio Next)
- ์ฐ์ ์์๋ฅผ ๊ณต์์ ์ด์ฉํ์ฌ ๊ณ์ฐํ์ฌ SJF์ ๋จ์ ์ธ ์ ์ ๋ถํ๋ฑ(์งง์ ์์ ์ ์ ๋ฆฌ)๋ฅผ ๋ณด์ํ ๋ฐฉ๋ฒ์ด๋ค.
- ์ฐ์ ์์ = (๋๊ธฐ์๊ฐ + ์คํ์๊ฐ) / ์คํ์๊ฐ
- ์ค๋ซ๋์ ๋๊ธฐํ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ฆ๊ฐ์ํด์ผ๋ก์ ๊ธฐ์ ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์๋ค.
์ ์ ์ค์ผ์ค๋ง : Priority Scheduling
- ์ค๋น ํ์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด, ๋์ฐฉํ ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋น๊ตํ์ฌ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ค.
- ๋ง์ฝ ๋์ผํ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋จผ์ ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ ํ ์๋ ์๋ค.
- ๋๊ธฐ ์๊ฐ์ ๋น๋กํ์ฌ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ ์์ด์ง ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๊ธฐ์ ์ํ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
์ ์ ์ค์ผ์ค๋ง : Round Robin
- FCFS์ ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋์ง๋ง ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ์๊ฐ์ ํ์ ํํ ๋งํผ CPU๋ฅผ ํ ๋น ๋ฐ๋๋ค.
- ๋ง์ฝ ํ์ ํํ ์ด ํฌ๋ฉด FCFS์ ๋์ผํด์ง๊ณ , ์์ผ๋ฉด Context Switching์ด ์ฆ์์ ธ์ ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ค.
์ ์ ์ค์ผ์ค๋ง : Multilevel-Queue
- ํ๋ก์ธ์ค์ ๊ทธ๋ฃน์ ๋ฐ๋ผ ํ๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํด๋๊ณ ํ ๋ณ๋ก ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ(๋ณดํต RR or FCFS)์ ์ง์ ํ๋ ๊ฒ์ด๋ค.
- foreground(Interactive Processes, System Processes)๋ Round Robin ์ค์ผ์ค๋ง์ ์ ์ฉ์์ผ Interactiveํ๊ฒ ๋ง๋ค๊ณ background๋(Batch Processes) ํ๋ก์ธ์ค๋ค์ FCFS ์ค์ผ์ค๋ง์ ์ ์ฉ์ํจ๋ค.
- ํน์ ํ์ ๋ค์ด๊ฐ๋ฉด ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก ์ด๋ํ์ง ๋ชปํ๋ค.
- ๋๊ธฐ์ด ๊ฐ์ ์ค์ผ์ค๋ง์ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
- ๊ณ ์ ์ฐ์ ์์ ์ ์ ํ ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ
๊ฐ ํ๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ณด๋ค ์ ๋์ ์ผ๋ก ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ๋ฐ๋ผ์ 3๋ฒ ํ๋ 1,2๋ฒ ํ๊ฐ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ ๋ ๊น์ง ์ ๋๋ก ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ํ์ ์ฌ๋ผ์ด์ฑ
ํ์ ํํ ์ ํ๋ง๋ค ๋ค๋ฅด๊ฒ ์ค์ ํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
์ ์ ์ค์ผ์ค๋ง : Multilevel-Feedback-Queue
- Multilevel Queue์ ๋ค๋ฅด๊ฒ ํ๋ก์ธ์ค์ ํ ๊ฐ ์ด๋์ด ํ์ฉ๋๋ค.
- ์ฐ์ ์์๋ ์ค์๋๋ฅผ ํ๋จํ์ฌ ์ง์ ๋์ง๋ง ์ด๊ฒ์ด ์ ๋์ ์ด์ง ์์์๋ ์๋ค, Multilevel Queue๋ ์ฐ์ ์์๊ฐ ์๋ชป๋ ๊ฒ์ ์์๋ ์์ ํ์ง ๋ชปํ์ง๋ง Multilevel Feedback Queue๋ ์๋ชป๋ ๊ฒ์ ์๋ฉด ํผ๋๋ฐฑ์ด ๊ฐ๋ฅํ๋ค.
- ํผ๋๋ฐฑ์ ์ํด ๋์ ์ฐ์ ์์ ํ๋ก ๊ฒฉ์์ํค๋ ์๊ธฐ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฒฉํ์ํค๋ ์๊ธฐ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ง์ง๋ง์ผ๋ก ํ๋ก์ธ์ค๋ค์ด ์ด๋ ํ์ ๋ค์ด๊ฐ์ง ๊ฒฐ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ค.
- ๋ฎ์ ์ฐ์ ์์ ํ์ ํ๋ก์ธ์ค๋ ๋์ ์ฐ์ ์์ ํ๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ์๋ง ์คํ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋์ ์ฐ์ ์์ ํ์ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด ๋ฎ์ ์ฐ์ ์์ ํ์์ ์คํ ์ค์ด๋ ํ๋ก์ธ์ค๋ ์ค๋จ๋๋ค.
- ๋์ ๋ฐฉ์
1. ํ๋ก์ธ์ค๊ฐ ์คํ์ ์์ํ๋ฉด ๋จผ์ ํ1์ ๋ค์ด๊ฐ๋ค. 2. ํ 1์์ ํ๋ก์ธ์ค๋ ํํ 4๋ก ์คํ๋๊ณ ํํ 4๋ฅผ ํตํด ์๋ฃ๋๊ฑฐ๋ I/O์์ ์ ์ํํ๊ฒ ๋๋ ๊ฒฝ์ฐ์๋ ์ฐ์ ์์๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ณ ๋ค์ ํ1์์ ์คํํ๊ฒ ๋๋ค. 3. ๋ง์ฝ ํํ 4๋ก ์๋ฃ๋์ง ์์ผ๋ฉด ํ2๋ก ์ด๋ํ๋ค. 4. 2,3๋ฒ ๊ณผ์ ๋ ํ2์์ ๋ฐ๋ณต๋์ง๋ง ํํ 8๋ก ์คํ๋๋ฉฐ, ๋ง์ฝ ํํ 8๋ก ์๋ฃ๋์ง ์์ผ๋ฉด ํ3์ผ๋ก ์ด๋ํ๊ฒ ๋๋ค. 5. ๋ง์ง๋ง ๋๊ธฐ์ด ํ๋ก์ธ์ค๋ FCFS ๋ฐฉ์์ผ๋ก ์คํ๋๊ฒ ๋๋ค.
์ค์ผ์ค๋ง์ ์ฑ๋ฅ์ ์ธก์ ํ ์ ์๋ ๊ธฐ์ค
- Response Time : ์์ ์ด ์ฒ์ ์คํ๋๊ธฐ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
- Turnaroudn TIme : ์คํ ์๊ฐ๊ณผ ๋๊ธฐ ์๊ฐ์ ๋ชจ๋ ํฉํ ์๊ฐ์ผ๋ก ์์ ์ด ์๋ฃ๋ ๋ ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
Reference
https://www.geeksforgeeks.org/multilevel-queue-mlq-cpu-scheduling/
https://gyoogle.dev/blog/computer-science/operating-system/CPU%20Scheduling.html
https://www.geeksforgeeks.org/multilevel-feedback-queue-scheduling-mlfq-cpu-scheduling/