์šด์˜์ฒด์ œ

CH10-2 Multiprocessor and Real-Time Scheduling

meteorqz6 2025. 6. 13. 22:06

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