OS - CPU Scheduling 1

๋ฏผ์ฐฌํ™ยท2023๋…„ 10์›” 13์ผ
0

CS - OS(์šด์˜์ฒด์ œ)

๋ชฉ๋ก ๋ณด๊ธฐ
4/6

๐Ÿš€ OS - Process Management 2 ์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๐Ÿงฉ CPU Scheduling

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ๋Š” ์œ„์™€ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค. CPU์—์„œ instruction์„ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ CPU burst๋ผ๊ณ  ํ•œ๋‹ค. I/O ์ž‘์—…์ด ์ค‘๊ฐ„์— ๋งŽ์ด ๋ผ๊ฒŒ๋˜๋ฉด CPU burst๊ฐ€ ์งง์•„์ง€๊ณ , ๊ทธ์™€ ๋ฐ˜๋Œ€๋กœ CPU burst๊ฐ€ ๊ธธ์–ด์ง€๋Š” ์ˆœ๊ฐ„๋„ ์กด์žฌํ•œ๋‹ค.

์ด๋ ‡๋“ฏ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์€ CPU burst๊ฐ€ ๊ธธ์ˆ˜๋„ ์žˆ๊ณ , ์งง์„์ˆ˜๋„ ์žˆ๊ฒŒ ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ๊ฒƒ๋“ค์„ ํ†ต์ œํ•˜๊ธฐ ์œ„ํ•ด ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๋‹ค.

์—ฌ๊ธฐ์„œ CPU ์Šค์ผ€์ค„๋ง์€ ํ˜„์žฌ ready queue์— ๋“ค์–ด์™€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์ค‘์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

CPU ์Šค์ผ€์ค„๋ง์—” ๋‘๊ฐ€์ง€ ์ฃผ์š”ํ•œ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค.

  • CPU๋ฅผ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ค„ ๊ฒƒ์ธ๊ฐ€.
  • CPU burst๊ฐ€ ๊ธธ์–ด์ง€๋ฉด CPU๋ฅผ ๋บ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€.

๐Ÿงฉ CPU Scheduling์˜ ์ข…๋ฅ˜

CPU Scheduling์—๋Š” ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋น„์„ ์ ํ˜•๊ณผ ์„ ์ ํ˜•์ด๋‹ค.

  • ๋น„์„ ์ ํ˜•์€ I/O ์ž‘์—…์ด ๋“ค์–ด์˜ค๊ธฐ ์ „๊นŒ์ง€ CPU๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์„ ์ ํ˜•์€ timer๋ฅผ ๋‘๊ณ  CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ผ์ •ํ•œ ๊ธฐ์ค€์„ ๋‘๊ณ  CPU Scheduling์„ ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๊ฒƒ์„ Scheduling criteria(์„ฑ๋Šฅ ์ฒ™๋„)๋ผ๊ณ  ํ•œ๋‹ค.

  • CPU utilization(์ด์šฉ๋ฅ ) : ์ „์ฒด ์‹œ๊ฐ„ ์ค‘์—์„œ CPU๊ฐ€ ์‰ฌ์ง€ ์•Š๊ณ  ์ผํ•œ ๋น„์œจ
  • Throughout(์ฒ˜๋ฆฌ๋Ÿ‰) : ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ๋ช‡ ๊ฐœ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ–ˆ๋Š๋ƒ
  • Turnaround time(์†Œ์š”์‹œ๊ฐ„) : CPU๋ฅผ ์“ฐ๋Ÿฌ ๋“ค์–ด์™€์„œ ๋‹ค ์“ฐ๊ณ  ๋‚˜๊ฐˆ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  • Waiting time(๋Œ€๊ธฐ์‹œ๊ฐ„) : CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„
  • Response time(์‘๋‹ต์‹œ๊ฐ„) : ready queue์— ๋“ค์–ด์˜ค๊ณ  ๋‚œ ํ›„ ์ฒ˜์Œ์œผ๋กœ CPU๋ฅผ ์–ป๊ธฐ ์ „๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

์œ„์˜ ๋‘๊ฐ€์ง€๋Š” ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ ์„ฑ๋Šฅ ์ฒ™๋„์ด๊ณ , ๋‚˜๋จธ์ง€ ์„ธ๊ฐœ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„์ด๋‹ค. ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„๋Š” ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ CPU ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง€๊ณ  ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ผ์„ ์ฒ˜๋ฆฌ์‹œํ‚ค๋ฉด ์ข‹์€๊ฑฐ๊ณ , ํ”„๋กœ๊ทธ๋žจ ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„๋Š” ๋‚ด๊ฐ€ CPU๋ฅผ ๋นจ๋ฆฌ ์–ป์–ด์„œ ๋นจ๋ฆฌ ๋๋‚ด๋ฉด ์ข‹์€ ๊ฒƒ์ด๋‹ค.

์œ„์—์„œ ๋Œ€๊ธฐ์‹œ๊ฐ„๊ณผ ์‘๋‹ต์‹œ๊ฐ„์˜ ์ฐจ์ด๋Š” ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์—์„œ ํ•œ๋ฒˆ CPU๋ฅผ ์–ป์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฌดํ•œ์ • CPU๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์„ ์ „๋ถ€ ํ•ฉ์นœ ์‹œ๊ฐ„์ด ๋Œ€๊ธฐ์‹œ๊ฐ„์ด๊ณ , ์‘๋‹ต์‹œ๊ฐ„์€ ์ตœ์ดˆ์— CPU๋ฅผ ์–ป๊ฒŒ ๋œ ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.

