์ฒด๋šฑ๋กœ๊ทธ

[์šด์˜์ฒด์ œ 3๊ธฐ] 3์ฃผ์ฐจ ์Šคํ„ฐ๋”” ์ •๋ฆฌ ๋ณธ๋ฌธ

CS/JSCODE

[์šด์˜์ฒด์ œ 3๊ธฐ] 3์ฃผ์ฐจ ์Šคํ„ฐ๋”” ์ •๋ฆฌ

sooyeoniya 2024. 1. 22. 21:21

๐Ÿ”น๊ธฐ์•„ ์ƒํƒœ(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)
      1. ์‘๋‹ต์‹œ๊ฐ„(response time): ์ž‘์—… ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ์‘๋‹ต ๋ฐ›์„ ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„
      2. ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰(throughput): ๋‹จ์œ„ ์‹œ๊ฐ„๋™์•ˆ ์™„๋ฃŒ๋œ ์ž‘์—… ์ˆ˜
      3. ์ž์› ํ™œ์šฉ๋„(resource utilization): ์ฃผ์–ด์ง„ ์‹œ๊ฐ„(Tc) ๋™์•ˆ ์ž์›์ด ํ™œ์šฉ๋œ ์‹œ๊ฐ„(Tr)

์Šค์ผ€์ค„๋ง ๊ธฐ์ค€(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 ๊ตฌ์„ฑ์€ ์ •์ฑ…์— ๋”ฐ๋ผ ๊ฒฐ์ •๋จ

๋™์ž‘ ์›๋ฆฌ

- ๊ฐ 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://velog.io/@underlier12/OS-24-%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C%EC%99%80-%EA%B8%B0%EC%95%84%EC%83%81%ED%83%9C

https://hpckoreatech.notion.site/Operating-System-CSE132-2023-b8aa98fe69cc4a8cb950051a04bc35ca

https://kjhoon0330.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81#2.1.1.%201)%20%EC%9E%A5%EA%B8%B0%20%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81%20(Long-term%20scheduler)

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

 

Comments