Priority Scheduling
ํ๋ก์ธ์ค ๋ณ ์ฐ์ ์์๊ฐ ๋ค ๋ค๋ฅด๋ค. System call์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ค์ผ ํ๋ค. ์ฐ์ ์์ ๋์ ๊ฒ ๋จผ์ ์คํํ์๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. P1 - P5๊น์ง ์๊ณ Burst Time์ด ์๋ค. Burst Time์ CPU ์ ํ๋์ ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ํ๋ก์ธ์ค ๋ณ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ ธ ์๋ค. Priority ๋ฒํธ๊ฐ ๋ฎ์ ์๋ก ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ด๋ค. 1๋ฒ์ด ๊ฐ์ฅ ๋์ ๊ฒ์ด๊ณ 5๋ฒ์ด ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋ฎ์ ๊ฒ์ด๋ค. ๋์์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด P2๊ฐ ์ ์ผ ๋จผ์ ์คํ๋๋ค. (๋ฒํธ๊ฐ ๋ฎ์ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ด ๋จผ์ ์คํ๋จ). 1ms ๋งํผ ๋๊ฒ ๋๊ณ ๊ทธ ๋ค์์ผ๋ก P5๊ฐ 5ms ๋งํผ ๋๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋์๊ฐ๊ฒ ๋๋ค.
Prority Scheduling
External ์ธ๋ถ์์ ์ฃผ๋ ๊ฒฝ์ฐ.
์ด๋ ์ ๋ ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ์ง์ ์ ํด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ์ด๋ค.
Internal ์์ ์ฃผ๋ ๊ฒฝ์ฐ
External์์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋๋ผ๋ ๋ด๋ถ์์ ์๋์ ์ผ๋ก ์กฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
IO Bound Process์ ์ฐ์ ์์๊ฐ ๋ ๋๊ฒ ์ธก์ ๋๋ค. Vi์ Compiler๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ. Vi๊ฐ ๋๋ ์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. IO Bound Process๊ฐ ์ฐ์ ์์๊ฐ ๋์์ผ ํ๋ค. ์๋ํ๋ฉด Userํ๊ณ Interactํ๋ Process์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ์ฉ์๋ฅผ ์ํด ์ฐ์ ์์๋ฅผ ๋์ฌ์ค์ผ ํ๋ค. Compiler๊ฐ 2์ด ๊ฑธ๋ฆด ๊ฒ์ 3์ด ๊ฑธ๋ ธ๋ค๊ณ ํ๋๋ผ๋ ์ฌ์ฉ์๊ฐ ์ฒด๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ IO Bound Process์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ํด์ผ ํ๋ค.
IO Bound Process๋ Time quantum์ ๋ค ์ฌ์ฉํ์ง ์๋๋ค. ๋ํํ
์ฃผ์ด์ง Time quantum์ ๋ค ์ฌ์ฉํ๋ฉด CPU Bound Process์ผ ํ๋ฅ ์ด ๋๋ค. (*****) ์ด๋ฐ ๊ฒฝ์ฐ Internal ํ๊ฒ ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
์ค๊ฐ์ Interceptive๋ฅผ ๋ฐ์ ์ ์์ผ๋ฉด Preemtive์ด๊ณ ๋ฐ์ ์ ์์ผ๋ฉด Nonpreemtive๋ผ๊ณ ํํ์ ํ๋ค. Waiting Queue์์ ๋ค์ด์จ ๊ฒ์ด ์ฐ์ ์์๊ฐ ๋ ๋์ ๊ฒฝ์ฐ CPU Scheduling์ ํ๋ค๋ฉด Preemtive Schedule์ด๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ์๊ฐ์ ํ ๋น๋ฐ์ง ๋ชปํด์ ๊ตถ์ด์ฃฝ์ ์ ๋ ์๋ค. ํ์ง๋ง ๊ธฐ๋ค๋ฆด ๋๋ง๋ค ์ฐ์ ์์๋ฅผ ๋์ฌ์ค์ ์คํ์ ํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ์ Aging์ด๋ผ๊ณ ํ๋ค.
Round Robin Scheduling
ํ์ดํ์ ๊ธธ์ด๋ฅผ Time slice, Time Quantum์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๊ฐ์ ๋ก Switching์ ํด๋ฒ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฏธํ๋ค. FCFS์ preemtiveํ ๋ฐฉ์์ Round Robin ์ด๋ผ๊ณ ๋งํ๋ค.
Round Robin Scheduling
Time quantum = 4์ธ ๊ฒฝ์ฐ P1์ด ๋๋ 4ms ๋งํผ ๋๊ณ P2๋ก ๋์๊ฐ๋ค.
Round Robin Scheduling
Time quantum์ 12๋ก ์ก์ผ๋ฉด Context Switching์ด ๊ฒ ๋๋ค. 1๋ก ์ก๊ฒ ๋๋ฉด ๋ฌด๋ ค 9๋ฒ์ด๋ ๋ฐ๊พธ๋ฉด 1ms๋ง๋ค Switchingํ๊ฒ ๋๋ค. ํ์ง๋ง Switching์ ๋ง์ด ํ ์๋ก CPU๋ฅผ ๋ง์ด ์ก์๋จน๊ฒ ๋๋ค. Time quantum์ ๋ฐ๋ผ์ Behavior๊ฐ ๋ฌ๋ผ์ง๋ค. Time quantum์ด ์์ฃผ ๊ธธ์ด์ง๋ฉด FCFS์ฒ๋ผ ๋์ํ๊ฒ ๋๋ค. ์์๋ ์์ข๊ณ ์ปค๋ ์ข์ง ์๋ค.
Round Robin Scheduling
Turnaround
80%์ด๋ผ๋ ๊ฒ์ ๋๋ถ๋ถ์ ํ๋ก์ธ์ค๋ฅผ ์ปค๋ฒํ ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค. IO Bound Process
Multilevel Queue Scheduling
์ฐ์ ์์๋ฅผ ํ์คํ๊ฒ ์ง์ผ์ฃผ๊ธฐ ์ํด์ Queue๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋ค. ๊ฐ Queue์์ ํ๋ณด๊ฐ ํ๋์ฉ ๋์ค๊ฒ ๋๋ค. ๊ฐ๊ฐ ๋์จ ๋ํ Queue ์ค ๋๊ตฌ๋ฅผ ๋ฃ์์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
Multilevel Queue Scheduling
์ต์ข ์ ์ผ๋ก ๋๊ตฌ๋ฅผ ํํ ๊ฒ์ธ๊ฐ. ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ์ ํํ๋ ๊ฒ์ด ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ ๋ฐฉ์์ด Fixed Priority Preemtive schduling์ด๋ผ๊ณ ํ๋ค. ๋ง์ฝ Queue๊ฐ 2๊ฐ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. foreground์ ์ฐ์ ์์๊ฐ background queue๋ณด๋ค ๋๋ค. ์ด๋ ๊ฒ ๋ง๋ค๋ฉด ์๊ธฐ๋ณด๋ค ์์ชฝ์ Process๊ฐ ์์ด๋ 20%๋ผ๋ ๊ณต๊ฐ์ด ์์ผ๋ฏ๋ก ์ฐ์ ์์๊ฐ ๋ฎ์ Process๋ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.
Multilevel FeedBack-Queue Scheduling
CPU Bound Process๋ Interactive ํ์ง ์๋ค.
Multilevel FeedBack-Queue Scheduling
๊ต์ฅํ ๋ง์ ์๊ณ ๋ฆฌ์ฆ ๋์์ธ์ด ์กด์ฌํ๋ค. ์๋๋ก ๋ด๋ ค์ค๋ ํ์ดํ๊ฐ ์๋ค๋ ๊ฒ์ FeedBack Queue์์ ์๋ฏธํ๋ค. Process์ ์์์ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ๋ถํฐ ์์์ ํ๋ค. Time quantum ์ด ์งง๋ค๋ ๊ฒ์ IO Bound Process์ด๊ณ Interactiveํ Process๋ผ๋ ๊ฒ์ด๋ค. 8+24 ms ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋๊ฐ๋ค๊ฐ ๋ค์ 8ms๋ก ๋์์ค๊ฒ ๋๋ค. Burst๊ฐ ๊ธธ๋ค๋ ๊ฒ์ CPU Bound Process๋ผ๋ ๊ฒ์ด๊ณ ์ฐ์ ์์๋ฅผ ๋ฎ์ถฐ๋ ์ข๋ค๋ผ๋ ๊ฒ์ด๋ค.
Multiple process scheduling
ํ๋ก์ธ์ค๊ฐ ๋ง์ผ๋ฉด scheduling ์ ์ฅ์์ ๋ณต์กํด์ง๋ค.
Symmetric vs Asymmetric
Symmetric๊ณผ Asymmetric์ ๋๋๋ ๊ฒฝ๊ณ๋ Master Slave ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ์ง์ ์ ๋ฌด์ด๋ค. ์ด ๊ด๊ณ๊ฐ ์๋ค๋ฉด Asymmetric์ด๊ณ ๋์ผํ๋ค๋ฉด Symmetric์ด๋ผ๊ณ ํ๋ค.
Multi Processor Scheduling
์์ฆ ์ด์์ฒด์ ๋ ์ฌ๋ฌ ๊ฐ์ CPU๋ฅผ ๋๊ณ CPU ๋ง๋ค Ready Queue๋ฅผ ๊ฐ์ง๊ณ ์๋๋ก ์ค๊ณ๋ฅผ ํ๋ค.
Processor Affinity
์ด๋ค ํ๋ก๊ทธ๋จ์ ์คํ์์ผฐ๋๋ฐ 2๋ฒ CPU์์ ๋๊ณ ์๋ค. Time quantum์ ๋๊ณ ๋ค์ ๋์์๋ค. ๊ธฐ์กด์ 2๋ฒ์ ๋๊ณ ์๋ CPU๊ฐ ์๋๋ฐ 2๋ฒ์ ์ ์งํ๋ ๊ฒ์ด ์ข์ ๊น 1,3๋ฒ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ด ์ข์๊น? ์ ์งํ๋ ๊ฒ์ด ๋ ์ข๋ค. "๋๊ฐ ํ๋ ์ผ์ด ์๋๋ฐ ์ ์ ํ๋ ์ฌ๋ํํ ์ฃผ๋ ๊ฒ์ด ์ข๋ค. ์๋ํ๋ฉด ์ด์ ์ ๊ธฐ์ตํ๊ณ ์๋ ๋ญ๊ฐ๊ฐ ์์ผ๋๊น!!" ๊ธฐ์ตํ๊ณ ์๋ ๊ฒ์ Cache Contents์ด๋ค. ๋ฉ๋ชจ๋ฆฌ์ CPU์ ์๋์ฐจ์ด๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๋ฉ์ปค๋์ฆ์ธ๋ฐ ์ด๋ฅผ ๋ณด์ํด์ค๋ค. 2๋ฒ CPU Cache์ ๊ด๋ จ ๋ด์ฉ์ด ์ด๋ฏธ ๋ค์ด๊ฐ ์์ผ๋ฏ๋ก ์๋ ๋๋ ์น๊ตฌํํ ์ฃผ๋ ๊ฒ์ด ๋ ์ข๋ค๋ ๊ฒ์ด Affinity๋ผ๊ณ ๋ถ๋ฅธ๋ค.
1. Soft Affinity
๊ฐ์ ํ๋ก์ธ์ค์์ ๋๊ฒ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง ์ด๋ํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๋ผ๊ณ ํ๋ค.
2. Hard Affinity
๋ฌด์กฐ๊ฑด ๋๋ ํ๋ก์ธ์ค์์ ๋๋ ๊ฒ์ด ์ข๋ค.
Processor Affinity
NUMA, CPU๋ง๋ค ๊ฐ๊ฐ ๋ก์ปฌ Memory๊ฐ ์กด์ฌํ๋ค. ํ CPU์์ ์ ๋๋ Process๋ฅผ ๋ค๋ฅธ CPU๋ก ์ฎ๊ธฐ๊ฒ ๋๋ฉด ์์ ์ด ๊ต์ฅํ ๋๋ ค์ง๋ค.
Load Balancing
๋ฐ์ ๋ฐ ์์๋ ํ๋ก์ธ์ค๋ฅผ ๋ค๋ฅธ ์ชฝ์ผ๋ก ์ด๋์ํค๋ ๊ฒ์ Load Balancing์ด๋ผ๊ณ ํ๋ค. ๋ค๋ค ๊ณตํํ๊ฒ CPU Time์ ๋ฐ์์ผ๋ฉด ์ข๊ฒ๋ค๋ ๊ฒ์ด๋ค. Push๊ฐ ์๊ณ Pull์ด ์๋ค. ๋๋ํ ํ๋ก์ธ์ค๋ฅผ ๋ฐ์ด์ฃผ๋ ๊ฒ์ Push migration์ด๋ผ๊ณ ํ๋ค. Pull migration์ ์ข ๋ ์๋ฐ์ ์ธ ๊ฒ์ด๋ค. ์์ฌ์ด ์๋ CPU๋ผ๋ฉด ๋๋ ํ๊ฐํ๋ ๋ํํ ๋ฌ๋ผ๋ ๊ฒ์ด Pull migration์ด๋ค. ๋ ๊ฐ์ง๋ฅผ ๊ฐ์ด ์ฌ์ฉํ ์ ๋ ์๋ค.