(1) ๊ฐ์
CPU๋ ์ปดํจํฐ ์์ ์ค ๊ฐ์ฅ ์ค์ํ ์์์ด๋ค.
ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
- *์ค๋น ์๋ฃ(ready) ์ํ์ ์๋ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ค ํ๋ก์ธ์ค๋ฅผ CPU์ ํ ๋นํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํ๋ ์ ์ฑ ์ด๋ค.
- CPU์ *์ฒ๋ฆฌ๋(Throughput)์ต๋ํ์ *๋ฐํ์๊ฐ(Turnaround Time)์ ์ต์ํ๋ฅผ ๋ชฉํ๋ก ํ๋ค.
*ready state : Main Memory์ ์ฌ๋ผ์ ์์ง๋ง CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์ํ
*์ฒ๋ฆฌ๋ : CPU๊ฐ ๋จ์ ์๊ฐ๋น ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค์ ๊ฐ์
*๋ฐํ์๊ฐ : ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ํด์ ๋๋ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ
(2) ํ๋ก์ธ์ค ๊ด๋ฆฌ
ํ๋ก์ธ์ค์ ๋ค์ํ ์ ์
- ์คํ(Executing Running)์ค์ธ ํ๋ก๊ทธ๋จ = ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ํ๋ก๊ทธ๋จ
- PCB(Process Control Block)๋ฅผ ์ง๋ ํ๋ก๊ทธ๋จ
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ(Program Counter)๋ฅผ ์ง๋ ํ๋ก๊ทธ๋จ
OS์ ํ๋ก์ธ์ค ๊ด๋ฆฌ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ๋ฐ ์์คํ ํ๋ก์ธ์ค ์์ฑ๊ณผ ์ญ์
- ํ๋ก์ธ์ค์ ์ผ์ ์ค์ง(suspend)์ ์ฌ์ํ(redo)
- ํ๋ก์ธ์ค ์ค์ผ์ค๋ง(์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ ๊ฒ์ธ๊ฐ?)
- ํ๋ก์ธ์ค ๋๊ธฐํ(2๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ๋๊ธฐํ๋ ์ด๋ป๊ฒ?)
- ํ๋ก์ธ์ค ๊ฐ ํต์ (2๊ฐ ์ด์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ํต์ ์ ์ด๋ป๊ฒ?)
- ๊ต์ฐฉ์ํ ์ฒ๋ฆฌ(2๊ฐ ์ด์์ ํ๋ก์ธ์ค ๊ฐ์ ๊ฝ ๋งํ ๋ฌธ์ ๋ ์ด๋ป๊ฒ?)
(3) ํ๋ก์ธ์ค ๊ตฌ์ฑ ์์
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ๋ฐ๋์ ์คํ๋๊ธฐ ์ ์ ์ฃผ๊ธฐ์ต์ฅ์น(๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ)์ ๋ก๋ ๋์ด์ผ ํ๋ค.
- ์ฃผ๊ธฐ์ต ์ฅ์น์ ๋ก๋๋ ํ๋ก๊ทธ๋จ -> ํ๋ก์ธ์ค(Process)
์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋๋ ํ๋ก์ธ์ค์ ๊ตฌ์ฑ ์์
- Code ์์ญ : ํ๋ก๊ทธ๋จ ์ฝ๋ ์์ฒด(CPU๊ฐ ํด์ํ ์ ์๋ ๋ฐ์ด๋๋ฆฌ ์ฝ๋ ์ํ), ์คํ ๋ช ๋ น์ด ์ฝ๋(์งํฉ)
- Data ์์ญ : ํ๋ก๊ทธ๋จ์ ์ ์ญ ๋ณ์(Global variable)๋ ์ ์ ๋ณ์(Static variable)ํ ๋น
- Stack ์์ญ : ์ง์ญ ๋ณ์(Local variable)์ ํจ์(๋ฉ์๋) ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์๋ฅผ ์ํ ๊ณต๊ฐ
- Heap ์์ญ : ๋ฉ๋ชจ๋ฆฌ์ ๋์ ํ ๋น์ ์ํ ๊ณต๊ฐ
| ๊ตฌ์ฑ ์์ |
| ์คํ ๋ช ๋ น์ด์ฝ๋ (์ฝ๋ ์์ญ) |
| ์ ์ญ๋ณ์ / ์ ์ ๋ณ์ (๋ฐ์ดํฐ ์์ญ) |
| ๋์ ํ ๋น (ํ ์์ญ) |
| . . . |
| ์ง์ญ๋ณ์ / ์ ๋ฌ์ธ์ (์คํ ์์ญ) |
(4) Process State
- ์ค๋น(์๋ฃ)์ํ (Ready State) : CPU ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ํ, ์ฆ CPU๋ฅผ ํ ๋น ๋ฐ์ ์ ์๋ ์ํ, ํน์ CPU๊ฐ ํ๋ก์ธ์ค ์์ ์ ์ฒ๋ฆฌํด ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ด๋ค.
- ์คํ ์ํ(Running State) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น ๋ฐ์์ ์ฌ์ฉํ๊ณ ์๋ ์ํ
- ๋๊ธฐ ์ํ(Block State) : ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์๋(๋ฐ๋ฉ)ํ๊ณ , ์ ์ถ๋ ฅ(I/O)์ ์ฒ๋ฆฌํ๊ณ ์๋ ์ํ

