STUDY ๐Ÿ“š/CS

[OS] CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

daxx0ne 2023. 4. 20. 13:05

CPU ์Šค์ผ€์ค„๋ง์ด๋ž€?

 

ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ์„ฑ๋œ ํ›„ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฑฐ์นจ (์ƒ์„ฑ, ์ค€๋น„, ์‹คํ–‰, ์™„๋ฃŒ, ๋Œ€๊ธฐ ์ƒํƒœ)

์ด๋•Œ, ์šด์˜์ฒด์ œ์˜ CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ค€๋น„ ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผํ•จ!

์ด ๊ณผ์ •์„ CPU ์Šค์ผ€์ค„๋ง์ด๋ผ ํ•จ

 

โžก๏ธ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•ด์•ผ ํ•˜๋Š” ์ผ์„ ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ CPU์— ํ• ๋‹น

 

CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉํ‘œ

: CPU ์ด์šฉ๋ฅ ์€ ๋†’๊ฒŒ, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ๋งŽ์€ ์ผ์„ ํ•˜๊ฒŒ, ์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ ๊ฒŒ, ์‘๋‹ต์‹œ๊ฐ„์€ ์งง๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ

 

CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜

 

 

CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์–ธ์ œ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ• ๊นŒ?

 

1) ์‹คํ–‰์ƒํƒœ์—์„œ ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ

2) ์‹คํ–‰์ƒํƒœ์—์„œ ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ

3) ๋Œ€๊ธฐ์ƒํƒœ์—์„œ ์ค€๋น„์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ

4) ์ข…๋ฃŒ๋  ๋•Œ

 

1๋ฒˆ๊ณผ 4๋ฒˆ ์ƒํ™ฉ์—์„œ๋งŒ ์Šค์ผ€์ค„๋ง์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋น„์„ ์ ํ˜•(non-preemptive) ์Šค์ผ€์ค„๋ง

์ด์™ธ์˜ ๋ชจ๋“  ์Šค์ผ€์ค„๋ง์€ ์„ ์ ํ˜•(preemptive) ์Šค์ผ€์ค„๋ง

 


๋น„์„ ์ ํ˜•(non-preemptive) ์Šค์ผ€์ค„๋ง

 

๋น„์„ ์ ํ˜• ๋ฐฉ์‹์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์Šค๋กœ CPU ์†Œ์œ ๊ถŒ์„ ํฌ๊ธฐํ•˜๋Š” ๋ฐฉ์‹

→ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋บ์„ ์ˆ˜ ์—†์Œ

  • ๊ฐ•์ œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜์ง€ ์•Š์Œ
  • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ์ธํ•œ ๋ถ€ํ•˜๊ฐ€ ์ ์Œ
    • ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ (๋ฌธ๋งฅ ๊ตํ™˜): ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ ๊ธฐ์กด์— ์‹คํ–‰๋˜๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ
  • ํ”„๋กœ์„ธ์Šค์˜ ๋ฐฐ์น˜์— ๋”ฐ๋ผ์„œ ํšจ์œจ์„ฑ ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚˜๊ฒŒ ๋จ

 

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ์ข…๋ฅ˜

 

FCFS (First Come, First Served)

: ๊ฐ€์žฅ ๋จผ์ € ์˜จ ๊ฒƒ์„ ๊ฐ€์žฅ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๊ธธ๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค ๋•Œ๋ฌธ์— Convoy effect๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
    • Convoy effect(ํ˜ธ์œ„ ํšจ๊ณผ): ๋ช‡ ๊ฐœ์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ์ „์ฒด OS๊ฐ€ ๋А๋ ค์ง€๋Š” ํ˜„์ƒ

 

 

SJF (Shortest Job First)

: ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์‹ค์ œ๋กœ๋Š” ํ”„๋กœ์„ธ์Šค์˜ CPU ์‹คํ–‰ ์‹œ๊ฐ„์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ
  • ๊ธด ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ณ„์† ๋ฐ€๋ฆฌ๋ฉด์„œ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌด๊ธฐํ•œ์œผ๋กœ ๋Œ€๊ธฐํ•˜๋Š” ๊ธฐ์•„ ํ˜„์ƒ(Starvation)์ด ์ผ์–ด๋‚จ

 

 

์šฐ์„ ์ˆœ์œ„ (Priority)

: ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„ ๋„˜๋ฒ„๊ฐ€ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๊ธด ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” SJF ์Šค์ผ€์ค„๋ง์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•จ
    • ์˜ค๋ž˜๋œ ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ์‹

 


์„ ์ ํ˜•(preemptive) ์Šค์ผ€์ค„๋ง

 

์„ ์ ํ˜• ๋ฐฉ์‹์€ ํ˜„๋Œ€ ์šด์˜์ฒด์ œ๊ฐ€ ์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ์ค‘๋‹จ์‹œ์ผœ ๋ฒ„๋ฆฌ๊ณ  ๊ฐ•์ œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— CPU ์†Œ์œ ๊ถŒ์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹

  • ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธด ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ ๋…์ ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅ
    • ์žฆ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ(Overhead)๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ
    • ์˜ค๋ฒ„ํ—ค๋“œ(Overhead): ์–ด๋–ค ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์ ‘์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ · ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์„ ๋งํ•จ

 

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ์ข…๋ฅ˜

 

๋ผ์šด๋“œ ๋กœ๋นˆ (RR, Round Robin)

: ํ˜„๋Œ€ ์ปดํ“จํ„ฐ๊ฐ€ ์“ฐ๋Š” ์Šค์ผ€์ค„๋ง์˜ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ์ผ์ข…์œผ๋กœ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ ํ• ๋‹น ์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•ด์„œ ํ•ด๋‹น ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ CPU๋ฅผ ์ด์šฉํ•˜๊ฒŒ ํ•จ

  • ํ• ๋‹น ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜๋ฉด ๊ฐ•์ œ ์ค‘๋‹จ ํ›„ ๋‹ค์Œ ์ž‘์—…์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฏ€๋กœ ์„ ์ ํ˜• ๋ฐฉ์‹
    • ์‹œ๊ฐ„ ์•ˆ์— ์ฒ˜๋ฆฌ๋ฅผ ๋ชปํ•˜๋ฉด ๋‹ค์‹œ ์ค€๋น„ ํ์˜ ๋’ค๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ
  • ์‘๋‹ต ์‹œ๊ฐ„์„ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ง
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ์ž‘์—… ์‹œ๊ฐ„์€ ๊ธธ์–ด์ง€์ง€๋งŒ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์€ ์งง์•„์ง„๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Œ

ex) q๋งŒํผ์˜ ํ• ๋‹น ์‹œ๊ฐ„์ด ๋ถ€์—ฌ๋˜๊ณ  N๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์šด์˜์‹œ (N-1)*q ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ž๊ธฐ ์ฐจ๋ก€๊ฐ€ ์˜ค๊ฒŒ๋จ

ํ• ๋‹น ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ํฌ๋ฉด FCFS๊ฐ€ ๋˜๊ณ  ์งง์œผ๋ฉด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ์žฆ์•„์ ธ์„œ ์˜ค๋ฒ„ํ—ค๋“œ → ๋น„์šฉ ์ฆ๊ฐ€

 

 

SRF (Shortest Remaining Time First)

: ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹œ๊ฐ„๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ๋๋‚  ์ˆ˜ ์žˆ๋Š” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํ˜„์žฌ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋ฐ”๊ฟˆ

  • ์ค‘๊ฐ„์— ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋” ์งง์€ ์ž‘์—…์ด ๋“ค์–ด์™€๋„ ๊ธฐ์กด ์งง์€ ์ž‘์—…์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ทธ ๋‹ค์Œ ์งง์€ ์ž‘์—…์„ ์ด์–ด๋‚˜๊ฐ€๋Š”๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ธ SJF์™€ ๋‹ค๋ฆ„
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ญ์‹œ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•จ

 

 

๋‹ค๋‹จ๊ณ„ ํ (Multilevel Queue)

: ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ฅธ ์ค€๋น„ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•˜๊ณ , ํ๋งˆ๋‹ค ๋ผ์šด๋“œ ๋กœ๋นˆ์ด๋‚˜ FCFS ๋“ฑ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ๊ฒƒ

  • ํ ๊ฐ„์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์ด ์•ˆ ๋˜๋ฏ€๋กœ ์Šค์ผ€์ค„๋ง ๋ถ€๋‹ด์ด ์ ์ง€๋งŒ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ํŠน์ง•์ด ์žˆ์Œ
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ฎ์€ ํ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋˜๋Š” ๊ธฐ์•„(Starvation)ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜๋„ ์žˆ์Œ