๐Ÿ‘€ CPU-Burst time

  • ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์€ CPU๋ฅผ ์–ป์–ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ I/O ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๋•Œ CPU๋งŒ ์“ฐ๋ฉด์„œ Instruction์„ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋Š” CPU burst๋ผ ํ•˜๊ณ  I/O๋งŒ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋Š” I/O burst๋ผ ํ•œ๋‹ค.
  • ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉ์ค‘์ด๋ผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ฒ ์ง€๋งŒ I/O ์ž‘์—…์ค‘์ด๋ผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋„๋ก CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๋‹ค.


ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ ๋ถ„๋ฅ˜

I/O-bound process

  • CPU๋ฅผ ์žก๊ณ  ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค I/O์— ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ job (CPU burst๊ฐ€ ์•„์ฃผ ์งง๋‹ค)
  • ์ฃผ๋กœ ์‚ฌ๋žŒ๊ณผ Interactiveํ•˜๋Š” job

CPU-bound process

  • ๊ณ„์‚ฐ ์œ„์ฃผ์˜ job (CPU burst๊ฐ€ ์•„์ฃผ ๊ธธ๋‹ค)


CPU Scheduler

  • Ready ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ด๋ฒˆ์— CPU๋ฅผ ์ค„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฅธ๋‹ค.

Dispatcher

  • CPU์˜ ์ œ์–ด๊ถŒ์„ CPU Scheduler์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ธด๋‹ค.
  • ์ด ๊ณผ์ •์„ context switch(๋ฌธ๋งฅ ๊ตํ™˜)๋ผ ํ•œ๋‹ค.

CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

  • Running -> Blocked (์˜ˆ: I/O ์š”์ฒญํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ)
  • Running -> Ready (์˜ˆ: ํ• ๋‹น์‹œ๊ฐ„ ๋งŒ๋ฃŒ๋กœ timer interrupt)
  • Blocked -> Ready (์–˜: I/O ์™„๋ฃŒ ํ›„ ์ธํ„ฐ๋ŸฝํŠธ)
  • Terminate

  • ์Šค์ผ€์ค„๋ง์—๋Š” ๊ฐ•์ œ๋กœ ๋นผ์•—์ง€ ์•Š๊ณ  ์ž์ง„ ๋ฐ˜๋‚ฉํ•˜๋Š” non-preemptive์™€ ๊ฐ•์ œ๋กœ ๋นผ์•—๋Š” preemptive๊ฐ€ ์žˆ๋‹ค.
  • ํ˜„๋Œ€ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์„œ๋Š” preemptive๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


์Šค์ผ€์ค„๋ง ์„ฑ๋Šฅ ์ฒ™๋„

  • CPU utilization(์ด์šฉ๋ฅ ) : CPU๊ฐ€ ์–ผ๋งˆ๋‚˜ ์‰ผ ์—†์ด ์ผํ•˜๋Š”์ง€
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰) : ๋‹จ์œ„ ์‹œ๊ฐ„๋™์•ˆ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์˜ ์–‘์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€์ง€
  • Turnaround time(์†Œ์š”์‹œ๊ฐ„, ๋ฐ˜ํ™˜์‹œ๊ฐ„) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–ป์–ด์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์ด ์‹œ๊ฐ„(๋Œ€๊ธฐ์‹œ๊ฐ„ ํฌํ•จ)
  • Waiting time(๋Œ€๊ธฐ ์‹œ๊ฐ„) : Ready queue์—์„œ CPU๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„. ์ž‘์—… ์‹œ๊ฐ„์€ ์ œ์™ธํ•˜๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„๋งŒ ๋ณธ๋‹ค.
  • Response tiem(์‘๋‹ต ์‹œ๊ฐ„) : (time-sharing ์‹œ์Šคํ…œ์—์„œ) ์ฒ˜์Œ์œผ๋กœ CPU๋ฅผ ์–ป์–ด์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„


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

FCFS (First-Come First-Serve)

  • ์„ ์ฐฉ์ˆœ ๋ฐฉ์‹์œผ๋กœ ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ์–ป์–ด์„œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์ค‘์— ์˜จ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ด์ „ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ๋จผ์ € ์™€์„œ ๊ณ„์† ์ˆ˜ํ–‰๋˜๊ณ  ์‹œ๊ฐ„์ด ์งง์€ ์ž‘์—…๋“ค์ด ๋’ค์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—” ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง
  • ์งง์€ ์ž‘์—…์ด ๋จผ์ € ์™€์„œ ์ฒ˜๋ฆฌ๋œ ํ›„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง์•„์ง€์ง€๋งŒ ๋Š˜ ์ด๋ ‡๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋‹ˆ๊นŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š์€ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Convoy effect : ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธด ์ž‘์—…์ด ๋จผ์ € ์™€์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ ์งง์€ ์ž‘์—…๋“ค์€ ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ˜„์ƒ