๋˜ ์—ฌ๊ธฐ์„œ ์ฐฉ๊ฐํ•˜๋ฉด ์•ˆ๋˜๋Š”๊ฒŒ ์œ„์—์„œ ๋งํ•œ ์š”์†Œ๋“ค์€ ๋งค CPU burst๋งˆ๋‹ค ์ธก์ •ํ•˜๋Š” ์š”์†Œ์ด๋‹ค. ์ „์›์„ ์ผœ๊ณ  ๋Œ๋•Œ๊นŒ์ง€์˜ ์–˜๊ธฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ด์ œ ์Šค์ผ€์ค„๋ง์˜ ์ข…๋ฅ˜๋งˆ๋‹ค ์•Œ์•„๋ณผ ์ฐจ๋ก€์ด๋‹ค.

๐Ÿงฉ FCFS(First-Come First-Served)

  • ๊ฐ€์žฅ ๋จผ์ € ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ•ด์ฃผ๋Š” ๋ฐฉ์‹
  • ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง
  • ๊ทธ๋‹ค์ง€ ํšจ์œจ์ ์ด์ง€ ์•Š์Œ
  • ์ œ์ผ ๋จผ์ € ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์˜ค๋ž˜์žก์„์ˆ˜๋„ ์žˆ์Œ
  • ์•ž์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์˜ค๋ƒ์— ๋”ฐ๋ผ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • convey effect : ๊ธด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋•Œ๋ฌธ์— ์งง์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ํ˜„์ƒ

๐Ÿงฉ SJF(Shortest-Job-First) ์Šค์ผ€์ค„๋ง

๋น„์„ ์ ํ˜• SJF

์„ ์ ํ˜• SJF

  • ๋‹ค์Œ CPU burst time์˜ ๊ธธ์ด๋ฅผ ๊ณ ๋ คํ•ด์„œ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋น„์„ ์ ํ˜•๊ณผ ์„ ์ ํ˜•์ด ๋”ฐ๋กœ ์กด์žฌ
  • ๋น„์„ ์ ํ˜•์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋๊นŒ์ง€ ์‹คํ–‰ํ•œ๋‹ค.
  • ์„ ์ ํ˜•์—์„œ๋Š” ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹œ๊ฐ„๋ณด๋‹ค ๋„์ฐฉํ•œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋นจ๋ฆฌ ๋๋‚  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ผ๋ฉด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋ฐ”๊พผ๋‹ค. SRTF(Shortest Remaining Time First)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
  • ์ฃผ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•ด ์ตœ์†Œํ•œ์˜ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ณด์žฅํ•œ๋‹ค. (์„ ์ ํ˜•์—์„œ)

SJF ๋‹จ์ 

  • Starvation : ๋งŒ์•ฝ CPU์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์ด๋ฉด ์•ž์— CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๊ฐ€ ์˜์›ํžˆ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.(์ค‘๊ฐ„์ค‘๊ฐ„์— CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ๊ทธ๋žจ์ด ๊ณ„์† ๋“ค์–ด์˜ค๋ฉด)
  • ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค.(๊ณผ๊ฑฐ CPU์‚ฌ์šฉ๋Ÿ‰์œผ๋กœ ์–ด๋Š์ •๋„ ์˜ˆ์ธก์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ •ํ™•ํ•˜์ง€๋Š” ์•Š์Œ / Exponential Averaging ์ˆ˜์‹)

๐Ÿงฉ Priority Scheduling

  • ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„ ๋„˜๋ฒ„๊ฐ€ ์žˆ๋‹ค.
  • ์ž‘์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด๋‹ค.
  • ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • ์„ ์ ํ˜•๊ณผ ๋น„์„ ์ ํ˜•์ด ๋‚˜๋‰œ๋‹ค.
  • SJF๋„ ์ผ์ข…์˜ priority ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Starvation์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.(์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜์›ํžˆ CPU๋ฅผ ์–ป์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ)
  • Starvation์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Aging์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ Aging์ด๋ž€ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿงฉ Round Robin(RR)

  • ๋Œ€๋ถ€๋ถ„ ํ˜„๋Œ€์  ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šค์ผ€์ค„๋ง
  • ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ CPU ํ• ๋‹น ์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•ด์„œ ํ•ด๋‹น ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๊ฒŒ ํ•œ๋‹ค.
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋‹นํ•˜๊ณ  ready queue์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.
  • n๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue์— ์žˆ๊ณ  ํ• ๋‹น์‹œ๊ฐ„์ด q time์ธ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ๋Œ€ q time ๋‹จ์œ„๋กœ CPU์‹œ๊ฐ„์˜ 1/n์„ ์–ป๋Š”๋‹ค. => ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q time ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
  • ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋ณธ์ธ์ด CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๊ฒŒ ๋œ๋‹ค.
    - ์ผ๋ฐ˜์ ์œผ๋กœ SJF๋ณด๋‹ค average turnaround time์ด ๊ธธ์ง€๋งŒ response time์€ ๋” ์งง๋‹ค. (ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์งง์€ ํ”„๋กœ์„ธ์Šค์™€ ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ž์—ฌ์žˆ์–ด์„œ RR๋ฐฉ์‹์ด ๋” ํšจ์œจ์ ์ด๋‹ค.)

q large => FCFS
q small => context switch์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง„๋‹ค.

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊ฟ‰๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€