Real-Time Scheduling
real-time computing: ์์คํ ์ ์ ํ์ฑ์ด ์ฐ์ฐ์ ๋ ผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฟ๋ง ์๋๋ผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ง๋ค์ด์ง๋ ์๊ฐ์๋ ์์กดํ๋ ์ปดํจํ ์ ํ
- ์ ํด์ง ์๊ฐ ์์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
Hard real-time task: ๋ฐ๋์ ๋ง๊ฐ ์๊ฐ์ ์ง์ผ์ผ ํ๋ ์์
- ๋ง๊ฐ ์๊ฐ์ ์งํค์ง ๋ชปํ๋ฉด ์น๋ช ์ ์ธ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ค.
Soft real-time task: ๋ง๊ฐ ์๊ฐ์ด ์์ง๋ง, ์ด๋ฅผ ์งํค๋ ๊ฒ์ด ํ์์ ์ด์ง ์์ ์์
- ๋ง๊ฐ ์๊ฐ์ ์งํค์ง ๋ชปํ๋๋ผ๋ ์์คํ ์ ์ฒด๊ฐ ์คํจํ์ง๋ ์๊ณ ์ฑ๋ฅ ์ ํ๋ง ๋ฐ์ํ๋ค.
periodic task: ์ผ์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณตํด์ ๋ฐ์ํ๋ ์์
aperiodic task: ์์ธก ๋ถ๊ฐ๋ฅํ ์์ ์ ๋ฌด์์๋ก ๋ฐ์ํ๋ ์์
soft real-time task, periodic task๋ฅผ ๊ฐ์ ํ๊ณ 2๊ฐ์ง ์ค์ผ์ค๋ง ๋ฐฉ์์ ์์๋ณด์.
(1) Earliest-deadline Scheduling
์ฐ์ ์์: deadline
0: A1, B1 ๋์ฐฉ → A1 deadline: 20, B1 deadline: 50 A1 deadline์ด ๋ ์ด๋ฅด๊ธฐ ๋๋ฌธ์ A1์ 0-10 ์คํ
10-20: B1 ์คํ
20: A2 ๋์ฐฉ → A2 deadline: 40, B1 deadline: 50 A2 deadline์ด ๋ ์ด๋ฅด๊ธฐ ๋๋ฌธ์ A2๋ฅผ 20-30 ์คํ
30-40: B1 ์คํ
40: A3 ๋์ฐฉ → A3 deadline: 60, B1 deadline: 50 B1 deadline์ด ๋ ์ด๋ฅด๊ธฐ ๋๋ฌธ์ B1์ 40-45 ์คํ
45-50: A3 ์คํ
50: B2 ๋์ฐฉ → A3 deadline: 60, B2 deadline: 100 A3 deadline์ด ๋ ์ด๋ฅด๊ธฐ ๋๋ฌธ์ A3๋ฅผ 50-55 ์คํ
55-60: B2 ์คํ
60: A4 ๋์ฐฉ → A4 deadline: 80, B2 deadline: 100 A4 deadline์ด ๋ ์ด๋ฅด๊ธฐ ๋๋ฌธ์ A4๋ฅผ 60-70 ์คํ
70-80: B2 ์คํ
80: A5 ๋์ฐฉ → A5 deadline: 100, B2 deadline: 100 deadline์ด ๊ฐ์ ๋๋ ๋จผ์ ๋์ฐฉํ B2๋ฅผ 80-90 ์คํ
90-100: A5 ์คํ
(2) Rate Monotonic Scheduling
์ฐ์ ์์: ์ฃผ๊ธฐ
T1 - ์ฃผ๊ธฐ: 4์๊ฐ, ์คํ ์๊ฐ: 1์๊ฐ
T2 - ์ฃผ๊ธฐ: 5์๊ฐ, ์คํ ์๊ฐ: 2์๊ฐ
T3 - ์ฃผ๊ธฐ: 7์๊ฐ, ์คํ ์๊ฐ: 2์๊ฐ
์ฃผ๊ธฐ๊ฐ ์งง์ ์์๋๋ก T1, T2, T3๋ก ์์ ์ ํ๋ค. ์ฃผ๊ธฐ๊ฐ ์งง์ task๊ฐ ๋์ฐฉํ๋ฉด ๋ฐ๋์ ์คํ์ ์๋ณดํด์ผ ํ๋ค.
์์ ๊ทธ๋ฆผ์์๋ Deadline miss๊ฐ 1๋ฒ ๋ฐ์ํ๋ค.
Priority Inversion
: ๋ ๋์ ์ฐ์ ์์์ task๊ฐ ๋ ๋ฎ์ ์ฐ์ ์์์ task๊ฐ ์ด๋ค ์์ ์ ์๋ฃํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ
T1: ๊ฐ์ฅ ๋์ ์ฐ์ ์์, T2: ์ค๊ฐ ์ฐ์ ์์, T3: ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์
์๊ฐ
t1: T3๊ฐ ์คํ์ ์์ํ๊ณ ๊ณต์ ์์ s๋ฅผ ์ ๊ทผ๋ค.
t2 - t3: T3 ์คํ
t3: ๋ ๋์ ์ฐ์ ์์์ T1์ด ์คํ ์ค๋น๊ฐ ๋ผ์ T3์ ์ผ์ ์ค๋จ๋๊ณ T1 ์คํ
t4: T1์ด s๋ฅผ ์ ๊ทธ๋ ค๊ณ ์๋ํ๋๋ฐ s๋ T3๊ฐ ์ฌ์ฉ ์ค์ด์ด์ block๋๋ค.
t4-t5: ์์ ๊ฐ๋ฅํ T3 ์คํ
t5: ๋ ๋์ ์ฐ์ ์์์ T2๊ฐ ์คํ ์ค๋น๊ฐ ๋ผ์ T3์ ์ผ์ ์ค๋จ๋๊ณ T2 ์คํ
T1์ด T3๋ณด๋ค ๋์ค์ ์คํ: priority inversion X (s lock ์์ ๋๋ฌธ์ ์์๊ฐ ๋ฐ๋ฆฐ ๊ฒ์ด๋ค)
T1์ด T2๋ณด๋ค ๋์ค์ ์คํ: priority inversion O (T1๊ณผ T2๋ ๋์์ ์ฌ์ฉํ๋ ๊ณต์ ๋ฐ์ดํฐ๊ฐ ์๋ค)
์ฐ์ ์์ ์์
๋ฎ์ ์ฐ์ ์์์ task๊ฐ ๊ณต์ ์์์ ์ฌ์ฉํ๊ณ ์์ ๋, ํด๋น ์์์ ๊ธฐ๋ค๋ฆฌ๋ ๋ ๋์ ์ฐ์ ์์์ task๊ฐ ๋ฐ์ํ๋ฉด ๋ฎ์ ์ฐ์ ์์ task๊ฐ ์ผ์์ ์ผ๋ก ๋ ๋์ ์ฐ์ ์์ task์ ์ฐ์ ์์๋ฅผ ๋ฌผ๋ ค๋ฐ๋ ๋ฉ์ปค๋์ฆ
T3๊ฐ s๋ฅผ ์ ๊ทผ ์๊ฐ๋ถํฐ ํ ๋๊น์ง T1์ ์ฐ์ ์์๋ฅผ ๋ฌผ๋ ค ๋ฐ๋๋ค. ์ด๋ก์จ T1์ด T2๋ณด๋ค ๋จผ์ ์์ ์ ํ ์ ์๊ฒ ๋๋ค.
Windows Scheduling
(1) Multi-level Priority Queue
- Real-time Priority Queues (16๊ฐ): ํ์์ ๋์์ ๋ค์ ์๊ธฐ ์์ ์ ํ๋ก ๋ค์ด๊ฐ๋ค. ์ฐ์ ์์๊ฐ ๋ณํ์ง ์๋๋ค.
ํ๋์ ํ์ ์ฌ๋ฌ ํ์คํฌ๊ฐ ์๋ค๋ฉด ์ด ํ์คํฌ๋ค์๊ฒ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ ์ ์ฉํ๋ค.
- Variable Priority Queues (16๊ฐ): ํ์์ ๋์์ ์ด๋ ํ๋ก ๋ค์ด๊ฐ์ง ๋ชจ๋ฅธ๋ค. ์ฐ์ ์์๊ฐ ๋ณํ๋ค.
ํผ๋๋ฐฑ ํ๋ฅผ ์ฌ์ฉํ๋ค. ๊ธฐ์ค์ ๋ฐ๋ผ ์ฐ์ ์์๊ฐ ๋์์ง๊ธฐ๋ ๋ฎ์์ง๊ธฐ๋ ํ๋ค.
CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋ฎ์ถ๊ณ CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋์ธ๋ค.
(2) Priority-Driven Preemptive ์ค์ผ์ค๋ง ๋ฐฉ์
ํญ์ ์ฐ์ ์์๊ฐ ๋์ task๋ฅผ ๋จผ์ ์คํํ๋ค.
๋ชจ๋ ํ๋ก์ธ์ค๋ base priority๋ฅผ ๊ฐ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ค๋ ๋๋ฅผ ์์ฑํ ๋, ํด๋น thread's base priority๋ ํด๋น ํ๋ก์ธ์ค์ base priority๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ๋๋ค. ์ค๋ ๋์ ๊ธฐ๋ณธ ์ฐ์ ์์๋ฅผ ํ๋ก์ธ์ค์ ๊ธฐ๋ณธ ์ฐ์ ์์๋ณด๋ค ์ต์๋ก 2๋จ๊ณ ๋ฎ๊ฒ ์ค์ ํ๊ฑฐ๋ ์ต๋๋ก 2๋จ๊ณ ๋๊ฒ ์ค์ ํ ์ ์๋ค. ์ค๋ ๋์ ๋์ ์ฐ์ ์์๋ ์ต๋ 15์ด๋ค. ์ฐ์ ์์ 16๋ฒ๋ถํฐ๋ ์ค์๊ฐ ํ์คํฌ ์์ญ์ผ๋ก ๋ถ๋ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ์ฐ์ ์์๊ฐ ๋ฎ์์ง ์ ์๋ ์ต์์น๋ ํด๋น ์ค๋ ๋๊ฐ ์ํ ํ๋ก์ธ์ค์ ๊ธฐ๋ณธ ์ฐ์ ์์์์ 2๋ฅผ ๋บ ๊ฐ์ด๋ค.
์๋์ฐ ๋ฉํฐ ํ๋ก์ธ์ ์ค์ผ์ค๋ง(N๊ฐ์ ํ๋ก์ธ์)
- ๊ธ๋ก๋ฒ ํ๋ฅผ ์ฌ์ฉํ๋ Load Sharing ๊ธฐ๋ฒ์ผ๋ก ์ค์ผ์ค๋ง
- ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง N๊ฐ์ ์ค๋ ๋์ N๊ฐ์ ํ๋ก์ธ์๊ฐ ํ ๋น๋๋๋ก ํ๋ค.
- soft affinity
: ๋์คํจ์ฒ๋ ๋ ๋ ์ํ์ ์ค๋ ๋๋ฅผ ์ด์ ์ ๊ทธ ์ค๋ ๋๊ฐ ์คํ๋์๋ ํ๋ก์ธ์์ ํ ๋นํ๋ ค๊ณ ์๋ํ๋ ๊ฒ
: ์บ์๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ๊ฒ์ด๋ค.
Windows๋ response time์ ์ค์ด๋ ๊ฒ์ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐํ๋ค.
๋จ์ ์ผ๋ก๋ starvation ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๊ฒ์ด๋ค.
UNIX SVR4 Scheduling
160๊ฐ์ ํ๊ฐ ์กด์ฌํ๋ค.
- real-time processes (159-100)
- kernel-mode processes (99-60)
- user-mode processes (59-0)
๋น ๋ฅด๊ฒ ์ฐ์ ์์๊ฐ ๋์ ํ๋ฅผ ์ฐพ๊ธฐ ์ํด์ ๋นํธ ๋งต์ ์ฌ์ฉํ๋ค.
- ์ฐ์ ์์ ๊ธฐ๋ฐ ์ ์ ํ ์ค์ผ์ค๋ง
์ฐ์ ์์๋ฅผ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐํ๊ณ , ์ ์ ๋ฐฉ์์ ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๋ ์ค๋ ๋๊ฐ ์คํ ์ค๋น ์ํ๊ฐ ๋๋ฉด ํ์ฌ ์คํ ์ค์ธ ๋ฎ์ ์ฐ์ ์์์ ํ๋ก์ธ์ค/์ค๋ ๋๋ ์ฆ์ ์ค๋จ๋๊ณ ๋ ๋์ ์ฐ์ ์์์ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ CPU๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ ๊ฒ์ ๋ปํ๋ค.
real-time class
- ๊ณ ์ ๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์ ํด์ง ์๊ฐ ํํ ์ ๊ฐ์ง๋ค.
- ์ฌ๋ฌ ๊ฐ์ ์ค์๊ฐ ํด๋์ค ์์ ๋ค์ด ๋์ผํ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด RR๋ฐฉ์์ด๋ค. ๊ฐ ์์ ์ ์ ํด์ง ์๊ฐ ํํ ๋งํผ CPU๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์ ์์ ์๊ฒ ์ฐจ๋ก๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ํํ๋ค.
time-sharing class
- ์ฐ์ ์์๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ค. CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ค๋ ๋๋ ์ฐ์ ์์๊ฐ ์ ์ฐจ ๋ฎ์์ง๊ณ , ์ ์ถ๋ ฅ ์์ ์ ๋ง์ด ํ๋ ์ค๋ ๋๋ ์ฐ์ ์์๊ฐ ์ ์ฐจ ๋์์ง๋ค.
Windows์์ ์ฐจ์ด์
์๋ถํ ํ๋ก์ธ์ค์ ํ ๋น๋๋ ์๊ฐ ํ ๋น๋์ ํด๋น ํ๋ก์ธ์ค์ ์ฐ์ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
์ฐ์ ์์ 0์ ๊ฒฝ์ฐ(์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ๋ค) ๊ฐ์ฅ ๊ธด ์๊ฐ ํ ๋น๋์ธ 100ms๋ฅผ ๋ฐ๋๋ค.
์ฐ์ ์์ 59์ ๊ฒฝ์ฐ(์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋๋ค) ๊ฐ์ฅ ์งง์ ์๊ฐ ํ ๋น๋์ธ 10ms๋ฅผ ๋ฐ๋๋ค.
์ด๋ฅผ ํตํด์ starvation ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ถ ์ ์๋ค.
Linux Scheduling
- FIFO real-time threads (0~99)
- RR real-time threads (0~99)
- non-real-time threads (100~139)
Linux Scheduling for Real-time Classes
(1) FIFO
- ์คํ ์ค์ธ FIFO ์ค๋ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ค๋จ๋์ง ์๋๋ค.
1. ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ค๋ฅธ FIFO ์ค๋ ๋๊ฐ ์ค๋น ์ํ๊ฐ ๋์์ ๋
2. ํ์ฌ ์คํ ์ค์ธ FIFO ์ค๋ ๋๊ฐ blocked ์ํ๊ฐ ๋์์ ๋
3. ์์คํ ์ฝ ํ ์๋ฐ์ ์ผ๋ก CPU ์ฌ์ฉ์ ํฌ๊ธฐํ์ ๋
์์ 3๊ฐ์ง์๋ง ์์ธ์ ์ผ๋ก ์ค๋จ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์ผํ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ฐ์ฅ ์ค๋ ๊ธฐ๋ค๋ฆฐ ์ค๋ ๋๊ฐ ๋จผ์ ์คํ๋๋ค.
(2) RR
- FIFO์ ์ ์ฌํ์ง๋ง ๊ฐ ์ค๋ ๋ time-slice๊ฐ ์ถ๊ฐ๋ก ์ค์ ๋๋ค. ์ ํด์ง ์๊ฐ๋งํผ ์คํํ ๋ค์ ๋ค์ ์ค๋ ๋๋ก ๊ต์ฒด๋๋ค.
Linux Scheduling Data Structures
๋นํธ๋งต์ ์ฌ์ฉํ์ฌ ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ ์ฐ์ ์์ ํ์ task๊ฐ ์๋์ง ์ฆ์ ์ ์ ์๋ค.
Active Queues
- ์ด 140๊ฐ์ ํ๋ก ๊ตฌ์ฑ (๊ฐ ํ๋ ํ๋์ ์ฐ์ ์์์ ํด๋น)
- ๊ฐ ํ๋ ํด๋น ์ฐ์ ์์๋ฅผ ๊ฐ์ง ready task๋ค์ ์ ์ฅํ๋ค.
- CPU์์ ๊ณง ์คํ๋ ์ค๋น๊ฐ ๋ task๋ค์ด ์ด ํ์ ์๋ค.
Expired Queues
- ์ด 140๊ฐ์ ํ๋ก ๊ตฌ์ฑ
- ์๊ฐ ํ ๋น๋์ ๋ค ์ด task๋ค์ด ์ ์ฅ๋๋ค.
- ํ ๋ฒ ์คํ๋์๋ค๊ฐ ์๊ฐ์ด ๋ง๋ฃ๋ task๋ ์ด ํ๋ก ์ด๋๋๋ค.
์ํฉ 1: ๋ ๋์ ์ฐ์ ์์์ ์ค๋ ๋์๊ฒ ์ ์ ๋นํ๋ ๊ฒฝ์ฐ
์ค๋ ๋๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์คํ ์ค์ธ๋ฐ ์์ ๋ณด๋ค ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ํ๋๋ฉด ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋๋ ์ฆ์ CPU๋ฅผ ๋นผ์๊ธฐ๊ณ ๋ค์ ์๋์ Active ํ๋ก ๋์๊ฐ๋ค.
์ํฉ 2: I/0 ์์ ์ด๋ ๋๊ธฐํ ๋ฑ์ผ๋ก Blocked๋๋ ๊ฒฝ์ฐ
์ค๋ ๋๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๋์คํฌ ์ ์ถ๋ ฅ, ๋๊ธฐํ ๋๊ธฐ ๋ฑ์ ์ด์ ๋ก Blocked ์ํ๊ฐ ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ค๋ ๋๋ CPU๋ฅผ ๋์์ฃผ๊ณ ํด๋น ์์ ์ ์๋ฃํ ๋๊น์ง ๋๊ธฐํ๋ค. Blocked ์ํ์๋ค๊ฐ ๋ค์ ์คํ ๊ฐ๋ฅํ ์ํ๋ก ๋์์ฌ ๋๋ ์ค์ผ์ค๋ฌ๊ฐ ๋ณดํต ํด๋น ์ค๋ ๋์ ์ฐ์ ์์๋ฅผ ๋์ฌ์ Active ํ๋ก ๋ค์ ๋ฃ์ด์ค๋ค.
์ํฉ 3: ํ ๋น๋ Time Out์ ๋ชจ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์ค๋ ๋๊ฐ ํ ๋น๋ ์๊ฐ ํ ๋น๋์ ๋๊น์ง ๋ชจ๋ ์ฌ์ฉํ๊ณ ์ ์์ ์ผ๋ก CPU ์ฌ์ฉ์ ๋ง์น๋ ๊ฒฝ์ฐ๋ก, ์ด ์ค๋ ๋๋ Active ํ๋ก ๋์๊ฐ๋ ๊ฒ์ด ์๋๋ผ Expired ํ๋ก ๋ณด๋ด์ง๋ค.
ํ ๊ตํ
Expired ํ๋ ์๊ฐ ํ ๋น๋์ ๋ค ์ด ์ค๋ ๋๋ค์ด ๊ณ์ ์์ด๋ ๊ณณ์ด๋ค. ์ค์ผ์ค๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Active ํ์ ์๋ ์ค๋ ๋๋ค๋ง ์ฒ๋ฆฌํ๋ค. ์ด๋ฌ๋ค ๋ณด๋ฉด ๊ฒฐ๊ตญ Active ํ๊ฐ ์ ์ฐจ ๋น์ด๊ฐ๊ณ ๋ชจ๋ ์ค๋ ๋๊ฐ Expired ํ์์ ๋๊ธฐํ๋ ์ํฉ์ด ์ฌ ์ ์๋ค.
Active ํ๊ฐ ๋น์ด์๋ ๊ฒ์ ํ์ธํ๋ฉด Active ํ์ Expired ํ์ ์ญํ ์ ํต์งธ๋ก ๋ฐ๊พผ๋ค.
์ด์ ๊ธฐ์กด์ Expired ํ์ ์๋ ๋ชจ๋ ์ค๋ ๋๋ค์ด ์๋ก์ด Active ํ๊ฐ ๋์ด ์คํ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ค.
๊ธฐ์กด์ Active ํ๋ ๋น์ด์๋ ์๋ก์ด Expired ํ๊ฐ ๋๋ค.
์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ค์ preemptive ๋นํ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ timeout๊น์ง CPU๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ณ Expired ํ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค. ํ์ง๋ง ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ค์ ์ํด preemptive ๋นํ ๊ฐ๋ฅ์ฑ์ด ๋์์ preemptive ๋์ด Active ํ์ ๋จ๊ฒจ๋๋ค. ๊ฒฐ๊ตญ Active ํ์ ๋จ์ ํ๋ก์ธ์ค๋ค์ด Expired ํ์ ์๋ ํ๋ก์ธ์ค๋ค๋ณด๋ค ์ฐ์ ์ ์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ starvation ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋ค.
'์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CH11-2 I/O Management and Disk Scheduling (0) | 2025.06.15 |
---|---|
CH11-1 I/O Management and Disk Scheduling (0) | 2025.06.14 |
CH10-1 Multiprocessor and Real-Time Scheduling (1) | 2025.06.09 |
CH9-2 Uniprocessor Scheduling (0) | 2025.06.08 |
CH9-1 Uniprocessor Scheduling (1) | 2025.06.08 |