์คํ ์ํ์์๋ ํ๋ก์ธ์ค ์ฒ๋ฆฌ๊ฐ ๋๋ ์๋, ์๊ฐ์ด ๋ค ๋ผ์ ๋์๊ฐ์๋ ์๋๋ฉด ์ ์ถ๋ ฅํ ์๋ ์๋ 3๊ฐ์ง ๊ธฐ๋ฅ์ด ์๋ค.
ํ๋ก์ธ์ค์ ์ํ ์ ํ
- ์ค๋น ์ํ -> ์คํ ์ํ (Dispatch)
- ์คํ ์ํ -> ์ค๋น ์ํ (Timer Runout, ์๊ฐ์ด ๋ค ๋จ)
- ์คํ ์ํ -> ๋๊ธฐ ์ํ (Block, CPU ๋ฐ๋ฉํ๊ณ ์ ์ถ๋ ฅ ์ํ)
- ๋๊ธฐ ์ํ -> ์ค๋น ์ํ (Wakeup , ์ ์ถ๋ ฅ ์๋ฃํ๊ณ ์ค๋น ์ํ๋ก)
ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ ๋ด์ Traffic Controller(ํธ๋ํฝ ์ ์ด๊ธฐ)๊ฐ ํ๋ก์ธ์ค์ ์ํ๋ฅผ ์ ํํ๋ค.
(5) Process Control Block(PCB)
- ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก์ผ๋ก Process Descriptor(ํ๋ก์ธ์ค ์ค๋ช )๋ผ๊ณ ๋ ํ๋ค.
- ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ํ์ฌ ์ด์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ํ๋ก์ธ์ค์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ(ํ ์ด๋ธ ๊ตฌ์กฐ)์ด๋ค.
- ๊ฐ Process๋ ์๊ธฐ๋ง์ PCB๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ฆ, ๋ชจ๋ Process๊ฐ PCB๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ํ๋ก์ธ์ค ์์ฑ ์์ ๋ง๋ค์ด์ง๊ณ , ์ํ ์๋ฃ ์์ ์ญ์ ๋๋ค. ๋ํ ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ ๋ด์ Traffic Controller์ ์ํ์ฌ ๋ด์ฉ์ด ์์ ๋ ์ ์๋ค.
๊ตฌ์ฑ ํํ(PCB์ ํฌํจ๋๋ ์ ๋ณด)
- ํ๋ก์ธ์ค์ ํ์ฌ ์ํ(์ค๋น, ์คํ, ๋๊ธฐ)
- ํ๋ก์ธ์ค์ ๊ณ ์ id(identifier)
- ํ๋ก์ธ์ค์ ์ฐ์ ์์
- ํ๋ก์ธ์ค๊ฐ ์ ์ฌ๋ ๊ธฐ์ต์ฅ์น์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- ํ๋ก์ธ์ค์ ํ ๋น๋ ์์(์ฅ์น)๋ฑ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- CPU ๋ด์ ์๋ ๊ฐ์ข ๋ ์ง์คํฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ(ํ๋ก์ธ์ค ๋ด์์ ๋ค์์ ์คํํด์ผ ํ ๋ช ๋ น์ด์ ์ฃผ์)
โป CPU๋ ์์ฒด์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ๋ถ ๊ฐ์ง๊ณ ์๋ค -> Register(์ ์ถ๋ ฅ ์๋๊ฐ ๋น ๋ฆ)
(6) Process Scheduling
๋ชฉ์
1) ๊ณต์ ์ฑ (๋ฌดํ ๋๊ธฐ ๋ฐฉ์ง)
2) ์ฒ๋ฆฌ ๋ฅ๋ ฅ ์ต๋ํ (๋จ์ ์๊ฐ ๋ด์ ์ต๋ํ์ ํ๋ก์ธ์ค ์ํ)
3) ์๋ต ์๊ฐ์ ์ต์ํ (์ฌ์ฉ์์ ๋ํ ๋น ๋ฅธ ์๋ต)
4) ์์ธก ๊ฐ๋ฅ (๋์ผ ํ๋ก์ธ์ค๋ ๊ฑฐ์ ๊ฐ์ ๋น์ฉ ๋ฐ ์๊ฐ ๋ด์ ์ํ๋์ด์ผ ํจ)
5) overhead์ ์ต์ํ (๋ญ๋น๋๋ ์์ ์ต์ํ)
6) ์์ ์ฌ์ฉ์ ๊ท ํ ์ ์ง
7) ๋น ๋ฅธ ์๋ต๊ณผ ์์ ์ด์ฉ ๊ฐ์ ๊ท ํ ์ ์ง (ํจ๊ณผ์ ์ธ ์์ ํ์ฉ VS ์ค์๊ฐ ์์คํ
)
8) ์คํ์ ๋ฌดํํ ์ง์ฐ์ ํผํ ๊ฒ
9) ์ฐ์ ์์์ ์ค์
10) ์ฆ์ ์์๋ค์ ์ฐจ์งํ๊ณ ์๋ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ๊ถ ๋ถ์ฌ
11) ์ข ๋ ๋ฐ๋์งํ ๋์์ ๋ณด์ด๋ ํ๋ก์ธ์ค์๊ฒ ๋ ์ข์ ์๋น์ค ์ ๊ณต
12) ์์คํ
์ ๊ณผ์คํ ๋ถํ ๊ฐ์
์ด๋ฌํ ์ค์ผ์ค๋ง์ ๋ชฉ์ ๋ค ๊ฐ์ ์ํธ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ด ์ค์ผ์ค๋ง์ด ๋ณต์กํด์ง๋ค.
โถ ๋ฐฉ์๋ณ ๋ถ๋ฅ โ
โ Non Preemptive scheduling
- ํ๋์ ํ๋ก์ธ์ค์ CPU๊ฐ ํ ๋น๋๋ฉด ๊ทธ ํ๋ก์ธ์ค์ ์ํ์ด ๋๋ ๋๊น์ง CPU๋ ๊ทธ ํ๋ก์ธ์ค๋ก๋ถํฐ ๋น ์ ธ ๋์ฌ ์ ์๋ค.
- ์๋ต ์๊ฐ ์์ธก์ด ๊ฐ๋ฅํ๋ ์งง์ ์์ ์ ํ๋ก์ธ์ค๊ฐ ๊ธด ์์ ์ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ๋ฐ์ํ๊ฒ ๋๋ค.
- ์ผ๊ด ์ฒ๋ฆฌ ์์คํ ์ด ์ด ์๊ณ ๋ฆฌ์ฆ์ ์จ์ผ ํ๋ค.
Ex) Priority, FCFS, SJF, HRN
โ Preemptive scheduling
- ํ๋์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฐจ์งํ๊ณ ์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ์ฌ ์ํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ค์ง์ํค๊ณ CPU๋ฅผ ์ฐจ์งํ ์ ์๋ค.
- ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ํํ ๋ ์ ๋ฆฌํ๋ค.
- ์ค์๊ฐ ์์คํ ๋๋ ์๋ถํ ์์คํ ์์ ๋น ๋ฅธ ์๋ต ์๊ฐ์ด ๋ณด์ฅ ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง ์ด์ ์ ์ํ๋๋ ํ๋ก์ธ์ค์ ์ ๋ณด(context)๋ฅผ ๋ณ๋๋ก ์ ์ง ๊ด๋ฆฌํด ๋์ด์ผ ํ๋ ์ค๋ฒํค๋(๋ถ๋ด)๊ฐ ๋ฐ์ํ ์ ์๊ณ ๋๋ ๋๋ฌด ๋ง์ ์ ์ ์์ context switching(๋ฌธ๋งฅ ๊ตํ)๋ถ๋ด๋ ๋ฐ์ํ ์ ์๋ค.
Ex) Priority, SRT, Round-Robin, Multilevel Queue/Feedback Queue
1. Priority scheduling
- non preemptive, preemptive ์ด ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
- ์ฐ์ ์์๊ฐ ๊ฐ ํ๋ก์ธ์ค์๊ฒ ์ฃผ์ด์ง๋ฉฐ, CPU๋ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋๋ค.
- ๋ด๋ถ์ ์์ธ(์ ํ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ๋, ๊ฐ๋ฐฉ๋ ํ์ผ์ ์, etc)๊ณผ ์ธ๋ถ์ ์์ธ(ํ๋ก์ธ์ค ์ค์์ฑ, ์ฌ์ฉ ๋ถ์ ๋ฑ์ ์ ์ฑ ์ ์์ธ)์ ์ด์ฉํ์ฌ ์ฐ์ ์์๋ฅผ ํ ๋นํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ๋ฎ์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๋ค์ด CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๊ณ์ ๋๊ธฐํด์ผ ๋ผ์ indefinite blocking(๋ฌดํ ๋๊ธฐ) or starvation(๊ธฐ์ ํ์)์ด ๋ฐ์ํ ์ ์๋ค.
- ์์ ๋ฌธ์ ์ ์ ๋ณด์ํ๊ธฐ ์ํด์ *Aging ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
*Aging๊ธฐ๋ฒ : ์ค๋ซ๋์ ์์คํ ์์ ๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๋ฅผ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํจ๋ค.
- ๊ฐ ํ๋ก์ธ์ค์๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ ์ฐ์ ์์ ๊ธฐ๋ฒ๊ณผ ๋์ ์ฐ์ ์์ ๊ธฐ๋ฒ์ด ์๋ค.
- static priority : ์๋์ ์ผ๋ก ์ค๋ฒํค๋๋ ์ ์ผ๋, ์ฃผ์ ์ฌ๊ฑด์ ๋ณํ์ ์ ์ํ์ง ๋ชปํ๊ณ ์ฐ์ ์์๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค.
- dynamic priority : ํ์์ ๋ฐ๋ผ ์ฐ์ ์์๋ฅผ ์ฌ๊ตฌ์ฑํ๊ฑฐ๋ ์ฃผ๋ณ ์ํฉ ๋ณํ์ ์ ์ ์ํ์ง๋ง, ๋ณต์กํ๊ณ ์ค๋ฒํค๋๊ฐ ๋ง์์ง๋ค.
2. Deadline scheduling
- ์์ ๋ค์ด ๋ช ์๋ ์๊ฐ์ด๋ ๊ธฐํ ๋ด์ ์๋ฃ๋๋๋ก ๊ณํํ๋ ์ค์ผ์ค๋ง์ด๋ค.
- ์ค์๊ฐ ์์คํ
์ ์ ํจํ๊ฒ ์ ์ฉ ๊ฐ๋ฅํ๋, ์ค์ ์ ์ฉ์๋ ๋ง์ ์ด๋ ค์์ด ์๋ค.
- ์ฌ์ฉ์๋ ์ฌ์ ์ ์์ ์ด ์๊ตฌํ๋ ์ ํํ ์์์ ์ ์ํด์ผ ํ๋ค.
- ๋ค๋ฅธ ์ฌ์ฉ์ ์์ ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๊ธฐํ๋ถ ์์ ์ ์ํํด์ผ ํ๋ค.
- ๊ธฐํ๊น์ง ์์ ์ ๋๋ด๊ธฐ ์ํ์ฌ ์์ ๋ฐฐ๋ถ์ ์ ์คํ ํด์ผ ํ๋ค.
- ๋ง์ ์์ ๊ธฐํ๋ถ ์์ ์ด ๋์์ ์คํํ๋ ๊ฒฝ์ฐ, ์ค์ผ์ค๋ง์ด ๋๋ฌด ๋ณต์กํด์ง๋ค.
- ๊ธฐํ๋ถ ์ค์ผ์ค๋ง์ ๋ฐ๋ฅธ ์ง์ค์ ์์ ์ด์์ ๋ง์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํจ๋ค.
๋ฐฉ์(Real-Time System Scheduling)
- Static Sheduling : ์์คํ
์ ์ํด ์คํ๋๋ ์์
์งํฉ์ด ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋ ๊ฒฝ์ฐ
Ex) Rate Monotonic(RM) Algorithm : ๋ํ์ ์ธ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ์์ ์ฃผ๊ธฐ๊ฐ ์งง์์๋ก ๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค. - Dynamic Scheduling : ์์
์ ๋ฐ์ ์๊ฐ์ด๋ ํน์ฑ์ ๋ฏธ๋ฆฌ ์์ธกํ ์ ์์ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ฉฐ, ๋ณด์ฅ๋ ์ฃผ๊ธฐ์ ์๊ฐ ๋ด์ ์๋น์ค๋ฅผ ๋ณด์ฅํ๋ค.
Ex) Earliest-Deadline First(EDF) Algorithm : ๋ํ์ ์ธ ๋์ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก, ์๊ณ ์๊ฐ์ด ๊ฐ์ฅ ๊ทผ์ ํ ํ์คํฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ํํ๋ ๋ฐฉ์์ด๋ค.
3. Multiple Processor scheduling
ํ๋ก์ธ์๋ค(CPU)์ ํํ๊ฐ ๋์ผํ ๋์ง ์์คํ ๋๋ ์๋ก ๋ค๋ฅธ ์ด์ง ์์คํ ์ด ์กด์ฌํ๋ค.
์ด์ง ์์คํ
- ๊ฐ ํ๋ก์ธ์๋ ์์ ์ ํ๋ก์ธ์ค๋ฅผ ์ํ Ready Queue๊ฐ ๊ฐ๊ฐ ์์ผ๋ฉฐ ์์ ๋ง์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง๊ฒ ๋๋ค.
๋์ง ์์คํ
- ํ๋ก์ธ์(CPU)๋ค์ด ๋์ง์ผ ๊ฒฝ์ฐ load balancing(๋ก๋ ๋ฐธ๋ฐ์ฑ)์ ์ํํด์ผ ํ๋ค.
- ๋์ง ์์คํ
์์์ ๋ ๊ฐ์ง ์ค์ผ์ค๋ง ๋ฐฉ์
- ๊ฐ ํ๋ก์ธ์(CPU)๊ฐ ์ค์ค๋ก ์ค์ผ์ค๋งํ๋ฉฐ, ๊ณต๋ ์ค๋น ํ๋ฅผ ์กฐ์ฌํ์ฌ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ค.
- ํ ํ๋ก์ธ์๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์๋ฅผ ์ํ ์ค์ผ์ค๋ฌ๋ก์ ์ง์ ๋์ด master slave structure(์ฃผ์ข ๊ตฌ์กฐ)๋ฅผ ๊ตฌ์ฑํ๋ค.
*์ด์ง : CPU๊ฐ ๋ค๋ฅธ ๊ฒ
*๋์ง : ํ๋์ Queue์ ์ฌ๋ฌ ๊ฐ์ CPU๊ฐ ์ฐ๊ฒฐ๋ ๊ฒ
4. First Come First Served(FCFS) scheduling
- non preemptive ๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ณ ๊ฐ์ฅ ๊ฐ๋จํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ํ๋ก์ธ์ค๋ค์ด ์ค๋น ์ํ์ ํ์ ๋์ฐฉํ ์์์ ๋ฐ๋ผ CPU๋ฅผ ํ ๋น ๋ฐ๋๋ค.
- ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด ์์ ์๋ฃ์๊ฐ์ ์์ธกํ๊ธฐ๊ฐ ์ฉ์ดํ์ง๋ง, ํน์ ํ๋ก์ธ์ค์ ๋ํ์ฌ ๋น ๋ฅธ ์๋ต ์๊ฐ ๋ณด์ฅ์ด ์ ๋๋ค.
- ๊ธด ์์
์ด๋ ์ค์ํ์ง ์์ ์์
์ด ์งง์ ์์
์ด๋ ์ค์ํ ์์
์ ์ค๋ซ ๋์ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ ์ ์๋ค.
- convoy effect(ํธ์ ํจ๊ณผ) : ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๊ฐ CPU์์ ์ํ๋๋ ๋ฒ์คํธ ์๊ฐ์ด ๋งค์ฐ ๊ธธ๋ฉด, ๊ทธ ๋ค์ ๋์ฐฉํ ํ๋ก์ธ์ค๊ฐ ์ฒซ๋ฒ์งธ ํ๋ก์ธ์ค๊ฐ ๋๋ ๋๊น์ง ๋งค์ฐ ๊ธด ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ ํ์

