CPU ์Šค์ผ€์ค„๋ง

์ •์˜

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

image.png

ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์€ CPU ์‹คํ–‰๊ณผ I/O ๋Œ€๊ธฐ์˜ ์‚ฌ์ดํด๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋‘ ์ƒํƒœ๋ฅผ ๊ต๋Œ€๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋ฉด์„œ ์ž‘์—…์ด ์ฒ˜๋ฆฌ๋œ๋‹ค. ์ดˆ๊ธฐ์—๋Š” CPU ๋ฒ„์ŠคํŠธ๋กœ ์‹œ์ž‘๋˜๊ณ , ๋’ค์ด์–ด I/O ๋ฒ„์ŠคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

CPU ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •์€ ๋‹ค์Œ์˜ ๋„ค ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
  2. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
  3. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
  4. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ

์ด๋•Œ, 1๋ฒˆ๊ณผ 4๋ฒˆ์—์„œ๋Š” ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด ๋ฐœ์ƒํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, 1๋ฒˆ์˜ ๊ฒฝ์šฐ I/O ์ž‘์—… ํ˜น์€ ์™ธ๋ถ€ ์ด๋ฒคํŠธ ์ข…๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ณ  4๋ฒˆ์˜ ๊ฒฝ์šฐ ์ž‘์—…์ด ๋ชจ๋‘ ์™„๋ฃŒ๋๊ธฐ ๋•Œ๋ฌธ์— ์Šค์Šค๋กœ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ์ „ํ™˜๋œ๋‹ค.

๋ฐ˜๋ฉด์— 2๋ฒˆ๊ณผ 3๋ฒˆ์—์„œ๋Š” ์„ ์ ํ˜• ํ˜น์€ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด ๋ฐœ์ƒํ•œ๋‹ค. 2๋ฒˆ์˜ ๊ฒฝ์šฐ ์‹œ๋ถ„ํ• ์ด ๋๋‚˜์„œ ์Šค์Šค๋กœ ์ค€๋น„ ์ƒํƒœ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ ˆ๋”” ํ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์ด ์กด์žฌํ•˜์—ฌ ๊ฐ•์ œ๋กœ ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ์ˆ˜ ์žˆ๋‹ค. 3๋ฒˆ์˜ ๊ฒฝ์šฐ ์ค€๋น„ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ฑฐ๋‚˜ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„ CPU๋ฅผ ์„ ์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์ค€

CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๊ตํ•˜๋Š” ๊ธฐ์ค€์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • CPU ์ด์šฉ๋ฅ (utilization) : ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ๋Š” 40%์—์„œ 90% ๋ฒ”์œ„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ
  • ์ฒ˜๋ฆฌ๋Ÿ‰(throughput) : ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰
  • ์ด์ฒ˜๋ฆฌ ์‹œ๊ฐ„(turnaround time) : ๋ ˆ๋”” ํ์—์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„ + CPU ์‹คํ–‰ ์‹œ๊ฐ„ + I/O ์‹œ๊ฐ„
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„(waiting time) : ๋ ˆ๋”” ํ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„
  • ์‘๋‹ต ์‹œ๊ฐ„(response time)

โ†’ CPU ์ด์šฉ๋ฅ ๊ณผ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•˜๊ณ  ์ด์ฒ˜๋ฆฌ ์‹œ๊ฐ„, ๋Œ€๊ธฐ ์‹œ๊ฐ„, ์‘๋‹ต ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

