Computer Science/๐Ÿ”’ Operating System

[์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„์„ ์ ํ˜•, ์„ ์ ํ˜•

J1Yun 2023. 2. 28. 15:00
728x90
๐Ÿ’ก CPU ์Šค์ผ€์ค„๋ง ์ฒ™๋„

1. CPU ์ด์šฉ๋ฅ (CPU utilization)์‹œ๊ฐ„๋‹น CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ
2. ์ฒ˜๋ฆฌ์œจ(Throughput)์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌํ•œ ์ž‘์—…์˜ ๋น„์œจ
3. ๋ฐ˜ํ™˜์‹œ๊ฐ„(Turnaround Time)ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ ์ข…๋ฃŒ๋˜์–ด ์‚ฌ์šฉํ•˜๋˜ ์ž์›์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
4. ๋Œ€๊ธฐ์‹œ๊ฐ„(Waiting Time)๋Œ€๊ธฐ์—ด์— ๋“ค์–ด์™€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„
5. ๋ฐ˜์‘์‹œ๊ฐ„(Response Time)๋Œ€๊ธฐ์—ด์—์„œ ์ฒ˜์Œ์œผ๋กœ CPU๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

-> 
CPU ์ด์šฉ๋ฅ ๊ณผ ์ฒ˜๋ฆฌ์œจ์€ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ณ  ๋ฐ˜ํ™˜์‹œ๊ฐ„, ๋Œ€๊ธฐ์‹œ๊ฐ„, ๋ฐ˜์‘์‹œ๊ฐ„์€ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

 

1. CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„์„ ์ ํ˜•

  • ๋น„์„ ์ ํ˜• ๋ฐฉ์‹(non-preemptive)์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์Šค๋กœ CPU ์†Œ์œ ๊ถŒ์„ ํฌ๊ธฐํ•˜๋Š” ๋ฐฉ์‹
  • ๊ฐ•์ œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜์ง€ ์•Š์Œ
  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋บ์„ ์ˆ˜ ์—†์Œ
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ์ธํ•œ ๋ถ€ํ•˜๊ฐ€ ์ ์ง€๋งŒ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐฐ์น˜์— ๋”ฐ๋ผ ํšจ์œจ์„ฑ ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚จ
  • Ex) FCFS, SJF, ์šฐ์„ ์ˆœ์œ„ ๋“ฑ

 

1-1) FCFS(First Come First Served)

  • ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฐ€์žฅ ๋จผ์ € ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•ด์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

์žฅ์ 

  • ๊ฐœ๋ฐœ ์šฉ์ด
  • ๊ธฐ์•„ ํ˜„์ƒ ๋ฐœ์ƒ X
  • ๋ฐ˜ํ™˜์‹œ๊ฐ„(Turnaround Time) ๋ฉด์—์„œ ์ข‹์„ ์ˆ˜ ์žˆ์Œ

๋‹จ์ 

  • ํ˜ธ์œ„ ํšจ๊ณผ(Convoy Effect)
    • ์†Œ์š” ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„๋‹ฌํ•  ๊ฒฝ์šฐ ํšจ์œจ์„ฑ์ด ๋‚ฎ์•„์ง
    • ์‹คํ–‰ ์‹œ๊ฐ„์ด ์งง์€ ์ž‘์—…์ด์–ด๋„ ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋ฉด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ์‘๋‹ต์‹œ๊ฐ„(Response Time)์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ

 

1-2) SJF(Shortest Job First)

  • ํ์— ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค ์ค‘ ์‹คํ–‰ ์‹œ๊ฐ„(Burst Time)์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์‹ค์ œ๋กœ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฑฐ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ฐ”ํƒ•์œผ๋กœ ์ถ”์ธกํ•ด์„œ ์‚ฌ์šฉ

์žฅ์ 

  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง์Œ
  • ์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ

๋‹จ์ 

  • ๊ธฐ์•„ ํ˜„์ƒ(Starvation)
    • ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ ์˜์›ํžˆ CPU ํ• ๋‹น์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ
  • ํ”„๋กœ์„ธ์Šค์˜ ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์›€

 

1-3) ์šฐ์„ ์ˆœ์œ„(Priority)

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์„ ์ ํ˜•๊ณผ ๋น„์„ ์ ํ˜•์œผ๋กœ ๋ชจ๋‘ ์„ค๊ณ„ ๊ฐ€๋Šฅ
  • ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋…ธํ™”(Aging) ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ
    • ์˜ค๋ž˜๋œ ์ž‘์—…์ผ์ˆ˜๋ก ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์คŒ

 

 

2. CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ์ ํ˜•

  • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๊ฐ•์ œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ์†Œ์œ ๊ถŒ์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋”๋ผ๋„ ์ด๋ฅผ ๋บ์„ ์ˆ˜ ์žˆ์Œ
  • ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธด ํ”„๋กœ์„ธ์Šค์˜ CPU ๋…์ ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์žฆ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • Ex) Round Robin, SRF, MLQ/MLFQ

 

2-1) Round Robin(RR)

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋™์ผํ•œ ํ• ๋‹น ์‹œ๊ฐ„(Time Quantum)์„ ๋ถ€์—ฌํ•ด์„œ ํ•ด๋‹น ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๋„๋ก ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํ• ๋‹น ์‹œ๊ฐ„ ์•ˆ์— ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์‹œ ์ค€๋น„ ํ(Ready Queue)์˜ ๊ฐ€์žฅ ๋’ค๋กœ ๋Œ์•„๊ฐ€๊ณ  CPU๋Š” ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰

์žฅ์ 

  • n๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ํ• ๋‹น ์‹œ๊ฐ„์ด q๋ผ๋ฉด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q ์ด์ƒ์˜ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋จ
  • ์‘๋‹ต์‹œ๊ฐ„(Response Time)์ด ๋น ๋ฆ„
  • ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์ด๋ฉฐ ํ”„๋กœ์„ธ์Šค๋“ค์˜ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๋žœ๋คํ•˜๊ฒŒ ์„ž์—ฌ ์žˆ์„ ๊ฒฝ์šฐ ํšจ์œจ์ 

๋‹จ์ 

  • ํ• ๋‹น ์‹œ๊ฐ„ q๊ฐ€ ์ปค์ง€๋ฉด FCFS์ฒ˜๋Ÿผ ๋™์ž‘
  • ํ• ๋‹น ์‹œ๊ฐ„ q๊ฐ€ ์ž‘์•„์ง€๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์ฐพ์•„์ ธ์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง

 

2-2) SRF/SRTF(Shortest Remaining Time First)

  • SJF์˜ ์„ ์ ํ˜• ๋ฐฉ์‹
  • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹œ๊ฐ„๋ณด๋‹ค ๋” ์งง์€ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•  ๊ฒฝ์šฐ CPU๋ฅผ ๊ฐ•์ œ๋กœ ํšŒ์ˆ˜ํ•˜์—ฌ ๊ต์ฒดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„๋‹ฌํ•  ๋•Œ๋งˆ๋‹ค ์Šค์ผ€์ค„๋ง์„ ๋‹ค์‹œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ์ธก์ •ํ•  ์ˆ˜ ์—†๊ณ , ๊ธฐ์•„ ํ˜„์ƒ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

 

2-3) Multi-Level Queue(๋‹ค๋‹จ๊ณ„ ํ)

  • ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ค€๋น„ ํ(Ready Queue)๋ฅผ ํ™œ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๊ฐ ์ค€๋น„ ํ์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉ
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋“ค์ด ์‹คํ–‰ ๋ชปํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ Time Quantum์„ ์„ค์ • ํ•ด์ฃผ๋Š” ๋ฐฉ์‹
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋Š” ์ž‘์€ Time Quantum ํ• ๋‹น. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋Š” ํฐ Time Quantum ํ• ๋‹น
    • ์ผ๋ฐ˜์ ์œผ๋กœ Foreground ํ”„๋กœ์„ธ์Šค๋“ค์€ Round Robin ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ , Background ํ”„๋กœ์„ธ์Šค๋Š” FCFS๋ฅผ ์‚ฌ์šฉ
  • ๊ฐ ํ ์‚ฌ์ด์—์„œ ํ”„๋กœ์„ธ์Šค ์ด๋™์€ ๋ถˆ๊ฐ€ํ•ด ์Šค์ผ€์ค„๋ง ๋ถ€๋‹ด์ด ์ ์Œ
  • ๋‚ฎ์€ ์ˆœ์œ„์˜ ํ์— ์œ„์น˜ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

 

2-4) MFQ/MLFQ(Multi-Level Feedback Queue)

  • Multi-Level Queue์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ ๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • Multi-Level Queue์—์„œ ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ Time Quantum์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ€๊ณ  Time Quantum์„ ๋‹ค ์ฑ„์šฐ์ง€ ๋ชปํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์›๋ž˜ ํ ์œ„์น˜ ๊ทธ๋Œ€๋กœ ๋‘ 
  • ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜์‹œ๊ฐ„(Turnaround Time)์„ ์ค„์—ฌ์ฃผ๋ฉฐ ์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ

 

 

โญ๏ธ ์ฐธ๊ณ 

728x90