- *ํ๊ท ๋๊ธฐ ์๊ฐ๊ณผ *ํ๊ท ๋ฐํ ์๊ฐ์ Gantt chart(๊ฐํธ ์ฐจํธ)๋ฅผ ์ด์ฉํด ์ฑ๋ฅ ํ๊ฐ๋ฅผ ํ๋ฉด ๋นํจ์จ์ ์ด๋ผ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋์ ์ ์ฌ์ฉํ์ง ์๋๋ค.
*ํ๊ท ๋๊ธฐ ์๊ฐ : ํ์์๋ถํฐ CPU๋ก ๋ฐ๊ธฐ ์ง์ ์ ์๊ฐ, CPU๋ฅผ ๋ฐ๊ธฐ ์ํด์ ๋๊ธฐํ๋ ์๊ฐ
*ํ๊ท ๋ฐํ ์๊ฐ : ํ๋ก์ธ์ค๊ฐ ์์ ํ ๋๋๋ ์๊ฐ
5. Shortest Job First(SJF) scheduling
- non preemptive ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , ํ๋ก์ธ์ค ์ค์์ ์ํ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ๊ฒ์ ๋จผ์ ์ํํ๋ ๋น์ ์ ์ค์ผ์ค๋ง์ด๋ค.
- FCFS๋ฅผ ๋ณด์ํ ๊ฒ์ผ๋ก ๋ณด๋ค ํ๊ท ๋๊ธฐ์๊ฐ์ ๊ฐ์์ํจ๋ค.
- ๋ฌธ์ ์ ์ ์ํ๋ ํ๋ก์ธ์ค๊ฐ ์ผ๋ง๋ ๊ธด ๊ฒ์ธ๊ฐ๋ฅผ ์ ํํ ์์์ผ ํ๋๋ฐ ์ด ์ ๋ณด๋ฅผ ์ป๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๊ณตํ๋ ์ ๋ณด์ ์์กดํ๊ณ , ๋ถ์ ํํ ์ ๋ณด๋ ๊ฑฐ์ง ์ ๋ณด์ ์ํ์ด ์กด์ฌํ๋ค.

