1. Basic Concepts
- Multiprogramming : ์ปดํจํฐ์ CPU์์ ๋์์ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ์
- multiprogramming์ ๋ชฉ์ ์ CPU utilization์ ๊ทน๋ํ์
process๋ CPU execution ์ฃผ๊ธฐ์ I/O wain ์ผ๋ก ๊ตฌ์ฑ๋จ. ์ฆ, ํ๋ก์ธ์ค๊ฐ ์ผ์ ์๊ฐ ๋์ CPU์์ ์คํ๋ ๋ค์, ๊ณ์ ์คํ๋๊ธฐ ์ ์ I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ.
CPU Burst distribution์ 1) ์งง๊ณ ๋ง์ cpu burst ์ 2) ๊ธธ๊ณ ์ ์ cpu burst ๊ฐ ์๋๋ฐ,
- I/O Bound program์ ์งง๊ณ ๋ง์ cpu burst๋ฅผ ๊ฐ์ง๋ฉฐ
- CPU-Bound program์ ๊ธธ๊ณ ์ ์ cpu burst๋ฅผ ๊ฐ์ง
distribution์์ ์ผ์ชฝ์ burst duration์ด ์งง๊ณ frequency๊ฐ ๋์ I/O burst๊ฐ ํด๋นํ๋ฉฐ
์ค๋ฅธ์ชฝ์ duration์ด ๊ธธ๊ณ frequency๊ฐ ์ ์ CPU burst๊ฐ ํด๋นํ๋ค
CPU Scheduler
: CPU Scheduler๋ memory์์ ready to execute ๋ process ์ค process๋ฅผ ์ ํํ๊ณ , ํด๋น ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ๋ค
์ด๋ฌํ ์ค์ผ์ค๋ง์ ํ๋ ์ํฉ์ ๋ค ๊ฐ์ง๊ฐ ์๋ค.
- ํ๋ก์ธ์ค๊ฐ ์คํ ์ํ์์ ๋๊ธฐ ์ํ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ
- ํ๋ก์ธ์ค๊ฐ ์คํ ์ํ์์ ์ค๋น ์ํ๋ก ์ ํ๋ ๋
- ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ ์ํ์์ ์ค๋น ์ํ๋ก ์ ํ๋ ๋
- ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ
1, 4์ ๊ฒฝ์ฐ nonpreemption์. ์ฆ CPU๊ฐ ํ๋๋ฅผ ์ด๋ฏธ ํ๊ณ ์์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค ํ ๋น X ๊ธฐ๋ค๋ ค์ผ ํจ
2, 3์ ๊ฒฝ์ฐ๋ ํ๋ ํ๋ก์ธ์ค๋ฅผ ์ค๋จํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ ์ ์์
Dispatcher
: CPU scheduler์ ์ํด ์ ํ ๋ ํ๋ก์ธ์ค๋ฅผ CPU์ core๋ก ๋๊ธฐ๋ ์ญํ ์ ํจ.
์ฐ์ ์์๋ฅผ ๋ถ์ฌํด์ผ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฒฐ์ ํ์ผ๋ฉด (scheduler) ํด๋น ํ๋ก์ธ์ค๋ฅผ ์คํํ๋๋ก CPU์ ์ง์ํฉ๋๋ค. ๋์คํจ์ฒ๋ ์์คํ ์ด CPU๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ณ ์ ์์ ์ํฌ๋ก๋ ๋ณํ์ ๋์ํ ์ ์๋๋ก ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ์ฌ์ด๋ฅผ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค.
1. Context switching
2. user mode switching
3. ๋ค์ ํ๋ก๊ทธ๋จ ์คํํ๊ธฐ ์ํด jumping to the proper location
๋ฑ์ ๋จ๊ณ๋ฅผ ํฌํจํจ.
Dispatch latency : ํ๋์ ํ๋ก์ธ์ค๋ฅผ ๋ฉ์ถ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํ(switching)์ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
2. Scheduling Criteria
- (MAX) CPU utilization : CPU๊ฐ Busyํ ์ ๋. ๋ฐ์ ์๋ก ์ข์
- (MAX) Throughput : ์๊ฐ ๋น ๋๋ธ ํ๋ก์ธ์ค์ ์. ๋ง์ ์๋ก ์ข์
- (MIN) Turnaround time : ํ๋ก์ธ์ค submission(๋์ฐฉ ์์ )์ผ๋ก๋ถํฐ ๋๋ ๋ ๊น์ง์ Interval
- (MIN) Waiting time : wait queue์์ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ์ด ํฉ
- (MIN) Response time : submission ์ดํ ์ฒซ response๊ฐ ์์ฑ๋ ๋ ๊น์ง์ ์๊ฐ. (์ ์ฒด ์ถ๋ ฅX)
3. Scheduling Algorithms
1) First-Come, First-Served(FCFS) Scheduling
- ready queue์ ๋จผ์ ๋์ฐฉํ process๋ฅผ ๋จผ์ cpu์ ํ ๋นํจ (FIFO queue)
- Convoy effect : ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ํ๋์ big process๊ฐ cpu์์ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒ
2) Shortest-Job-First (SJF) Scheduling
- CPU Burst๊ฐ ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค์ CPU ํ ๋น
- ์คํ์ ํ์ํ ์๊ฐ(cpu-burst-time)์ด ๊ฐ์ฅ ์ ์ ํ๋ก์ธ์ค๋ฅผ ๊ณ ๋ คํ์ฌ CPU๋ฅผ ํ ๋น
- Nonpreemptive : ์ํ ์ค ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํด๋ ํ์ฌ ์งํ๋๊ณ ์๋ ํ๋ก์ธ์ค๋ ๋๋ด๊ณ ์ฒ๋ฆฌ
- preemptive : ์ํ ์ค ๋ ์งง์๊ฒ ์ค๋ฉด ๋ฐ๋ก ํ์ฌ ํ๋ ํ๋ก์ธ์ค ์ค๋จํ๊ณ ๋ฐ๊ฟ๋ฒ๋ฆผ (=Shortest-Remaining-Time-First (SRTF) )
๋จ์ ) ๋ค์ CPU Request์ length๋ฅผ ์๊ธฐ ์ด๋ ค์.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ process time์ limit์ ์ค์ ํด๋๊ณ , ๋ฌดํํ ๋ ๋ ๋์ด๋ฒ๋ฆผ.
ํน์ ๊ทธ ๊ฐ์ ์์ํ๋ ๊ฒ๋ ๊ฐ๋ฅ
* next CPU burst ์์ํ๊ธฐ (by exponential average)
tn : ์ค์ n๋ฒ์งธ ๋์ CPU Burst ๊ธธ์ด
τn+1 : ๋ค์ cpu burst ์์๊ฐ
α : ์ต๊ทผ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ์ค์ํ์ง
- α = 0 : ์ต๊ทผ history no effect
- α = 1 : ์ค์ง most recent cpu burst๋ง ์ค์
- α = 1/2 : recent history์ past history๊ฐ equally weighted
3) Round Robin (RR)
- FCFS๋ ์ ์ฌํ์ง๋ง Preemption์ด ์ถ๊ฐ๋์ด Process๊ฐ ์ ํ์ด ๊ฐ๋ฅํจ
- time quantum(10~100milsec)์ด๋ผ๋ ๊ณ ์ ๋ ์คํ ์๊ฐ์ด ์ฃผ์ด์ง. ๊ทธ ์๊ฐ ์ง๋๋ฉด CPU๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ์คํ์ ์๋ฃํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ready queue์ ์๋ ๋ค์ ํ๋ก์ธ์ค ์คํ. ํ๋ ๊ฒ์ ready queue ๋ค๋ก ๋ค์ ๋ถ์
- ๋ง์ฝ ํ quantum ์์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋๋ฌ์ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ฐ๋ก switching
- ๋ง์ฝ ready queue์ n ๊ฐ์ process๊ฐ ์๊ณ , time quantum์ด q๋ผ๋ฉด ๊ฐ process๋ CPU ์๊ฐ์ 1/ n์ ์ต๋ q time units ๋งํผ๋ง ํ ๋นํจ. ๋ฐ๋ผ์ ๊ฐ process๋ (n-1)q ๋ณด๋ค ์ค๋ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. (์ด๋ค ํ๋ก์ธ์ค๊ฐ cpu๋ฅผ ์ฅ๊ธฐ ๋ ์ ํ์ง x)
- Performance
- time quantum์ด ๋งค์ฐ ํฐ ๊ฒฝ์ฐ => FCFS์ ๋์ผ
- ์์ ๊ฒฝ์ฐ : context swiches ๋๋ฌด ์์ฃผ ์ผ์ด๋จ
4) Priority Scheduling
- ๊ฐ์ฅ ๋์ priority๋ฅผ ๊ฐ์ง๋ process๋ฅผ cpu์ ํ ๋นํ๋ค
- equal-priority processes๋ FCFS order
- SJF ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฅ ๋จ์ํ priority algorithm (priority : inverse of next CPU burst, cpu burst ํฌ๋ฉด ์ฐ์ ์์ ๋ฎ์)
- Priorities๋ internally/ externally ์ ์๋๋๊ฒ ๋ชจ๋ ๊ฐ๋ฅ
- Internally defined priorities: ์ธก์ ๊ฐ๋ฅํ quantity๋ฅผ ์ด์ฉํด priority ๋ถ์ฌ
- Time limits, memory requirements, open file ์, ํ๊ท cpu Burst ๋๋น ํ๊ท I/O Burst ๋น์จ
- External priorities : ์ด์์ฒด์ ์ธ๋ถ์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ค์
- importance of the process, ์ ๋ฌด ํ์ํ๋ ๋ถ์, ์ ์น์ ์์ธ ๋ฑ
- Internally defined priorities: ์ธก์ ๊ฐ๋ฅํ quantity๋ฅผ ์ด์ฉํด priority ๋ถ์ฌ
- Nonpreemptive : ํ๋ ๊ฑฐ ๋๋
- preemptive
- ์์ ์ํ ๋์ค ๋ priority ๋์ ์ ๊ฐ ๋์ฐฉํ๋ฉด ํ๋๊ฑฐ ๋ฒ๋ฆฌ๊ณ ์๋ก์ด๊ฑฐ ํจ
Problem - Starvation (indefinite blocking)
: low-priority process๋ ๋ฌดํํ ๊ธฐ๋ค๋ ค์ผ ํจ
Solution - Aging
: ์ค๋ ๊ธฐ๋ค๋ฆฐ process์ priority๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์
--> ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์ ์คํ ์ฐ์ ์์๋ฅผ ์ง์ ํจ์ผ๋ก์จ ์ด์ ์ฒด์ ๋ ์ค์ํ ์์ ์ด ๋จผ์ ์๋ฃ๋๋๋ก ํ ์ ์์ผ๋ฉฐ ์์คํ ์ ์๊ฐ์ ๋ฏผ๊ฐํ ์์ ์ ์ ์ํ๊ฒ ๋์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฎ์ ์ฐ์ ์์ ํ๋ก์ธ์ค์ starvation ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ ์ฒด ์์คํ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด ์ผ๋ถ ์ฐ์ ์์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์์ด์ง์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํ๋ก์ธ์ค๊ฐ ์ค๋น ๋๊ธฐ์ด์์ ์ค๋ซ๋์ ๋๊ธฐํ ๊ฒฝ์ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ด๋ ๊ฒ๊ณผ ๊ด๋ จ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฐ์ ์์ ๊ฐ์ด ๋ ๋ฎ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๊ฒฐ๊ตญ ์คํ ๊ธฐํ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
* ์ฐ์ ์์๊ฐ ๊ฐ์ process ๊ฐ์๋ Round-robin ์ ์ฉํ ์ ์์
5) Multilevel Queue Scheduling
- Process type์ ๋ฐ๋ผ queues๋ฅผ ๊ตฌ๋ถํด์ ๋ฐ๋ก ๋๋ ์๊ณ ๋ฆฌ์ฆ
- Foreground(interactive), background(batch)
- priority ๋ง๋ค ๊ฐ๊ฐ ํ ๋ง๋ค์ด์ ๊ด๋ฆฌํ ์๋ ์์ (์ด๋ค ํ๋ก์ธ์ค๊ฐ highst-priority์ธ์ง ์๋ ค๋ฉด O(n)) search๊ฐ ํ์ํจ)
- ๊ฐ ํ๋ ๊ฐ์์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง ์ ์์
- ๊ฐ ๋๊ธฐ์ด์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ํด๋น ๋๊ธฐ์ด์ ํ ๋น๋ ์ฐ์ ์์ ์์ค์ ๋ฐ๋ผ ๊ฒฐ์
- ์๋ฅผ ๋ค์ด ์ฐ์ ์์๊ฐ ๋์ ํ๋ ๋ผ์ด๋ ๋ก๋น๊ณผ ๊ฐ์ preemption์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ ๋ฎ์ ์ฐ์ ์์ ํ๋ FCFS์ ๊ฐ์ non-preemption ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- ํ ์ฌ์ด์ ์ค์ผ์ค๋ง๋ ํด์ผ ํจ
- ํ ๊ฐ ์ฐ์ ์์๋ ์์. ๋ฐ๋ผ์ starvation ์ํ๋ ์์
- Time slice: ๊ฐ ํ๋ CPU Time์ ์ผ๋ถ๋ฅผ ํ ๋น๋ฐ์ ๊ทธ ์์์ ์ค์ผ์ค๋ง
- Foreground Queue - 80% of the CPU time
- Background Queue - 20% of CPU time
- [Multilevel Feedback Queue scheduling]
- ํ ๊ฐ ํ๋ก์ธ์ค ์ด๋์ด ํ์ฉ๋๋ค๋ฉด (=aging) starvation์ ๋ฐฉ์งํ ์ ์์
- ๋ง์ฝ ํ ํ๋ก์ธ์ค๊ฐ ๋๋ฌด ๋ง์ CPU ํ์์ ์ก์๋จน๋๋ค๋ฉด lower-priority๋ก ์ด๋
- ํ ํ๋ก์ธ์ค๊ฐ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ ธ์ผ๋ฉด higher-priority queue๋ก ์ด๋
- MFQS๋ ๋ค์๊ณผ ๊ฐ์ parameter๋ก ์ ์๋จ
- โ The number of queues
- โ The scheduling algorithm for each queue
- โ The method used to determine when to upgrade a process
- โ The method used to determine when to demote a process
- โ The method used to determine which queue a process will enter when that process needs service
- ํ ๊ฐ ํ๋ก์ธ์ค ์ด๋์ด ํ์ฉ๋๋ค๋ฉด (=aging) starvation์ ๋ฐฉ์งํ ์ ์์
4. Multie-Processor Scheduling
์ฌ๋ฌ CPU ๋๋ ํ๋ก์ธ์๋ฅผ ๋์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ. ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ CPU๊ฐ ์์ด ๊ฐ CPU์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๊ณ CPU๋ ํ๋ก์ธ์ค๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ
์ด์ ์ฒด์ ๋ ๋ชจ๋ CPU์ ๊ฑธ์ณ workload balance๋ฅผ ์ ์งํ๊ณ ๊ฐ CPU๊ฐ ์คํํ ํ๋ก์ธ์ค ์๊ฐ ๊ฑฐ์ ๋์ผํ๋๋ก ํด์ผ ํจ
- Asymmetric multiprocessing
- ์์คํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณด์กฐ ํ๋ก์ธ์๋ฅผ ์ ์ดํ๋ โโํ๋์ ๊ธฐ๋ณธ ํ๋ก์ธ์๊ฐ ์์. ์ด single processor์ ์ํด handled (master server)
- ํ ํ๋ก์ธ์๊ฐ system data structure์ ์ ๊ทผํ๋ฏ๋ก data sharing ํ์ X
- Symmetric multiprocessing
- ๋ชจ๋ CPU๊ฐ ๋๋ฑํ๊ฒ ์ทจ๊ธ๋๋ฉฐ ๋ชจ๋ CPU๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์์
- ๊ฐ ํ๋ก์ธ์๊ฐ self-scheduling
- common ready queue
- core๊ฐ ready queue๋ฅผ ๊ณต์ ํด ์์ ๋ค์ด ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐ๋จ
- BUT shared ready queue ์์ race condition์ด ๋ฐ์ํ ์ ์์
- race condition์ด๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋์์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์์ ํ ๋, ์ ๊ทผ์ด ์ด๋ค ์์์ ๋ฐ๋ผ ์ด๋ฃจ์ด์ก๋์ง์ ๋ฐ๋ผ ๊ทธ ์คํ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ง ์๊ณ ๋ฌ๋ผ์ง๋ ์ํฉ์ ๋งํ๋ค. Race ๋ ๋ ๊ฐ์ ์ค๋ ๋๊ฐ ํ๋์ ์์์ ๋๊ณ ์๋ก ๊ฒฝ์ํ๋ ์ํฉ์ ๋งํ๋ค.
- ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ง๊ธฐ ์ํด locking ์ฌ์ฉํจ
- own private queue
- ๊ฐ core๋ณ๋ก ready Queue ๊ฐ ์กด์ฌํจ. ์์
์ด ํ๋๋ก ๋ชฐ๋ฆด ์ ์์
- ๋ค์ํ size์ workloads
- ๋ชจ๋ ํ๋ก์ธ์ค ๊ฐ์ workload๋ฅผ equaliizingํ๋ balancing algorithm์ด ํ์
- ๊ฐ core๋ณ๋ก ready Queue ๊ฐ ์กด์ฌํจ. ์์
์ด ํ๋๋ก ๋ชฐ๋ฆด ์ ์์
Multicore processor : ๋จ์ผ ๋ฌผ๋ฆฌ์ chip์ ์ฌ๋ฌ๊ฐ์ computing cores ๊ฐ ํฌํจ๋ cpu
--> CPU๊ฐ ๋ฌผ๋ฆฌ์ chip ์ฌ๋ฌ ๊ฐ ๊ฐ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ณ ๋ ์ ์ ์ ์์ ์๋น
Memory stall : ํ๋ก์ธ์๊ฐ memory์ accessํ ๋, ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ ๋๊น์ง ์๋นํ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆผ
--> ํ๋ก์ธ์๋ ๋ฐ์ดํฐ available์ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ์ ์ต๋ 50% ์๊ฐ์ ์ธ ์ ์์
Multithreaded processing core : 2๊ฐ ์ด์์ hw threads๊ฐ ๊ฐ core์ ํ ๋น๋จ
* CMT (Chip Multithreading)
- ๋์ผํ ๋ฌผ๋ฆฌ์ ์นฉ์ ์ฌ๋ฌ computing core์ ๋ฐฐ์นํ๊ณ , ๊ฐ core์๋ hw thread๊ฐ ํฌํจ๋จ. ๊ฐ hw thread๋ instruction pointer๋ register set์ ๊ฐ์ด architectural state๋ฅผ ์ ์งํ๋ฉฐ, software thread๋ฅผ ์คํํ ์ ์๋ logical CPU์ ํํ๋ก ๋ํ๋จ. ์ด๋ฅผ ํตํด ๋จ์ผ ํ๋ก์ธ์ ์นฉ์์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๋์์ ์คํํ ์ ์์.
์ด ์์์๋ ํ๋ก์ธ์์ 4๊ฐ์ ์ปดํจํ ์ฝ์ด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ๊ฐ ์ฝ์ด์๋ 2๊ฐ์ ํ๋์จ์ด ์ค๋ ๋๊ฐ ์์.
๋ฐ๋ผ์ ์ํํธ์จ์ด ์ค๋ ๋๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ด 8๊ฐ์ ๋ ผ๋ฆฌ์ CPU๊ฐ ์์ฑ๋จ.
Multithread์ ๋ ๊ฐ์ง ๋ฐฉ์:
1. Coarse-grained multithreading
: ๋ค์ ์ค๋ ๋๋ก ์ ํํ๊ธฐ ์ ์ ๋จ์ผ ์คํ ์ค๋ ๋์ ์ ์ฒด ํ๋ก์ธ์ ์ฃผ๊ธฐ๋ฅผ ํ ๋นํ๋ ๊ฒ. ์ด๋ ๊ฐ ์ค๋ ๋๊ฐ ๋ค๋ฅธ ์ค๋ ๋์ ์คํ ์ ํน์ ์๊ฐ ๋์ ํ๋ก์ธ์์ ๋ ์ ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์์ ์๋ฏธํจ. stalling๋์ clock cycle์ ๋ญ๋นํจ
2. Fine-grained(or interleaved) multithreading
: ๋จ์ผ ํ๋ก์ธ์ ์ฃผ๊ธฐ ๋ด์์ ์ฌ๋ฌ ์ค๋ ๋์ ์คํ์ ์ธํฐ๋ฆฌ๋น .๋นํผ์์ด stalling ์ต์ํ ํจ
Load Balancing : SMP system (Symmetric Multiprocessing) ์์ processors ๊ฐ workload๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐํ๊ธฐ ์ํ ๊ฒ (own private ready queue ์ฌ์ฉ) (ํน์ cpu์ ์์ ๋ชฐ๋ฆด ๋ how to ๋ถ๋ฐฐ)
1. Push migration : ๋ฐ์ ๊ณณ์์ ๋ ๋ฐ์ ๊ณณ์ผ๋ก ์ฎ๊ธฐ๊ธฐ
2. Pull migration
migrateํ ๋ ์ฒซ ๋ฒ์งธ ํ๋ก์ธ์์ cache memory๊ฐ invalidated ๋๊ณ ๋ ๋ฒ์งธ processor์ cache๋ฅผ ๋ค์ ์ฑ์์ผ ํจ. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ณผ์ ์ด high cost์.
Processor affinity - ์ฎ๊ธฐ๋ ๊ฑฐ ์ซ์ดํจ (overhead). ๋จธ๋ฌด๋ฅด๋ ค๋ ์์ฑ. ์ฐ๋ ๋๋ฅผ ์ต๋ํ ๊ฐ์ ํ๋ก์ธ์๋ก ์ ์งํ๊ธฐ ์ํ ๋ ธ๋ ฅ. ํ๋ก์ธ์ ๊ฐ ์ ํ๊ณผ ๊ด๋ จ๋ ์ค๋ฒํค๋๋ฅผ ์ค์์ผ๋ก์จ ๋ณ๋ ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์ฌ์ฉ๋จ.
1) Soft affinity : preferred processor ์์ ์คํํ๋ ค๊ณ ํ์ง๋ง ๋ฌด์กฐ๊ฑด์ ์๋ ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ๋ก์ธ์์ ํ ํ ์ ์์
2) Hard affinity : ์ง์ ๋ ํ๋ก์ธ์์์๋ง ์ค๋ ๋ ๋๋ ํ๋ก์ธ์ค๋ฅผ scheduleํ๊ณ ๊ทธ์ธ์์๋ ์ ๋ ์ ํจ
load balancing์ ์ด๋ฌํ processor affinity์ ์ฅ์ ์ ์์ ๋ฒ๋ฆด ์๋ ์์
๋ก๋ ๋ฐธ๋ฐ์ฑ์ผ๋ก ์ธํด ํน์ ํ๋ก์ธ์์ ์ด๋ฏธ ๋ฐ์ธ๋ฉ๋ ์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์๋ก ์ด๋๋๊ธฐ๋ ํจ
*Non-uniform memory access (NUMA)
: ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ์๊ฐ์ด ํ๋ก์ธ์์ ๊ด๋ จ๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋ค์ค ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ์ปดํจํฐ ์ํคํ ์ฒ ์ค๊ณ
NUMA๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ธ์๊ฐ ๋ ์ด์์ธ ์์คํ ์์ ์ฌ์ฉ๋๋ฉฐ ๊ฐ ํ๋ก์ธ์๋ ์์ฒด ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์๋ ์ก์ธ์คํ ์ ์์ต๋๋ค.
NUMA ์์คํ ์ ์ฒ๋ฆฌ๋ฅผ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๊น๊ฒ ์ ์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ก์ธ์คํด์ผ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฅ ๊ฐ๊น์ด ํ๋ก์ธ์์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ฉด ๋ฉ๋๋ค. ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์ํํจ์ผ๋ก์จ NUMA ์์คํ ์ ๊ธฐ์กด SMP(๋์นญ ๋ค์ค ์ฒ๋ฆฌ) ์์คํ ๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
5. Real-Time CPU Scheduling
: for ์ฆ๊ฐ์ ์ธ ์ฒ๋ฆฌ. ๋ผ์ด๋ ๋ก๋น ๋๋ SJF ๊ณผ ๊ฐ์ ํ์ค CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ค์๊ฐ ํ๋ก์ธ์ค๊ฐ ์ ์์ ์คํ๋๋๋ก ํจ
1) Soft-real-time systems
: ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๋ถ์ฌ๋์ง๋ง ๋ฐ๋์ ์ค์ํด์ผ ํ๋ ์๊ฒฉํ ๊ธฐํ์ ์์
2) Hard real-time systems
: ๋ฌด์กฐ๊ฑด task๊ฐ dealine์ ๋ง์ถฐ์ ์ฒ๋ฆฌ๋์ด์ผ ํจ
event latency : event๊ฐ ๋ฐ์ํ๊ณ ๊ทธ๊ฒ์ด ์๋น์ค ๋๊ธฐ๊น์ง์ time
- Interrupt latency : inturrupt๊ฐ ๋์ฐฉํ๊ณ ํด๋น ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ๊ฐ ์์๋๊ธฐ ๊น์ง์ ์๊ฐ (์ง์ฐ)
- Dispatch latency : dispatcher๊ฐ ํ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์์ํ๊ธฐ ์ํด ๊ฑธ๋ฆฌ๋ ์๊ฐ
ํ๋ก์ธ์ค๊ฐ ์คํ๋ ์ค๋น๊ฐ ๋๋ฉด ์ด์ ์ฒด์ ๋ ์ ์ ํ ํ๋ก์ธ์๋ฅผ ์ ํํ๊ณ ์ปจํ ์คํธ๋ฅผ ํ์ฌ ํ๋ก์ธ์ค์์ ์ ํ๋ก์ธ์ค๋ก ์ ํํด์ผ ํจ.
- ์ด๋ฏธ kernel์์ ์คํ์ค์ธ process์ ๋ํ preemption
- low-priority process๋ฅผ ํด์ ํ๊ณ high-priority process์๊ฒ resource ์ฃผ๊ธฐ
๊ณผ์ ์์ latency ๋ฐ์
1) Priority-based scheduling
: real-time operating system์ ์ค์ผ์ค๋ฌ๋ priority-based algorithm with preemption์ ์ง์ํด์ผ ํจ
(๋ฐ๋๋ผ์ธ ์ผ๋ง ์๋จ์ == priority ๋์)
( soft real-time ๋ง ๋ณด์ฅํจ)
periodic : CPU์ constant intervals
ํ์ํ ์ฒ๋ฆฌ ์๊ฐ t, ๋ฐ๋๋ผ์ธ d, period p
0<=t<=d<=p
2) Rate-Monotonic Scheduling
๊ธฐ๊ฐ์ด ์งง๊ฑฐ๋ ๋น๋๊ฐ ๋์ ํ๋ก์ธ์ค์ ๋ ๋์ ์ฐ์ ์์๊ฐ ์ง์
: static priority policy with preemption
- ๊ฐ period task์๋ ์ฃผ๊ธฐ์ ๋ฐ๋ผ ๊ฑฐ๊พธ๋ก priority๊ฐ ํ ๋น๋จ
- period๊ฐ ์งง์ ์๋ก priority๊ฐ ๋์์ง
- ๋ง์ฝ ํ๋ก์ธ์ค period P1, P2๊ฐ ๊ฐ๊ฐ 50, 100์ผ ๋, processing time t1 = 20 (P1) t2 = 35(P2) ๋ผ๊ณ ํ๋ฉด
- ํ๋ก์ธ์ค์ CPU utilization ratedms t/p์
- P1 : 20/50 = 0.4
- P2 : 35/100 = 0.35
- ํ๋ก์ธ์ค์ CPU utilization ratedms t/p์
- ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฌํ Task๋ฅผ deadline์ ๋ง์ถ๋ฉด์ CPU์ available cycles์ ๋จ๊ฒจ๋๋ ๋ฐฉ์์ผ๋ก ์ค์ผ์ค
์๋ฅผ ๋ค์ด P2๋ณด๋ค P1์ด ๋ period ๊ฐ ์งง๋ค๋ฉด, ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค.
๋ง์ฝ P1์ด๋ P2์ Period๊ฐ ํ ๋ฒ ๋๋๋ฉด ๋ฌด์กฐ๊ฑด switch
์ด๋ ๊ฒ ํ๋ฉด miss ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊น
๋ฐ๋ผ์ CPU resource๋ฅผ ํญ์ maximizeํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ
worst case (N processes) : N(2^(1/N) - 1)
Process๊ฐ ํ๋์์ผ๋ฉด CPU utilization 100%, ํ๋ก์ธ์ค๊ฐ ๋ง์์ง ์๋ก 69%๊น์ง ๋จ์ด์ง
P2 ๋จผ์ ํ๋ฉด P1์ด miss๋์ง๋ง, ๋ ์งง์ p1 ๋จผ์ ํ๋ฉด ๊ด์ฐฎ์
but ์ด๊ฒฝ์ฐ์๋ p2๊ฐ miss๊ฐ ๋จ
3) Earliest Deadline First Scheduling (EDF)
: deadline์ด ๋น ๋ฅธ ๊ฒ์ด ๋์ priority๋ฅผ ๊ฐ๋๋ค! ๋ ์์ ๋ณด์ด๋ deadline ๋จผ์ ์ฒ๋ฆฌ.
์์ ๋๋๋ฉด switch. period ์ง๋ฌ์ ๋ ๋ฐ๋๋ผ์ธ ๊ฒ์ฌ ๋ค์ ํด์ ๋ณ๋ ์์ผ๋ฉด ๋ค์ switch
RLT ์ค์ผ์ค๋ง ์ค ํต์ฌ. ๋ฌด์กฐ๊ฑด ์ ๋จ!
6. Operating System Examples
1) Linux
2) Windows
3) Solaris
7. Algorithm Evaluation
1) ์๊ณ ๋ฆฌ์ฆ ์ ํํ ๋์ ๊ธฐ์ค ์ ์
- Maximizing CPU utilization
- Maximizing throughput
2) deterministic modeling
๋ฏธ๋ฆฌ workload์ performance ์์ธก
'๐ก๐ธ๐ธ๐ถ5: ๐ฆ๐๐๐๐ถ ๐ฐ๐๐พ๐ > ์ด์์ฒด์ Operating Systems (COSE341)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] CH3. Threads & Concurrency (0) | 2023.04.22 |
---|