SJF (Shortest-Job-First)

  • ๋„์ฐฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค CPU burst time์„ ์˜ˆ์ธกํ•ด์„œ CPU burst time์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์ผ ๋จผ์ € ์Šค์ผ€์ค„ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง๋‹ค.
  • ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.
    • Non-preemptive : ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด ๋‹ค์Œ ์ž‘์—…์ด ์ง€๊ธˆ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—…๋ณด๋‹ค ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋” ์งง์•„๋„ ์ง€๊ธˆ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „ ๊นŒ์ง€๋Š” CPU๋ฅผ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
    • Preemptive : ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋‹ค์Œ์— ์˜จ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๋” ์งง์œผ๋ฉด CPU๋ฅผ ๋บ์–ด์„œ ์‹œ๊ฐ„์ด ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ธด๋‹ค. ๊ทผ๋ฐ ์ด๋Ÿฌ๋‹ค๋ณด๋ฉด ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ํ‰์ƒ CPU๋ฅผ ์–ป์ง€ ๋ชป ํ•  ์ˆ˜๋„ ์žˆ์–ด์„œ(starvation ๊ธฐ์•„ ํ˜„์ƒ) ์•„์ฃผ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

๋‹ค์Œ CPU Burst time ์˜ˆ์ธก ๋ฐฉ๋ฒ•

  • ์™„๋ฒฝํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์ถ”์ •(estimate)ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • n๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์˜ ์‹ค์ œ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„๊ณผ n๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ์˜ˆ์ธกํ–ˆ๋˜ ๊ฐ’๋“ค์„ ์ผ์ • ๋น„์œจ์”ฉ ๊ณฑํ•ด์„œ ๋”ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ n + 1๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์„ ์˜ˆ์ธกํ•œ๋‹ค.

Priority Scheduling

  • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์ด๋ผ ํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ถ€์—ฌ๋œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • ์ด๊ฒƒ ๋˜ํ•œ ๋‚˜์ค‘์— ๋„์ฐฉํ–ˆ์ง€๋งŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด Preemptive์™€ Non-preemptive ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๋ฌธ์ œ์  ๋˜ํ•œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ํ‰์ƒ CPU๋ฅผ ์–ป์ง€ ๋ชปํ•˜๋Š” Starvation ํ˜„์ƒ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ Aging ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ธ์œผ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์„ ์“ด๋‹ค.

Round Robin (RR)

  • ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ CPU ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ€์ง€๊ณ  ํ• ๋‹น๋œ ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด CPU๋ฅผ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ณ  Ready queue์˜ ๋งจ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„œ๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” Ready queue์˜ ํฌ๊ธฐ๋งŒํผ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ๋งŒํผ ๋นจ๋ฆฌ CPU๋ฅผ ์“ฐ๊ณ  Ready queue์—์„œ ๋น ์ ธ๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ๋ณธ์ธ์˜ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ํฌ๋ฉด FCFS์™€ ๋‹ค๋ฅผ ๋ฐ”๊ฐ€ ์—†๊ณ  ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด context switch๊ฐ€ ์ž์ฃผ ์ผ์–ด๋‚˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ์ค‘๊ฐ„๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Multilevel Queue

  • Ready queue๋ฅผ ์ž‘์—…์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ•ด์„œ ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด interactiveํ•œ ์ž‘์—…๋“ค์ด ๋‹ด๊ธด ํ๋ผ๋ฉด RR ์Šค์ผ€์ค„๋ง์„ ์ ์šฉํ•˜๊ณ  CPU burst ์ž‘์—…๋“ค์ด ๋‹ด๊ธด ํ๋ผ๋ฉด FCFS ์Šค์ผ€์ค„๋ง์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด ๋•Œ Starvation์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ํ์— CPU time์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹นํ•œ๋‹ค.
    • ์˜ˆ) RR ์Šค์ผ€์ค„๋ง ํ์—๋Š” 80%๋ฅผ ํ• ๋‹นํ•˜๊ณ  FCFS ์Šค์ผ€์ค„๋ง ํ์—๋Š” 20% ํ• ๋‹น