6. Shortest Remaining Time(SRT) scheduling
- preemptive ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , SJF๋ฐฉ๋ฒ์ ์ ์ ๋ฐฉ์์ ๋์ ํ ๊ฒ์ด๋ค.
- ์๋ก ๋์ฐฉํ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ์ฌ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ ๋ฐ ๊ฐ์ฅ ์งง์ ์๊ฐ์ด ์์๋๋ค๊ณ ํ๋จ๋๋ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ํํ๋ค.
- ์คํ์ค์ธ ํ๋ก์ธ์ค๋ผ๋ ๋จ์ ์ฒ๋ฆฌ์๊ฐ์ด ๋ ์งง๋ค๊ณ ํ๋จ๋๋ ํ๋ก์ธ์ค๊ฐ ํ์ ๋ค์ด์ค๋ฉด ์ธ์ ๋ผ๋ ์คํ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์ ์ ๋๋ค.
- ์ํ์ค์ธ ๊ฐ๊ฐ์ ์์ ๋ค์ ๋ํ ์คํ์๊ฐ์ ์ถ์ ๋ณด์ ํด์ผ ํ๋ค.(overhead)
- SRT๋ ๋์ฐฉ์๊ฐ์ด ํ์ํจ.

๊ณ์ฐํ ๋ ๋ณต์กํ๋ฏ๋ก ํ๋ฅผ ์์ฑํด์ ํ๊ท ๋๊ธฐ ์๊ฐ๊ณผ ํ๊ท ๋ฐํ์๊ฐ์ ๊ตฌํ๋ค.
7. Round-Robin scheduling
- preemptive ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , ์๋ถํ ์์คํ ์ ์ํ์ฌ ๊ณ ์๋ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ๊ฐ ํ๋ก์ธ์ค๋ ์์๋๋ก ๊ฐ์ ํฌ๊ธฐ์ CPU ์๊ฐ์ ํ ๋น ๋ฐ์ผ๋ฉฐ, ํ ๋น ์๊ฐ ๋ด์ ์๋ฃ๋์ง ๋ชปํ๋ฉด ์ค๋น ํ์ ๊ฐ์ฅ ๋ค๋ก ๋ณด๋ด์ง๋ค.
- CPU time quantum(ํ ๋น ์๊ฐ)์ ํฌ๊ธฐ๋ ๋ณดํต 10์์ 100ms ์ฌ์ด๋ค.