์ข…๋ฅ˜

  • FCFS

    • ์„ ์ž…์„ ์ถœ, ๋น„์„ ์ ํ˜•
    • ๋Œ€๊ธฐ ํ์— ๋“ค์–ด๊ฐˆ ๋•Œ, PCB๋ฅผ ํ์˜ ๋์— ์—ฐ๊ฒฐ
    • ์ž‘์—…์‹œ๊ฐ„์ด ๊ธด ์ž‘์—…์ด ๋จผ์ € ์‹คํ–‰๋  ๊ฒฝ์šฐ ์ž‘์—…์‹œ๊ฐ„์ด ์งง์€ ์ž‘์—…์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง โ†’ ํ˜ธ์œ„ ํšจ๊ณผ(Convoy Effect)
  • SJF

    • ์ž‘์—… ์‹œ๊ฐ„์ด ์งง์€ ์ž‘์—…์ด ๋จผ์ € ์‹คํ–‰

    • ๋‹ค์Œ ์ž‘์—… ์‹œ๊ฐ„์„ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„์ด ์–ด๋ ค์›€ โ†’ ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์„ ํ†ตํ•ด ์˜ˆ์ธก

      image.png

      • tn : n๋ฒˆ์งธ ์‹ค์ œ ์ธก์ •๋œ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„
      • ฯ„n : n๋ฒˆ์งธ ์˜ˆ์ธก๊ฐ’
      • ฮฑ : ๊ฐ€์ค‘์น˜ (0 โ‰ค ฮฑ โ‰ค 1)
    • ๋น„์„ ์ ํ˜•์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์„ ์ ํ˜•์ด ๋  ์ˆ˜๋„ ์žˆ์Œ

      • ๋น„์„ ์ ํ˜•์˜ ๊ฒฝ์šฐ ์ž‘์—… ์‹œ๊ฐ„์ด ๋” ์งง์€ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ–ˆ์„ ๋•Œ, ํ˜„์žฌ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์ด ๋๋‚˜๋„๋ก ํ—ˆ์šฉ
      • ์„ ์ ํ˜•์˜ ๊ฒฝ์šฐ ์ž‘์—… ์‹œ๊ฐ„์ด ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ–ˆ์„ ๋•Œ, CPU๋ฅผ ์ ์œ  โ†’ SRTF
  • RR

    • ์‹œ๋ถ„ํ• ์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌ, ์„ ์ ํ˜•

    • ์ผ๋ฐ˜์ ์œผ๋กœ 10์—์„œ 100๋ฐ€๋ฆฌ์ดˆ ๋™์•ˆ ์ž‘์—… ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์›ํ˜• ํ๋ฅผ ํ†ตํ•ด ๋™์ž‘

    • ์ž‘์—… ์‹œ๊ฐ„์ด ์‹œ๋ถ„ํ• ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ ์ž๋ฐœ์ ์œผ๋กœ CPU์—์„œ ๋‚˜์˜ด

    • ์ž‘์—… ์‹œ๊ฐ„์ด ์‹œ๋ถ„ํ• ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ํƒ€์ด๋จธ๊ฐ€ ๋๋‚œ ํ›„ OS์—์„œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋ฐœ์ƒ

    • ์‹œ๋ถ„ํ• ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ์ขŒ์ง€์šฐ์ง€

      image.png

      • ์งง๊ฒŒ ์žก์œผ๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๊ธฐ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜
      • ๊ธธ๊ฒŒ ์žก์œผ๋ฉด ์ž‘์—… ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ค„์–ด๋“ฆ
  • Priority Scheduling

    • ์šฐ์„ ์ˆœ์œ„์— ์˜ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น
    • ์šฐ์„ ์ˆœ์œ„๋Š” ๋‚ด๋ถ€์  ๋˜๋Š” ์™ธ๋ถ€์ ์œผ๋กœ ์ •์˜๋  ์ˆ˜ ์žˆ์Œ
      • ๋‚ด๋ถ€์  : ์‹œ๊ฐ„ ์ œํ•œ, ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ, ์—ด๋ฆฐ ํŒŒ์ผ์˜ ์ˆ˜, ํ‰๊ท  I/O ๋ฒ„์ŠคํŠธ์˜ ํ‰๊ท  CPU ๋ฒ„์ŠคํŠธ์— ๋Œ€ํ•œ ๋น„์œจ
      • ์™ธ๋ถ€์  : ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”์„ฑ, ์ปดํ“จํ„ฐ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ง€๋ถˆ๋˜๋Š” ๋น„์šฉ์˜ ์œ ํ˜•๊ณผ ์–‘, ์ž‘์—…์„ ํ›„์›ํ•˜๋Š” ๋ถ€์„œ, ์ •์น˜์ ์ธ ์š”์ธ
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์— ๊ณ„์† ๋ฐ€๋ ค ์ž‘์—…์ด ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•˜๋Š” ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋žซ๋™์•ˆ ๋Œ€๊ธฐํ•˜๋Š” ์ž‘์—…๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์—์ด์ง• ๊ธฐ๋ฒ•์ด ์กด์žฌ
  • MLQ(Multi-Level Queue)

    image.png

    • ๋Œ€๊ธฐ ํ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์„ ์ฐพ๊ธฐ ์œ„ํ•ด O(n) ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
    • ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ํ๋ฅผ ๋ฐฐ์น˜ํ•˜์—ฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด, ๊ฒ€์ƒ‰ ๋น„์šฉ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Œ
    • ๊ฐ ํ๋Š” ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
    • ์ƒ์œ„ ํ์— ์ž‘์—…์ด ์žˆ์œผ๋ฉด ๋ฌด์กฐ๊ฑด ๋จผ์ € ์‹คํ–‰๋˜๊ณ  ์ด๋กœ ์ธํ•ด ํ•˜์œ„ ํ์—์„œ ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ํ๋ณ„๋กœ CPU ์‹œ๊ฐ„์„ ์ผ์ • ๋น„์œจ๋กœ ๋ถ„๋ฐฐํ•  ์ˆ˜ ์žˆ์Œ (์ƒ์œ„ ํ 80, ํ•˜์œ„ ํ 20)
  • MLFQ(Multi-Level Feedback Queue)

    image.png

    • MLQ์™€ ๋‹ฌ๋ฆฌ, ์ž‘์—…๋“ค์ด ํ๋“ค ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ์— ์ง„์ž…
      • ์‹œ๋ถ„ํ• ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์€ ํ๋กœ ์ด๋™
      • ์‹œ๋ถ„ํ• ์ด ๋๋‚˜๊ธฐ ์ „์— I/O๋กœ ๋น ์ง€๋ฉด ํ˜„์žฌ ํ๋ฅผ ์œ ์ง€
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์— ์‹œ๋ถ„ํ•  ์‹œ๊ฐ„์„ ๋” ๊ธธ๊ฒŒ ๋ถ€์—ฌ
    • ๊ธฐ์•„ ํ˜„์ƒ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์—์ด์ง• ์ ์šฉ์ด ๊ฐ€๋Šฅ

๋””์ŠคํŒจ์ฒ˜

image.png

CPU ์Šค์ผ€์ค„๋ง ๊ธฐ๋Šฅ์— ํฌํ•จ๋œ ์š”์†Œ๋กœ CPU ์ฝ”์–ด์˜ ์ œ์–ด๋ฅผ CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒํ•œ ํ”„๋กœ์„ธ์Šค์— ์ฃผ๋Š” ๋ชจ๋“ˆ์ด๋ฉฐ ๋‹ค์Œ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ
  • ์‚ฌ์šฉ์ž ๋ชจ๋“œ ์ „ํ™˜
  • ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ์ ์ ˆํ•œ ์œ„์น˜๋กœ ์ด๋™

์ฆ‰, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ˜ธ์ถœ๋˜๊ณ  ๊ฐ€๋Šฅํ•œ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์Šค ์ •์ง€ ๋ฐ ์žฌ์‹คํ–‰์ด ๋ฐœ์ƒํ•˜๊ณ  ์ด๋•Œ ์ง€์—ฐ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋””์ŠคํŒจ์น˜ ์ง€์—ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€๋Š” vmstat ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.