Multilevel Feedback Queue

  • Multilevel Queue์—์„œ๋Š” ํ•œ ๋ฒˆ ํ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์–ด์„œ ๋‚˜์ค‘์— ํ”„๋กœ์„ธ์Šค์˜ burst time์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜์–ด๋„ ๊ณ„์† ๋งž์ง€ ์•Š๋Š” ํ์— ์žˆ์–ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๊ฒƒ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด Multilevel Feedback Queue์ธ๋ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Aging์„ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Multilevel Feedback Queue scheduler๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค
    • Queue์— ์žˆ๋Š” ์ž‘์—…์˜ ์ˆ˜ : ์ž‘์—…์˜ ์ˆ˜๊ฐ€ ์ ์€ ํ์— ๋จผ์ € ํ• ๋‹น
    • ๊ฐ ํ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€ (์˜ˆ: CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ์งง์„ ์ˆ˜๋ก)
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€ (์˜ˆ: CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธธ์ˆ˜๋ก)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์„œ๋น„์Šค๋ฅผ ๋ฐ›์œผ๋ ค ํ•  ๋•Œ ๋“ค์–ด๊ฐˆ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€

Multiple-Processor Schduling

  • CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋ง์ด ๋”์šฑ ๋ณต์žกํ•ด์ง„๋‹ค.
  • Homogeneous processor(๋™์ข…)์ธ ๊ฒฝ์šฐ
    • ํ์— ํ•œ ์ค„๋กœ ์„ธ์›Œ์„œ ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•Œ์•„์„œ ๊บผ๋‚ด๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐ˜๋“œ์‹œ ํŠน์ • ํ”„๋กœ์„ธ์„œ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋” ๋ณต์žกํ•ด์ง
  • Load sharing
    • ์ผ๋ถ€ ํ”„๋กœ์„ธ์„œ์— job์ด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก ๋ถ€ํ•˜๋ฅผ ์ ์ ˆํžˆ ๊ณต์œ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•„์š”
    • ๋ณ„๊ฐœ์˜ ํ๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ• vs. ๊ณต๋™ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • Symmetric Multiprocessing (SMP)
    • ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ์ž ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •
  • Asymmetric multiprocessing
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ณผ ๊ณต์œ ๋ฅผ ์ฑ…์ž„์ง€๊ณ  ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์„œ๋Š” ๊ฑฐ๊ธฐ์— ๋”ฐ๋ฆ„

Real-Time Scheduling

  • ๋ฐ๋“œ ๋ผ์ธ์ด ์žˆ๋Š” ์ž‘์—…๋“ค์— ์ ์šฉ๋˜๋Š” ์Šค์ผ€์ค„๋ง
  • Hard real-time systems : ๋ฐ˜๋“œ์‹œ ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋๋‚ด๋„๋ก ์Šค์ผ€์ค„๋ง
  • Soft real-time computing : ๋ฐ๋“œ ๋ผ์ธ์„ ์กฐ๊ธˆ ์–ด๊ฒจ๋„ ๊ดœ์ฐฎ๊ธฐ ๋•Œ๋ฌธ์— Soft real-time task๋Š” ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๊ฒŒ ํ•œ๋‹ค.

Thread Scheduling

  • Local Scheduling : User level thread์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด ์–ด๋–ค ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„ ํ•  ์ง€ ๊ฒฐ์ •
  • Global Scheduling : Kernal level thread์ธ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ปค๋„์˜ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„ ํ•  ์ง€ ๊ฒฐ์ •

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‰๊ฐ€

  • Queueing models
    • ํ™•๋ฅ  ๋ถ„ํฌ๋กœ ์ฃผ์–ด์ง€๋Š” arrival rate์™€ service rate ๋“ฑ์„ ํ†ตํ•ด ๊ฐ์ข… performance index ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์š”์ฆ˜์€ ์ž˜ ์•ˆ ์“ด๋‹ค.
  • Implementation (๊ตฌํ˜„) & Measurement (์„ฑ๋Šฅ ์ธก์ •)
    • ์‹ค์ œ ์‹œ์Šคํ…œ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ์‹ค์ œ ์ž‘์—…(workload)์— ๋Œ€ํ•ด์„œ ์„ฑ๋Šฅ์„ ์ธก์ • ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ์‹
  • Simulation (๋ชจ์˜ ์‹คํ—˜)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์„ฑ ํ›„ trace๋ฅผ ์ž…๋ ฅ์œผ๋กœ ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋น„๊ต


์ถœ์ฒ˜