- ํ ๋น ์๊ฐ์ด ๋๋ฌด ํฐ ๊ฒฝ์ฐ : FCFS ๋ฐฉ์๊ณผ ๋๊ฐ์ด ๋์ํ๋ค. (ํ๋ฒ์ CPU ํ ๋น์ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋๋ค.)
- ํ ๋น ์๊ฐ์ด ๋๋ฌด ์์ ๊ฒฝ์ฐ : context switching์ ์ํ overhead๊ฐ ํฌ๊ฒ ๋ฐ์ํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋๋ถ๋ถ์ ์๊ฐ์ด CPU๋ฅผ ํ ๋นํ๋๋ฐ ์๋ชจ๋๋ค.

- CPU ํ ๋น์๊ฐ์ ๋ฐ๋ฅธ ๋ฌธ๋งฅ ๊ตํ (Context Switching) ํ์
- CPU ํ ๋น์๊ฐ์ด ๊ฐ๊ฐ 11ms, 8ms, 2ms๋ก ๊ฒฐ์ ๋๋ ๊ฒฝ์ฐ
8. Multilevel Queue scheduling
- preepmtive๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก์ธ์ค๋ค์ ์ํ ์ค๋น ํ๋ฅผ ๋ค์์ ๋ณ๊ฐ ํ๋ก ๊ตฌ๋ถํ์ฌ ์ค์ผ์ค๋งํ๋ค.
- ๊ธฐ์ต์ฅ์น์ ์๊ตฌ๋์ด๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์ ํน์ ํ๋ก์ธ์ค์ ์ ํ๊ณผ ๊ฐ์ ํ๋ก์ธ์ค์ ํน์ฑ์ ๊ทผ๊ฑฐํด ํ๋ก์ธ์ค๋ค์ ํด๋น ํ์ ์ง์
ํ๊ฒ ๋๋ค.
- ๊ฐ ํ๋ ์์ ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์๋ฅผ ๋ค์ด ๋ํํ ์์ ์ ์ํ ํ๋ ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ณ , ์ผ๊ด์ฒ๋ฆฌ ์์ ์ ์ํ ํ๋ FCFC ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ค.
- ์ผ๊ด์ฒ๋ฆฌ ์์ ์ด ์คํ ์ค์ผ ์ง๋ผ๋ ์์ ๋จ๊ณ ํ์ ์์ ์ด ๋ค์ด์ค๋ฉด ์ผ๊ด์ฒ๋ฆฌ ์์ ์ ์์ ๋จ๊ณ ํ๋ก์ธ์ค ์์ ์ ์ํ์ฌ CPU๋ฅผ ์ ์ ๋นํ๋ค.

