์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ์๊ณ ๋ฆฌ์ฆ
- OS
- IP ํ๋กํ ์ฝ
- Linux
- DP
- java๋ฒ์ ๋ณ๊ฒฝ
- github
- ์คํฐ๋
- Java๋ฒ์
- ๋ฐฑ์ค
- ํ๊ณ
- ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์น ๊ธฐ๋ฒ
- ๋น ๋ฅธ ์ฌ์ ์ก
- oxboxes
- ์ ๋ขฐ์ ๋ฐ์ดํฐ ์ ์ก
- algorhtim
- SWEA
- VMware
- Eclipse
- Java
- Algorithm
- congestion control
- C++
- Floyd-Warshall
- ์ด์์ฒด์
- ํผ๋๋ฐฑ
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- binary search
- ํ๋ก์ธ์ค ๋๊ธฐํ
- ๋ชจ์๋ฉด์
์ฒด๋ฑ๋ก๊ทธ
[์ด์์ฒด์ 3๊ธฐ] 3์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ ๋ณธ๋ฌธ
๐น๊ธฐ์ ์ํ(Starvation)
ํน์ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๋ฎ์์ ์ํ๋ ์์์ ๊ณ์ ํ ๋น ๋ฐ์ง ๋ชปํ๋ ์ํ
๊ธฐ์์ํ ํด๊ฒฐ ๋ฐฉ์
- ํ๋ก์ธ์ค ์ฐ์ ์์๋ฅผ ์์๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐ ํ๋ก์ธ์ค๊ฐ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๋ก ๊ธฐํ๋ฅผ ๋ถ์ฌํ๋ค.
- ์ค๋ ๊ธฐ๋ค๋ฆฐ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ธ๋ค.
- ์ฐ์ ์์๊ฐ ์๋ ์์ฒญ ์์๋๋ก ์ฒ๋ฆฌํ๋ ์์ฒญ ํ ์ฌ์ฉํ๋ค.
๐นCPU ์ค์ผ์ค๋ง
CPU ์ค์ผ์ค๋ง์ด๋ ์ด๋ค ์์
์ CPU๋ฅผ ๋ฐฐ์ ํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค.
์ค์ผ์ค๋ง ๊ท๋ชจ์ ๋ฐ๋ฅธ ๊ตฌ๋ถ
๋ฐ์ํ๋ ๋น๋ ๋ฐ ํ ๋น ์์์ ๋ฐ๋ผ ๋ค์ 3๊ฐ์ง ์ค์ผ์ค๋ง์ผ๋ก ๊ตฌ๋ถ๋๋ค.
- ์ฅ๊ธฐ ์ค์ผ์ค๋ง(Long-term scheduling)
- ๊ฐ์ฅ ํฐ ํ์์ ์ด๋ฃจ์ด์ง๋ CPU ์ค์ผ์ค๋ง
- ๊ณ ์์ค ์ค์ผ์ค๋ง(high level scheduling), ์์ ์ค์ผ์ค๋ง(job scheduling) ๋๋ ์น์ธ ์ค์ผ์ค๋ง(admission scheduling)์ด๋ผ๊ณ ๋ ํ๋ค.
- ์์คํ ๋ด์ ์ ์ฒด ์์ ์ ์กฐ์
- ์ ์ฒด ์์คํ
๋ถํ๋ฅผ ๊ณ ๋ คํ์ฌ ์์
์์ ์ฌ๋ถ ๊ฒฐ์ (ํ๋ก์ธ์ค ์ ๊ฒฐ์ )
- ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ์ ๋(degree of multiprogramming)๋ผ๊ณ ํ๋ค.
- ์ต๊ทผ ์ด์์ฒด์ (OS)์์๋ ๋ณดํต ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋จ ์คํ ์ ๋ฐ๋ก ์ค๋น(ready) ์ํ๋ก ๋์ ํ๋ค.
- ์ค๊ธฐ ์ค์ผ์ค๋ง(Mid-term scheduling)
- ์ฅ๊ธฐ์ ๋จ๊ธฐ ์ค์ผ์ค๋ง ์ฌ์ด์์ ๋ฐ์ํ๋ ์ค์ผ์ค๋ง
- ์ค๊ฐ์์ค ์ค์ผ์ค๋ง(middle level scheduling)์ด๋ผ๊ณ ๋ ํ๋ค.
- ์ฅ๊ธฐ ์ค์ผ์ค๋ง์์ ํ์ฑํ๋ ํ๋ก์ธ์ค๊ฐ ํ์ฑํ๋ ์ดํ์๋ ์ฌ๋ฌ ์์ธ ์ํฉ์ผ๋ก ์ธํ ์์คํ ๊ณผ๋ถํ ๋ฐ์ ์ ํ๋ก์ธ์ค์ ํ์ฑ ์ํ๋ฅผ ์ ์ดํ๋ ์ค์ผ์ค๋ง
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ฒฐ์ (Memory allocation)
- Intermediate-level scheduling
- Swapping(Swap-in / Swap-out)
- ํ๋ก์ธ์ค์ ์ค์ง(suspend)์ ํ์ฑํ(active) ์ํ๋ฅผ ์ ์ดํ์ฌ ์ ์ฒด ์์คํ ์ ํ์ฑํ๋ ํ๋ก์ธ์ค ์ ์กฐ์
- ๋จ๊ธฐ ์ค์ผ์ค๋ง(Short-term scheduling)
- ๊ฐ์ฅ ์์ ๋จ์์ ์ค์ผ์ค๋ง
- ์ ์์ค ์ค์ผ์ค๋ง(low level scheduling)์ด๋ผ๊ณ ๋ ํ๋ค.
- ์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ ์ง, ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋๊ธฐ ์ํ๋ก ๋ณด๋ผ์ง ๋ฑ์ ๊ฒฐ์ ํ๋ ์ผ
- ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ๊ธฐ์ค์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ์ ํ(์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ)ํ๊ณ ์ด๋ ์ ๋ ์์์ ๋ฐฐ๋ถ(Time slice)ํ ์ง์ ๋ฐ๋ผ ์์คํ ์ ํฐ ์ํฅ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ํต์ฌ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ ์ ์๋ค.
์ค์ผ์ค๋ง ๋ชฉ์
- ๊ณตํ์ฑ: ํ๋ก์ธ์ค ์์ ๋ถ๋ฐฐ ๊ณผ์ ์ด ๊ณตํํด์ผ ํจ
- ํจ์จ์ฑ: ์์คํ ์์์ด ์ฌ๋ ์๊ฐ์ด ์์ด์ผ ํจ
- ์์ ์ฑ: ์ค์ ํ๋ก์ธ์ค๋ค์๊ฒ ์ฐ์ ๊ถ์ ์ฃผ์ด์ผํจ, ๋ํ ํ๋ก์ธ์ค ์ฆ๊ฐํด๋ ์์คํ ์ด ์์ ์ ์ผ๋ก ๋์๊ฐ์ผ ํจ
- ํ์ฅ์ฑ: ์์คํ ์์์ด ๋์ด๋๋ ๊ฒฝ์ฐ ์ด ํํ์ด ์์คํ ์ ๋ฐ์๋์ด์ผ ํจ
- ๋ฐ์ ์๊ฐ ๋ณด์ฅ: ํ๋ก์ธ์ค ์๊ตฌ๊ฐ ์์ ๊ฒฝ์ฐ ์ ์ ํ ์๊ฐ ๋ด์ ๋ฐ์ํด์ฃผ์ด์ผ ํจ
- ๋ฌดํ ์ฐ๊ธฐ ๋ฐฉ์ง: ํน์ ํ๋ก์ธ์ค ์์ ์ด ๋ฌดํ ์ฐ๊ธฐ๋๋ฉด ์๋จ
- ์์คํ
์ฑ๋ฅ ํฅ์
- ๋ํ์ ์์คํ
์ฑ๋ฅ ์งํ(index)
- ์๋ต์๊ฐ(response time): ์์ ์์ฒญ์ผ๋ก๋ถํฐ ์๋ต ๋ฐ์ ๋๊น์ง์ ์๊ฐ
- ์์ ์ฒ๋ฆฌ๋(throughput): ๋จ์ ์๊ฐ๋์ ์๋ฃ๋ ์์ ์
- ์์ ํ์ฉ๋(resource utilization): ์ฃผ์ด์ง ์๊ฐ(Tc) ๋์ ์์์ด ํ์ฉ๋ ์๊ฐ(Tr)
- ๋ํ์ ์์คํ
์ฑ๋ฅ ์งํ(index)
์ค์ผ์ค๋ง ๊ธฐ์ค(Criteria)
์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ด ๊ณ ๋ คํ๋ ํญ๋ชฉ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ๋ก์ธ์ค ํน์ฑ: I/O-bounded or Compute-bounded
- ์์คํ ํน์ฑ: Batch-system or Interactive system
- ํ๋ก์ธ์ค ๊ธด๊ธ์ฑ: Hard- or Soft- or Non- real time systems
- ํ๋ก์ธ์ค ์ฐ์ ์์(Priority)
- ํ๋ก์ธ์ค ์ด ์คํ์๊ฐ
- ํ๋ก์ธ์ค ์์น: ์ ๋ฉด ํ๋ก์ธ์ค or ํ๋ฉด ํ๋ก์ธ์ค
๐น์ ์ ํ ์ค์ผ์ค๋ง vs ๋น์ ์ ํ ์ค์ผ์ค๋ง
์ ์ ํ ์ค์ผ์ค๋ง(Preemptive scheduling)
๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ์์์ ๋นผ์๊ธธ ์ ์์
(e.g, Timeout(ํ ๋น ์๊ฐ ์ข ๋ฃ), ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค ๋ฑ์ฅ)
์ฅ์ : Time-sharing system, real-time system ๋ฑ์ ์ ํฉ → ์๋ต์ฑ ↑
๋จ์ : Context switch overhead ↑
๋น์ ์ ํ ์ค์ผ์ค๋ง(Non-preemptive scheduling)
ํ ๋น ๋ฐ์ ์์์ ์ค์ค๋ก ๋ฐ๋ฉํ ๋๊น์ง ์ฌ์ฉ
(e.g, System call, I/O, etc.)
์ฅ์ : Context switch overhead ↓
๋จ์ : ์ฆ์ ์ฐ์ ์์ ์ญ์ , ํ๊ท ์๋ต์๊ฐ ↑
๐น์ ์ ์ ์ถ ์ค์ผ์ค๋ง(FCFS, First-Come-First-Service)
Non-preemptive scheduling Time quantum(Time slice) ๊ธฐ์ค
FCFS๋ ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค(Ready Queue ๊ธฐ์ค)๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
์ผ๊ด์ฒ๋ฆฌ ์์คํ (Batch system)์ ์ ํฉ, ๋ํํ ์์คํ (Interactive system)์ ๋ถ์ ํฉ
์ฅ์ : ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ(High resource utilization)
๋จ์ : Convoy effect ↑(Starvation ๋ฐ์ O), ํ๊ท ์๋ต ์๊ฐ์ด ๊ธบ(Response time average ↑)
*. Convoy effect: CPU ์ฌ์ฉ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค์ ์ํด CPU ์ฌ์ฉ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๋ค์ด ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ํ์(๋๊ธฐ ์๊ฐ >> ์คํ ์๊ฐ)
๐น๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง(RR, Round-Robin)
Preemptive scheduling Time quantum(Time slice) ๊ธฐ์ค
FCFS์ ์ ์ฌํ์ง๋ง, ์์ ์ฌ์ฉ ์ ํ ์๊ฐ(Time quantum or Time slice)์ด ์กด์ฌํ๋ค.
RR์ ํ ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ ์๊ฐ ๋์ ์์ ํ๋ค๊ฐ ์๊ฐ์ด ๋๋๋ฉด Ready Queue์ ๋งจ ๋ค๋ก ๊ฐ์ ์๊ธฐ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์์ด๋ค.
๋ํํ ์์คํ (Interactive system)๊ณผ ์๋ถํ ์์คํ (Time-sharing system)์ ์ ํฉ
RR์ Time quantum์ด ์์คํ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ํต์ฌ ์์
- Time quantum ↑ : FCFS์ ๋์ผํ ์ค์ผ์ค๋ง์ด ๋๋ค. (Convoy effect↑, Starvation ๋ฐ์ O)
- Time quantum ↓ : Processor Sharing(์ฒด๊ฐ ํ๋ก์ธ์ ์๋ = ์ค์ ํ๋ก์ธ์ ์ฑ๋ฅ์ 1/n), Context Switching Overhead ↑
์ฅ์ : Convoy effect ↓(CPU ์ผ์ ์๊ฐ ์ฌ์ฉ ํ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ฃผ์ด์ผ ํ๋ฏ๋ก, ์์ ๋ ์ (monopoly) ๋ฐฉ์ง == Starvation X)
๋จ์ : RR๊ณผ FCFS์ ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๋์ผํ๋ค๋ฉด RR์ด ๋ ๋นํจ์จ์ (RR์ Context switching overhead↑)
๐น์ต๋จ ์์ ์ฐ์ ์ค์ผ์ค๋ง(SJF, Shortest-Job-First)
Non-preemptive scheduling ์คํ์๊ฐ(Burst Time) ๊ธฐ์ค
SJF๋ ์คํ์๊ฐ(Burst Time) ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
SJF๋ SPN(Shortest-Process-Next)๋ผ๊ณ ๋ ํ๋ค.
์ฅ์
- ํ๊ท ๋๊ธฐ ์๊ฐ(WT, Wating Time) ์ต์ํ ↓
- ์์คํ ๋ด ํ๋ก์ธ์ค ์ ์ต์ํ ↓
- ๋ง์ ํ๋ก์ธ์ค๋ค์๊ฒ ๋น ๋ฅธ ์๋ต ์๊ฐ(Response Time ↓)์ ๊ณต
๋จ์
- Starvation(๋ฌดํ๋๊ธฐ) ํ์ ๋ฐ์ ๊ฐ๋ฅ (์คํ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ์์ ํ ๋น ๋ฐ์ง ๋ชปํ ์ ์์)
- ์ ํํ ์คํ์๊ฐ(Burst Time)์ ์ ์ ์์ (์คํ์๊ฐ ์์ธก ๊ธฐ๋ฒ ํ์)
๐น์ต์ ์๋ฅ ์๊ฐ ์ฐ์ ์ค์ผ์ค๋ง(SRTF, Shortest Remaining Time First)
Preemptive scheduling ์คํ์๊ฐ(Burst Time) ๊ธฐ์ค
SRTF๋ SJF์ ๋ณํ, SJF + ์ ์ (Preemption)์ ์๋ฏธํ๋ค.
์ฆ, ์์ฌ ์คํ ์๊ฐ์ด ๋ ์ ์ ํ๋ก์ธ์ค๊ฐ ์ค๋น(ready) ์ํ๊ฐ ๋๋ฉด ์ ์ (Preemption)์ด ๋๋ค.
์ฅ์ : SJF์ ์ฅ์ ๊ทน๋ํ
๋จ์
- Starvation(๋ฌดํ๋๊ธฐ) ํ์ ๋ฐ์ ๊ฐ๋ฅ
- ํ๋ก์ธ์ค ์์ฑ ์, ์ด ์คํ ์๊ฐ ์์ธก ํ์
- ์์ฌ ์คํ ์๊ฐ(BT)์ ๊ณ์ ์ถ์ ํด์ผ ํจ (Overhead ↑)
- Context Switching Overhead ↑
โบ ๊ตฌํ ๋ฐ ์ฌ์ฉ์ด ๋นํ์ค์
๐น์ต์ ์๋ต ๋น์จ ์์ ์ค์ผ์ค๋ง(HRRN, High-Response-Ratio-Next)
Non-preemptive scheduling ์๋ต๋ฅ (Response ratio) ๊ธฐ์ค
HRRN์ SJF์ ๋ณํ, SJF + Aging์ ์๋ฏธํ๋ค.
Aging: ํ๋ก์ธ์ค์ ๋๊ธฐ ์๊ฐ(WT)๋ฅผ ๊ณ ๋ คํ์ฌ ๊ธฐํ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋งํ๋ค.
์ฅ์ : SJF์ ์ฅ์ + Starvation ๋ฐฉ์ง
๋จ์ : ์คํ์๊ฐ(BT) ์์ธก ๊ธฐ๋ฒ ํ์ (Overhead ↑)
๐น์ฐ์ ์์ ์ค์ผ์ค๋ง(Priority scheduling)
์ฐ์ ์์ ์ค์ผ์ค๋ง์ Ready Queue์ ์๋ ํ๋ก์ธ์ค์ ์์๋ฅผ ๋ฌด์ํ๊ณ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์๊ฒ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
- ์ฐ์ ์์ ๋์ผ ์ FCFS ์ค์ผ์ค๋ง ์ฌ์ฉ
- Aging ๊ธฐ๋ฒ ์ฌ์ฉ(๋๊ธฐ ์๊ฐ(WT)์ ๋น๋กํ์ฌ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด ๋ฌดํ๋๊ธฐ(Starvation) ๋ฐฉ์ง)
Non-preemptive scheduling
SJF ์ค์ผ์ค๋ง: ์คํ ์๊ฐ(BT)๊ฐ ์งง์ ํ๋ก์ธ์ค์๊ฒ ๋์ ์ฐ์ ์์ ๋ถ์ฌ
HRRN ์ค์ผ์ค๋ง: ์คํ ์๊ฐ(BT)์ด ์งง๊ฑฐ๋ ๋๊ธฐ ์๊ฐ(WT)์ด ๊ธด ํ๋ก์ธ์ค์๊ฒ ๋์ ์ฐ์ ์์ ๋ถ์ฌ
Preemptive scheduling
SRTF ์ค์ผ์ค๋ง: ์์ฌ ์คํ ์๊ฐ(BT)์ด ๋ ์ ์ ํ๋ก์ธ์ค์๊ฒ ๋์ ์ฐ์ ์์ ๋ถ์ฌ
์ฅ์ : ์ค์ํ ์์ ์ฐ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋จ์
- ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๋ Starvation ๋ฐ์ ๊ฐ๋ฅ
- ์ฐ์ ์์ ์ญ์ (Priority Inversion) ๋ฐ์ ๊ฐ๋ฅ
๐น๋ฉํฐ ๋ ๋ฒจ ํ ์ค์ผ์ค๋ง(MLQ, Multi-level Queue)
MLQ๋ ์์ (or ์ฐ์ ์์)๋ณ ๋ณ๋์ Ready Queue๋ฅผ ๊ฐ์ง์ผ๋ก์จ ๊ฐ๊ฐ์ Queue์ ๋ค๋ฅธ ์ค์ผ์ค๋ง์ ์ ์ฉํ๋ ๋ฐฉ์์ด๋ค.
Queue ์ฌ์ด์๋ ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง(Priority scheduling) ์ฌ์ฉ
๋์ ์๋ฆฌ
- ๊ฐ Queue์์ RR ๋ฐฉ์ ์ฌ์ฉ
- ๊ฐ Queue์ ์ฐ์ ์์(Priority) ๋ณํ ์์
- ๋์ ์ฐ์ ์์์ Queue์ ๋ชจ๋ ํ๋ก์ธ์ค ์์ ๋ค์ด ๋๋์ผ ๋ฎ์ ์ฐ์ ์์ Queue์ ํ๋ก์ธ์ค๋ค์ด ์์ ์งํ ๊ฐ๋ฅ
์ฅ์
- ์๋ต ์๊ฐ ํฅ์ (Response Time ↓)
- ๋ค์ํ ์ข ๋ฅ์ ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ(์์ ๋ง์ Ready Queue๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํน์ ์์ ๋ณ๋ก ๋ค์ํ ๋ฐฉ์์ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ ์ ์์)
๋จ์
- ์ฌ๋ฌ ๊ฐ์ Queue ๊ด๋ฆฌ ๋ฑ์ ์ํ ์ค์ผ์ค๋ง Overhead ↑
- ์ฐ์ ์์๊ฐ ๋ฎ์ Queue์ ํ๋ก์ธ์ค๋ค์ Starvation ๋ฐ์ ๊ฐ๋ฅ
- ์๋ก์ด ์์ ์ด ๋ค์ด์์ ๋, ์ด๋ Queue๋ก ๋ถ๋ฅํด์ผ ํ ์ง ์ ๋งคํจ → ๊ฐ์ : MFQ
๐น๋ฉํฐ ๋ ๋ฒจ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง(MFQ, Multi-level Feedback Queue)
MFQ๋ ํ๋ก์ธ์ค์ Queue ๊ฐ ์ด๋์ด ํ์ฉ๋ MLQ๋ฅผ ๋งํ๋ค.
Feedback์ ํตํด ์ฐ์ ์์(Priority) ์กฐ์
๋์ ์๋ฆฌ
- ํ๋ก์ธ์ค๊ฐ Ready Queue์ ๋์ฐฉ ์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ Queue๋ก ๋ค์ด๊ฐ
- ํด๋น Queue์ ์ฃผ์ด์ง Time quentum์ ๋ฐ๋ผ CPU ์ฌ์ฉ ํ ์์ ์ด ์๋ฃ๋ ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋จ
- CPU ์ฌ์ฉ ํ์๋ ์์ง ์์ ์ด ๋๋์ง ์์ ํ๋ก์ธ์ค๋ ์๋์ Queue๋ก ๋๋์๊ฐ์ง ์๊ณ ์ฐ์ ์์๊ฐ ํ ๋จ๊ณ ๋ฎ์ Queue๋ก ๋ค์ด๊ฐ(์์ ์ด ๋๋์ง ์๋ ํ๋ก์ธ์ค๋ ๊ณ์ ์ฐ์ ์์๊ฐ ๋ฎ์ Queue๋ก ๋ค์ด๊ฐ)
- Queue๋ง๋ค Time quentum(Time slice)๋ฅผ ๋ค๋ฅด๊ฒ ์ฃผ์ด ์ฌ์ฉ (์ฐ์ ์์๊ฐ ๋ฎ์์๋ก Time quentum์ด ์ปค์ง)
- ์ฐ์ ์์๊ฐ ๋ฎ์ Queue์ผ์๋ก Time quentum์ด ์ ์ ์ฆ๊ฐํ๋๋ฐ, ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋ฎ์ Queue์ ๊ฒฝ์ฐ์๋ FCFS(Time quentum ๋ฌดํ) ์ค์ผ์ค๋ง์ด ์ ์ฉ๋จ
์ฅ์
- ์๋ต ์๊ฐ ํฅ์ (Response Time ↓)
- ๋ค์ํ ์ข ๋ฅ์ ์์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ(e.g, CPU bounded ์์ ๊ณผ I/O bounded ์์ ์ ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- ๊ณต์ ์ฑ(๋ฎ์ Queue์ ํ๋ก์ธ์ค๋ค๋ ์ผ์ ๊ธฐ๊ฐ๋์ CPU ํ ๋น์ ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋์ด ์์ด, ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ค์๊ฒ๋ ๊ณต์ ํ ๊ธฐํ ์ ๊ณต ๊ฐ๋ฅ)
๋จ์
- ์ค๊ณ ๋ฐ ๊ตฌํ ๋ณต์ก
- Starvation ๋ฌธ์ (์ผ๋ถ ํ๋ก์ธ์ค๊ฐ ํญ์ ๋์ ์ฐ์ ์์ Queue์ ๋จ์ ์์ด, ๋ฎ์ ์ฐ์ ์์ Queue์ ํ๋ก์ธ์ค๋ค์ด ์คํ ๊ธฐํ๋ฅผ ์ ๋๋ก ์ป์ง ๋ชปํจ)
- ์ฌ๋ฌ ๊ฐ์ Queue ๊ด๋ฆฌ ๋ฑ์ ์ํ ์ค์ผ์ค๋ง Overhead ↑
- ์ฐ์ ์์ ์ญ์ (Priority Inversion) ๋ฐ์ ๊ฐ๋ฅ
*. ์ฐ์ ์์ ์ญ์ (Priority Inversion): ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ๋ฎ์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๋ก ์ธํ์ฌ ์ํ์ด "Block" ๋์ด์๋ ์ํ, ์ฆ ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋ฆ๊ฒ ์๋ฃ๋๋ ์ํฉ์ ์๋ฏธ
https://hpckoreatech.notion.site/Operating-System-CSE132-2023-b8aa98fe69cc4a8cb950051a04bc35ca
https://velog.io/@sunnamgung8/CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
https://imbf.github.io/computer-science(cs)/2020/10/18/CPU-Scheduling.html
https://ddongwon.tistory.com/31
https://codingrapper.tistory.com/124
https://j-i-y-u.tistory.com/21
https://sunny-jang.tistory.com/32
'CS > JSCODE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ 3๊ธฐ] 4์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.01.31 |
---|---|
[์ด์์ฒด์ 3๊ธฐ] 3์ฃผ์ฐจ ํผ๋๋ฐฑ (0) | 2024.01.26 |
[์ด์์ฒด์ 3๊ธฐ] 2์ฃผ์ฐจ ํผ๋๋ฐฑ (0) | 2024.01.19 |
[์ด์์ฒด์ 3๊ธฐ] 2์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.01.17 |
[์ด์์ฒด์ 3๊ธฐ] 1์ฃผ์ฐจ ํผ๋๋ฐฑ (0) | 2024.01.12 |