- Ready ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค ๋๊ตฌ์๊ฒ CPU๋ฅผ ํ ๋นํ ๊ฒ์ธ๊ฐ์ ๋ํ ์ ์ฑ
- Batch ์์คํ ์ด๋ - TimeSharing ์์คํ ์ด๋์ ๋ฐ๋ผ ๋ค๋ฆ
- Context Switching Overhead๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
- user mode => kernel mode ๋ชจ๋ ์ค์์นญ
- ํ์ฌ์ ์ํ์ ๋ณด ์ ์ฅ
- ์ฃผ์๊ณต๊ฐ (memory map) ์ ๋ณด ์ ์ฅ
- ๋ค์์ ์คํํ ํ๋ก์ธ์ค ์ ํ (์ค์ผ์ฅด๋ง)
- PCB์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ๋ฆฌ๋ก๋ฉ
Process Behavior
- CPU๋ฅผ ์ฌ์ฉํ๋ ํจํด์ ๋ฐ๋ผ
- a) Compute Bound : CPU ์ฐ์ฐ์ ๋น์ค์ด ๋์ ํ๋ก์ธ์ค
- b) I/O Bound : I/O ์ฐ์ฐ์ ๋น์ค์ด ๋์ ํ๋ก์ธ์ค
- CPU์ ์ฑ๋ฅ์ ๋ฐ๋ผ ์๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค.
When to Schedule
- ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ : fork()๋ก ์ ํ๋ก์ธ์ค๊ฐ ready queue์ ๋ค์ด๊ฐ์ ๋
- ํ๋ก์ธ์ค๊ฐ exitํ ๊ฒฝ์ฐ
- ํ๋ก์ธ์ค๊ฐ block๋ ๊ฒฝ์ฐ
- I/O Interrupt๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
Clock Interrupt
OS๊ฐ interrupt๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฑธ์ด์,
- ๋ฆฌ์์ค ๊ด๋ฆฌํ๋ ๋ฃจํด์ ๊ณ์ ์ํ์ํจ๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ CPU Quantum์ ์ด๊ณผํ๋์ง ๊ณ์ ๊ฐ์งํ๋ค
- ํด๋น ํ๋ก์ธ์ค๊ฐ Quantum์ ์ด๊ณผํ๋ฉด unschedule (์์)
Two categories of scheduling
- NonPreemptive : ์์์ ๋๋ผ๋๊น์ง CPU๋ฅผ ๊ณ์ ์ฐ๊ฒ ํด์ฃผ๋ ๊ฒ
์ฃผ๋ก Batch System์์ ์ฌ์ฉ - Preemptive : ํ๋ก์ธ์ค๋ง๋ค CPU ์ ์ ์๊ฐ (CPU Quantum)์ ์ ํ์ ๊ฑด๋ค.
Clock Interrupt๋ฅผ ํตํด ํ์ธํ๋ค.
์ฃผ๋ก Timesharing System์์ ์ฌ์ฉ
Three Environments for Scheduling
1. Batch System (์ผ๊ด ์ฒ๋ฆฌ)
- job์ operator์๊ฒ ๋๊ฒจ์ฃผ๊ณ ์ผ์ด ๋๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ ๊ฒ (์ํธ์์ฉ x)
- Non-preemptive - Context Switch Overhead์ ๋น๋๋ฅผ ์ค์ธ๋ค.
- preemptive ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด, Quantum์ ํฌ๊ธฐ๋ฅผ ๋งค์ฐ ํฌ๊ฒ ์ก๋๋ค.
- Troughput (๋จ์ ์๊ฐ๋น ์ฒ๋ฆฌํ๋ job์ ์)
- Turnaround Time (operator์๊ฒ job์ ์ฃผ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ธฐ๊น์ง์ ์์ ์๊ฐ)
- CPU Utilization : CPU๊ฐ ํญ์ ๋ฐ์๊ฒ ์์ง์ฌ์ผ ํจ
2. Interactive System
- ๋ฌด์กฐ๊ฑด preemptive ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ (Time sharing)
- ํ ํ๋ก์ธ์ค๊ฐ Quantum์ ์ด๊ณผํ๋ฉด unschedule
- Response Time : ์์ฒญ์ ๋ํ ์๋ต ์๊ฐ
- Proportionality : 10๊ฐ์ 10์ด๋ฉด, 100๊ฐ๋ 100์ด
3. Real time System
- ํ๋ก์ธ์ค๊ฐ ์ฒ๋ฆฌ๋๋ Deadline์ ๋ง์ถฐ์ผ ํจ
- ์ผ๋ง๋์ ์จ์ผํ๋ - ๊ฐ์ ์ค์ผ์ฅด์ด ๋ค ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ preemptive-nonpreemptive๊ฐ ์ค์ํ์ง ์์. ์๊ด์๋ค.
- Meeting Dealines : ๋ฐ๋๋ผ์ธ์ ๋ง์ถฐ์ผํจ
- Predictability : ์ผ์ ์์ค ์ด์์ ์๋น์ค ํ์ง์ด ์ ์ง๋์ด์ผ ํจ (์คํธ๋ฆฌ๋ฐ ๊ฐ์๊ฑฐ)
Scheduling ์ค์ผ์ฅด๋ง
- Time Scale์ ํฌ๊ธฐ์ ๋ฐ๋ผ
- Long Term : ๋ช๊ฐ๊น์ง Ready ์ํ๋ก ๋ ์ ์๊ฒ ํ ๊ฒ์ธ๊ฐ (๋๋ฌด ๋ง์ด ๋ฃ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ )
- Short Term : Ready ์ํ์ ์๋ ํ๋ก์ธ์ค ์ค CPU๋ฅผ ํ ๋นํ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ๋ค.
- Starvation : Ready queue์ ์๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ค์ผ์ฅด๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์ ํ์ ๋ชป๋ฐ๊ณ ๊ณ์ ๋ค๋ก ๋ฐ๋ ค๋๋ ๊ฒ.
1. FCFS
- First come first served
- create๋ ์์๋๋ก ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์ (์ ์ ์ ์ถ)
- ๋์ฒด๋ก non-preemptive (context switch ์ค๋ฒํค๋ ์ ์)
- Starvation์ด ์๋ค. ์ธ์ ๊ฐ ๋ฌด์กฐ๊ฑด ์ฒ๋ฆฌ๋๋๊น.
- ๋ฌธ์ ์
- ํ๊ท Turnaround Time์ด ์ปค์ง ๊ฐ๋ฅ์ฑ์ด ์์
2. SJF
- Shortest Job First
- CPU๋ฅผ ์ ์ผ ์กฐ๊ธ ์ธ ๊ฒ ๊ฐ์ ์ ๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ๊ฒ
- ๋ฌธ์ ์
- ์ค์ ๋ก๋ CPU Burst Time์ ์ ์ ์๋ค.
- ๋ชจ๋ Job๋ค์ด ๋์์ ์์ฒญ๋ ๊ฒฝ์ฐ์๋ง ์ต์ ์ ์ฑ๋ฅ์ ๋ฐํํ๋ค.
- ๋ฌธ์ ์์
- A, B, C, D, E = 2, 4, 1, 1, 1 (CPU Burst Time)
- A,B๋ 0์ด์ / C,D,E๋ 3์ด์ ๋์ ์์ฒญ๋จ
3. SRTN
- Shortest Remain Time Next
- SJF์ preemptive ๋ฒ์
- ๋งค ํด๋ฝ๋ง๋ค ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ์ถ๊ณ ์ค์ผ์ฅด๋ง์ ๋ค์ ํ๋ค.
- ํ์ฌ ํ์ํ CPU Burst ์ค ๊ฐ์ฅ ์์ ๊ฑธ ์ฐพ์์, ๊ทธ job์ ๋จผ์ ์ฒ๋ฆฌํ๋ค.
- ์๋ก ๋ค์ด์จ ์งง์ job์ด ํํ์ ๋ง์ด ๋ด
4. Round Robin
- Ready Queue ๋งจ ์์ ์๋ ์ ๋ถํฐ ์ํ, ์ ํด์ง Quantum์ ๋์ด๊ฐ๋ฉด ๋งจ ๋ค๋ก ๋ณด๋ด๋ฒ๋ฆฐ๋ค.
- Preemptive (ํํ ์์ผ๋ฉด preemptive์ธ๊ฒ)
- Starvation์ด ์๋ค (๊ธฐ๋ณธ์ ์ผ๋ก FCFS์ด๊ธฐ ๋๋ฌธ์)
- ๋ณดํต ์ํ ํ๋ก ๊ตฌํ (ํฌ์ธํฐ๋ง ์ฎ๊ธฐ๋ฉด ๋ฐ๋ก ํ ๋งจ๋ค๋ก ์ฎ๊ธฐ๋๊ฒ ๋๋๊น)
- ๋ฌธ์ ์ : ์ ๋นํ Quantum ๊ฐ์ ์ฐพ๊ธฐ ํ๋ค๋ค
- Quantum์ ๊ฐ์ด ์์ผ๋ฉด : Context Switch๊ฐ ์์ฃผ ์ผ์ด๋ overhead ์ปค์ง
- Quantum์ ๊ฐ์ด ํฌ๋ฉด : Response Time์ด ์ปค์ง๋ค (๊ฒฐ๊ตญ ๊ทธ๋ฅ FCFS์ ๋น์ทํด์ง๋๊น)
5. Priority Scheduling
- job๋ค์๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํจ (๊ฐ์ ์ ๋ค๋ผ๋ฆฌ๋ FCFS๋ RR ๊ฐ์ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ)
- Static Assignment : ์ ์ ์ผ๋ก ์ฐ์ ์์ ๋ถ์ฌ
- Dynamic Assignment : ๋์ ์ผ๋ก
- I/O Bound Process์๊ฒ ๋ ๋์ ์ฐ์ ์์๋ฅผ ์ค๋ค (๋ณดํต์ Quantum์ ๋ค ์ฐ๊ธฐ ์ ์ ๋๋ด๋๊น)
- ์ฐ์ ์์ : 1/๐ (๐ : ํด๋น ํ๋ก์ธ์ค๊ฐ quantum ์ค ์ฌ์ฉํ ์๊ฐ์ ๋น์จ)
Ex. q:10 ์ค์ 2๋งํผ๋ง ์ฌ์ฉํ๊ณ I/O ์์ฒญ์ผ๋ก ์ธํด์ block ๋์๋ค๋ฉด : 1/ (2/10) = 5
- ๋ฌธ์ ์ : ์ญ์ Starvation
- ์ค๋ ๊ธฐ๋ค๋ฆด ์๋ก ์ฐ์ ์์๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค
- ๊ฐ์ ์ฐ์ ์์ ์ ๋ค๋ผ๋ฆฌ๋ RR (์๋ ์์)
6. Multiple Queues
- ์ฌ๋ฌ ํ๊ฐ ์๊ณ , ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ
- ํ๋ก์ธ์ค๋ค์ ํ ์ฌ์ด๋ฅผ ์ฎ๊ฒจ๋ค๋ ์ ์์
- ์ Priority Scheduling๋ ์ด๊ฒ ์ค ํ๋์ธ๊ฐ???
- Multi Level Feedback Queues (MLFQ)
- ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ job type์ ๊ฐ์ง (Batch๋.. Interactive๋.. CPUbound..)
- ๊ทธ์ ๋ง๋ Quantum์ ์ ํด๋๊ณ ๋ง๋ ํ๋ก ์ฐพ์ ๋ค์ด๊ฐ๋ ๊ตฌ์กฐ์ธ๋ฏ (Feedback์ ํตํด)
7. Guaranteed Scheduling
- ratio (์ค์ CPU ์ฌ์ฉํ ์๊ฐ / ํ ๋น๋ ์๊ฐ)๊ฐ ์์ job ๋จผ์
- ๋ค๋ฅธ ์ ๋ค๊ณผ ๋น์จ์ด ๋๊ฐ์์ง๋๊น์ง ๊ณ์ ์ ์ผ ์์๊ฑฐ ์คํํ๋ค๊ฐ.. ๊ณ์ ๊ณ์ฐํด๊ฐ๋ฉฐ ๊ฐฑ์
8. Lottery Scheduling
- Job๋ง๋ค ํฐ์ผ์ ์ฃผ๊ณ , ์ค์ผ์ฅด๋ฌ๊ฐ ๋๋คํ๊ฒ ํฐ์ผ์ ๋ฝ๋๋ค. ํด๋น ๋ฒํธ๋ฅผ ๊ฐ๊ณ ์๋๋์ด ์ํ๋จ
- ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ๊ฐ๊ณ ์๋ ํฐ์ผ์ ๊ฐ์๊ฐ ๋ค๋ฅด๊ฒ ์ง (ํ๋ฅ ๊ฒ์)
- Highly Response : ์๋ก ํ์ ๋ค์ด์จ ํ๋ก์ธ์ค๋ ๋ฐ๋ก CPU๋ฅผ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์
- Ticket Exchanging : ๋์ผํ Task๋ฅผ ์ํํ๋ ์ ๋ค๋ผ๋ฆฌ ํฐ์ผ์ ์ฃผ๊ณ ๋ฐ์ ์ ์์
- Propotional Scheduling : ํน์ ๋น์จ๋ก ํ ๋นํ๋ ๊ฒฝ์ฐ์ ์ ํฉ (Frame Rate์ด 10, 20, 25์ธ 3๊ฐ์ Job์ด ์๋ ๊ฒฝ์ฐ, ์ ์ฒด Ticket 55๊ฐ๋ฅผ 10๊ฐ, 20๊ฐ, 25๊ฐ๋ก ๋ถ๋ฐฐํ๋ฉด ๋๋ค)
9. Fairshare Scheduling
- Process ๋จ์๋ก CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ์๋, Process๋ฅผ ๊ตฌ๋ํ๋ User๋ค์๊ฒ ๊ณตํํ๊ฒ CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด๋ค.
Real-Time Systems
Real time ์์คํ ์์๋ Response, Turnaround Time๋ณด๋ค๋ ๋ฐ๋๋ผ์ธ์ด ์ค์ํ๋ค.
- Periodic : Event๊ฐ Regularํ๊ฒ ๋ฐ์๋๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค. (Event๋, CPU๋ฅผ ํ ๋นํ์ฌ ์ฒ๋ฆฌํด์ผ ํ๋ ์ผ์ ์๋ฏธํ๋ค.)
- Aperiodic : Event๊ฐ ๋ถ๊ท์น์ ์ผ๋ก ๋ฐ์๋๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค. Dead-Line์ ์ถฉ์กฑ์ํค๊ธฐ ์ด๋ ต๋ค.