9. Multilevel Feedback Queue scheduling
- preemptive๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , ํ๋ก์ธ์ค๋ค์ CPU์ ์ฌ์ฉ์๊ฐ์ ๋ฐ๋ผ ์ ์ถ๋ ฅ ์์ฃผ์ CPU์์ฃผ ํ๋ก์ธ์ค๋ก ๊ตฌ๋ถ๋๋๋ฐ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ก ๋ค๋ฅธ CPU ํ ๋น์๊ฐ์ ๋ถ์ฌํ ํ์๊ฐ ์๋ค.
- ์๋ก์ด ํ๋ก์ธ์ค๋ Queueing network์ ๋จ๊ณ1ํ์ ์ถ๊ฐ๋์ด, ๊ทธ ํ๋ก์ธ๋ FCFS์ ์ํ์ฌ CPU๋ฅผ ํ ๋น ๋ฐ๋๋ค.(๋์ ์ฐ์ ์์ ๋ฐฐ์ )
- ํ๋ก์ธ์ค๊ฐ ๋๋๊ธฐ ์ ์ ํ ๋น๋ ์๊ฐ์ด ๋ง๋ฃ๋๊ฑฐ๋ ์ ์ถ๋ ฅ ๋ฑ์ผ๋ก ์ธํ์ฌ CPU๋ฅผ ์๋ํ๋ค๋ฉด ๊ทธ ํ๋ก์ธ์ค๋ ๊ทธ ๋ค์ ํ์ ๋จ๊ณ์ ํ๋ก ์ด๋๋์ด ์์๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- ๋ง์ง๋ง ๋จ๊ณ์ ํ์์๋ ๊ทธ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง round-robin ๋ฐฉ์์ผ๋ก ์ค์ผ์ค๋ง ๋๋ค.
์ค์ผ์ค๋ง ๊ธฐ์ค
- ์งง์ ์์ ์ ์ ๋ฆฌ
- ํจ์จ์ ์ธ ์ ์ถ๋ ฅ ์ฅ์น ์ด์ฉ์ ์ํ์ฌ ์ ์ถ๋ ฅ ์์ฃผ ํ๋ก์ธ์ค์ ์ฐ์ ๊ถ ์ ๊ณต
- ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์์ ์ ํน์ฑ์ ์๊ณ ๊ทธ์ ๋ง๊ฒ ์ค์ผ์ค๋ง์ ๋ณ๊ฒฝ
- ๋๋ถ๋ถ์ ๋ค๋จ๊ณ ํผ๋๋ฐฑ ์ฒด๊ณ์์๋ ํ๋ก์ธ์ค๊ฐ ํ์ ๋จ๊ณ์ ํ๋ก ์ฎ๊ฒจ๊ฐ์๋ก ์ฃผ์ด์ง๋ CPU ํ ๋น ์๊ฐ์ ํฌ๊ฒ ์ค์ ํ๋ค.

10. High Response ratio Next(HRN) scheduling
- non preemptive๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ , ์ผ๋จ ํ ์์ ์ด CPU๋ฅผ ์ฐจ์งํ๋ฉด ๊ทธ ์์ ์ ์์ฑ๋ ๋ ๊น์ง ์คํ๋๋ค.
- SJF ์ค์ผ์ค๋ง์ ๋ฌธ์ ์ ์ธ ๊ธด ์์ ๊ณผ ์งง์ ์์ ๊ฐ์ ์ง๋์น ๋ถํ๋ฑ์ ๋ณด์ํ ๊ธฐ๋ฒ์ผ๋ก, ์ฐ์ ์์ ๊ณ์ฐ์์์ ์์คํ ์๋ต์๊ฐ์ด ํด์๋ก ์ฐ์ ์์๊ฐ ๋์์ง๋ค.
- ์ฐ์ ์์(์์คํ ์๋ต์๊ฐ) = (๋๊ธฐ์๊ฐ + ๋ฒ์คํธ ์๊ฐ) / ๋ฒ์คํธ ์๊ฐ
- ์งง์ ์์ ์ด๋ ๋๊ธฐ ์๊ฐ์ด ํฐ ์์ ์ผ์๋ก ์ฐ์ ์์๊ฐ ๋์์ง๋ค.
- Aging์ ๊ตฌํ ๋ฐฉ๋ฒ
Thread
ํ๋ก์ธ์ค์ ์ฐ๋ ๋์ ๊ด๊ณ

Thread ํน์ง
- ๊ฐ ์ฐ๋ ๋๋ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋๋ค
- ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ๊ฐ์ ์ฐ๋ ๋๊ฐ ์กด์ฌํ๋ค.
- ํ๋ก์ธ์ค ๋ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๋ ๋๋ค์ด ๊ณต์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ์ฐ๋ ๋๋ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค์ ์์๋ค์ ๊ณต์ ํ์ง๋ง, ๊ทธ ์์ ์ ์ฒ๋ฆฌ ์๊ฐ๊ณผ ์คํ, ๋ ์ง์คํฐ๋ค์ด ํ ๋น๋๋ค.
- ํ๋ก์ธ์ค ๊ฐ์ ์ ํ ์๋๋ณด๋ค ์ฐ๋ ๋ ๊ฐ์ ์ ํ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.
- ์ฐ๋ ๋์ ์คํ/์ข ๋ฃ ์์๋ ์์ธก ํ ์ ์๋ค.(๋ ๊ฐ ์ด์์ ์ฐ๋ ๋๊ฐ ๊ณต์ ๋ณ์ ์ฌ์ฉ ์ ๋ฌธ์ ๋ฐ์ ์ํ)
- ์ฐ๋ ๋๋ ์๋ก ๋ ๋ฆฝ์ ์ด์ง๋ง, ํ ์ฐ๋ ๋๊ฐ ์ทจํ ํ๋์ ํ๋ก์ธ์ค์ ์๋ ๋ค๋ฅธ ์ฐ๋ ๋์ ์ํฅ์ ๋ฏธ์น๋ค.

'๐ CS & Infra > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [OS] 05. ๋์คํฌ ์ค์ผ์ค๋ง (0) | 2023.10.16 |
|---|---|
| [OS] 01. ์ด์์ฒด์ ์๊ฐ (2) (0) | 2023.10.16 |
| [OS] 04. ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ (0) | 2023.10.16 |
| [OS] 03. ๊ธฐ์ต์ฅ์น ๊ด๋ฆฌ (0) | 2023.10.16 |
| [OS] 01. ์ด์์ฒด์ ์๊ฐ (1) (0) | 2023.10.16 |