Skip to content

Latest commit

ย 

History

History
300 lines (192 loc) ยท 18.8 KB

File metadata and controls

300 lines (192 loc) ยท 18.8 KB

CPU Scheduler & Scheduling Algorithm

CPU Scheduler & Dispatcher

Scheduling Algorithm


CPU Scheduler & Dispatcher

CPU burst์™€ I/O burst

Untitled

CPU burst

CPU ๋ฒ„์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์ง์ ‘ ๊ฐ€์ง€๊ณ  ๋น ๋ฅธ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์€ CPU ๋‚ด์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ช…๋ น (ex. Add)์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ(ex. Store, Load)์— ์ ‘๊ทผํ•˜๋Š” ์ผ๋ฐ˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

I/O burst

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

ex) 1. ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ์ž‘์—… 2. ์ปดํ“จํ„ฐ์—์„œ ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ์ž‘์—… 3. ๋””์Šคํฌ์—์„œ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์ž‘์—… ๋“ฑ

์ด์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ณผ์ •์€ CPU ์ž‘์—…๊ณผ I/O ์ž‘์—…์˜ ๋ฐ˜๋ณต์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

CPU bound process์™€ I/O bound process

๊ฐ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค CPU ๋ฒ„์ŠคํŠธ์™€ I/O ๋ฒ„์ŠคํŠธ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์ด ๊ท ์ผํ•˜์ง€ ์•Š๋‹ค. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋Š” I/O ๋ฒ„์ŠคํŠธ๊ฐ€ ๋นˆ๋ฒˆํ•ด CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๋งค์šฐ ์งง์€ ๋ฐ˜๋ฉด, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋Š” I/O๋ฅผ ๊ฑฐ์˜ ํ•˜์ง€ ์•Š์•„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๋งค์šฐ ๊ธธ๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ธฐ์ค€์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ I/O ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค์™€ CPU ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

I/O ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค

I/O ์š”์ฒญ์ด ๋นˆ๋ฒˆํ•ด CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค. ์ฃผ๋กœ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ธํ„ฐ๋ž™์…˜์„ ๊ณ„์† ๋ฐ›์•„๊ฐ€๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น๋œ๋‹ค.

CPU ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค

I/O ์ž‘์—…์„ ๊ฑฐ์˜ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ธธ๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค. ์ฃผ๋กœ ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰์˜ ์ƒ๋‹น ์‹œ๊ฐ„์„ ์ž…์ถœ๋ ฅ ์ž‘์—… ์—†์ด CPU ์ž‘์—…์— ์†Œ๋ชจํ•˜๋Š” ๊ณ„์‚ฐ ์œ„์ฃผ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น๋œ๋‹ค.

Untitled

ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด I/O ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์งง์€ CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ˜๋ฉด, CPU ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์†Œ์ˆ˜์˜ ๊ธด CPU ๋ฒ„์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

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

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•ด๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์งง์€ CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ทนํžˆ ์ผ๋ถ€๋ถ„๋งŒ ๊ธด CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด๋Š” ๋‹ค์‹œ ๋งํ•ด์„œ CPU๋ฅผ ํ•œ ๋ฒˆ์— ์˜ค๋ž˜ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ž ๊น ์‚ฌ์šฉํ•˜๊ณ  I/O ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๋Œ€ํ™”ํ˜• ์ž‘์—…์„ ๋งŽ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋น ๋ฅธ ์‘๋‹ต์„ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ์ ์œผ๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ๋งŒ์•ฝ CPU ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋‹ค ์‚ฌ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ˆ˜๋งŽ์€ I/O ๋ฐ”์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋‹ค๋ ค์•ผํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•ด์กŒ๋‹ค.

  • CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด ์ƒ์ดํ•œ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ํ•จ๊ป˜ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ CPU ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค.

CPU ์Šค์ผ€์ค„๋Ÿฌ

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

  • ๋น„์„ ์ ํ˜•(nonpreemptive): CPU๋ฅผ ํš๋“ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šค์Šค๋กœ CPU๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” CPU๋ฅผ ๋นผ์•—๊ธฐ์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•
  • ์„ ์ ํ˜•(preemptive): ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋”๋ผ๋„ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ•

CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

  • Running โ†’ Blocked (ex. I/O ์š”์ฒญํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ)
  • Running โ†’ Ready (ex. ํ• ๋‹น ์‹œ๊ฐ„ ๋งŒ๋ฃŒ๋กœ ์ธํ•œ ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ)
  • Blocked โ†’ Ready (ex. I/O ์™„๋ฃŒ ํ›„ ์ธํ„ฐ๋ŸฝํŠธ)
  • Terminated

1, 4๋ฒˆ์งธ์˜ ์Šค์ผ€์ค„๋ง์€ ๊ฐ•์ œ๋กœ ๋นผ์•—์ง€ ์•Š๊ณ  ์ž์ง„ ๋ฐ˜๋‚ฉํ•˜๋Š” nonpreemptive ๋ฐฉ์‹์ด๊ณ , ๊ทธ ์™ธ์˜ ์Šค์ผ€์ค„๋ง์€ CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—๋Š” preemptive ๋ฐฉ์‹์ด๋‹ค. 3๋ฒˆ์งธ ์Šค์ผ€์ค„๋ง์€ I/O ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ๋‹นํ•œ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„, ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ›„ ์ง์ „์— ์ˆ˜ํ–‰๋˜๋˜ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋‹ค์‹œ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌธ๋งฅ๊ตํ™˜์„ ํ†ตํ•ด I/O๊ฐ€ ์™„๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ•ด๋‹นํ•œ๋‹ค.

Dispatcher

  • ์ƒˆ๋กญ๊ฒŒ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ค์ •์„ ํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ์ฝ”๋“œ

  • CPU๋ฅผ ๋ˆ„๊ตฌํ•œํ…Œ ๋ˆ„๊ตฌํ•œํ…Œ ์ค„ ์ง€ ๊ฒฐ์ •ํ–ˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์•ผ ํ•˜๋Š”๋ฐ, ๋””์ŠคํŒจ์ฒ˜๊ฐ€ ์ด ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด ๊ณผ์ •์ด Context Switch์— ํ•ด๋‹นํ•œ๋‹ค.

  • ๋””์ŠคํŒจ์น˜ ์ง€์—ฐ์‹œ๊ฐ„(dispatch latency): ๋””์ŠคํŒจ์ฒ˜๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ง€์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. ๋””์ŠคํŒจ์น˜ ์ง€์—ฐ์‹œ๊ฐ„์€ ๋ฌธ๋งฅ๊ตํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ์— ํ•ด๋‹น๋œ๋‹ค.

์Šค์ผ€์ค„๋ง์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€ (Scheduling Criteria)

์‹œ์Šคํ…œ ์ž…์žฅ

  • CPU utilization (์ด์šฉ๋ฅ )
    • ์ „์ฒด ์‹œ๊ฐ„ ์ค‘์—์„œ CPU๊ฐ€ ์ผ์„ ํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ
    • keep the CPU as busy as possible
  • Throughput (์ฒ˜๋ฆฌ๋Ÿ‰)
    • ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ๋๋งˆ์ณค๋Š”์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    • ์ฆ‰ CPU์˜ ์„œ๋น„์Šค๋ฅผ ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘ ๋ช‡ ๊ฐœ๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ์˜ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฒˆ CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๋๋‚ด์–ด ์ค€๋น„ ํ๋ฅผ ๋– ๋‚ฌ์ง€ ์ธก์ •ํ•œ ๊ฒƒ์ด๋‹ค.
    • ๋” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ์ ์œผ๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.
    • number of processes that complete their execution per time until

ํ”„๋กœ์„ธ์Šค ์ž…์žฅ

  • Turnaround time (์†Œ์š” ์‹œ๊ฐ„, ๋ฐ˜ํ™˜ ์‹œ๊ฐ„)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์š”์ฒญํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ž์‹ ์ด ์›ํ•˜๋Š” ๋งŒํผ CPU๋ฅผ ๋‹ค ์“ฐ๊ณ  CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ๋œปํ•œ๋‹ค.
    • (์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„) + (์‹ค์ œ๋กœ CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„)
    • amount of time to execute a particular process
  • Waiting time (๋Œ€๊ธฐ ์‹œ๊ฐ„)
    • CPU ๋ฒ„์ŠคํŠธ ๊ธฐ๊ฐ„ ์ค‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์—์„œ CPU๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ์„ ๋œปํ•œ๋‹ค.
    • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ, ํ•œ ๋ฒˆ์˜ CPU ๋ฒ„์ŠคํŠธ ์ค‘์—๋„ ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋•Œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๋๋‚˜๊ธฐ๊นŒ์ง€ ์ค€๋น„ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ์„ ๋œปํ•˜๊ฒŒ ๋œ๋‹ค.
    • amount of time a process has been waiting in the ready queue
  • Response time (์‘๋‹ต ์‹œ๊ฐ„)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์— ๋“ค์–ด์˜จ ํ›„ ์ฒซ ๋ฒˆ์งธ CPU๋ฅผ ํš๋“ํ•˜๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์„ ๋œปํ•œ๋‹ค.
    • ์‘๋‹ต ์‹œ๊ฐ„์€ ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•œ ์„ฑ๋Šฅ ์ฒ™๋„๋กœ์„œ, ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ฑ๋Šฅ ์ฒ™๋„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

Scheduling Algorithms

์„ ์ž… ์„ ์ถœ ์Šค์ผ€์ค„๋ง (FCFS, First-Come First-Served)

  • ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ (nonpreemptive) = (๋น„์„ ์ )
  • CPU๋ฅผ ์˜ค๋ž˜ ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์™€์„œ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์œผ๋ฉด, ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ „๋ถ€ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋ฏ€๋กœ ํšจ์œจ์ ์ด์ง€ ์•Š์Œ

Untitled

  • ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋А๋ƒ์— ๋”ฐ๋ผ ์ „์ฒด ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นจ
    • 1๋ฒˆ
      • ๋Œ€๊ธฐ ์‹œ๊ฐ„: P1 = 0, P2 = 24, P3 = 27
      • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„: (0 + 24 + 27) / 3 = 17
    • 2๋ฒˆ
      • ๋Œ€๊ธฐ ์‹œ๊ฐ„: P1 = 6, P2 = 0, P3 = 3
      • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„: (6 + 0 + 3) / 3 = 3
  • ๊ธด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜ ๋•Œ๋ฌธ์— ์งง์€ ํ”„๋กœ์„ธ์Šค ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ˜„์ƒ์„ Convoy effect ๋ผ ๋ถ€๋ฆ„

์ตœ๋‹จ ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง (SJF, Shortest-Job-First)

  • SJF๋Š” CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ œ์ผ ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ์งง๊ฒŒ ํ•˜๋Š” ์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    • nonpreemptive (๋น„์„ ์ ํ˜•)
      • ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์™€๋„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ์„ ์ ๋‹นํ•˜์ง€ ์•Š์Œ.
    • preemptive (์„ ์ ํ˜•)
      • SRTF (Shortest-Remaining-Time-First)
      • CPU๋ฅผ ์žก์•˜๋‹ค ํ•˜๋”๋ผ๋„ ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด CPU๋ฅผ ๋บด์•—๊น€.
  • ๋ฌธ์ œ์ 
    • Starvation (๊ธฐ์•„): ์งง์€ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜์›ํžˆ CPU๋ฅผ ์žก์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Œ
    • CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์Œ: ๊ณผ๊ฑฐ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ํ†ตํ•ด ์ถ”์ •๋งŒ ๊ฐ€๋Šฅ

๋น„์„ ์ ํ˜• ๋ฐฉ์‹ ์˜ˆ์‹œ

Untitled

์„ ์ ํ˜• ๋ฐฉ์‹ ์˜ˆ์‹œ

Untitled

์šฐ์„  ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง (Priority Scheduling)

  • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์ œ์ผ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹น
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ์„  ์ˆœ์œ„ ๊ฐ’ (priority number)๊ฐ€ ์ž‘์„ ์ˆ˜๋ก ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹
    • nonpreemptive (๋น„์„ ์ ํ˜•)
      • ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์™€๋„ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋–„๊นŒ์ง€ CPU๋ฅผ ์„ ์ ๋‹นํ•˜์ง€ ์•Š์Œ.
    • preemptive (์„ ์ ํ˜•)
      • CPU๋ฅผ ์žก์•˜๋‹ค ํ•˜๋”๋ผ๋„ ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด CPU๋ฅผ ๋นผ์•—๊น€
  • SJF๋Š” ์ผ์ข…์˜ ์šฐ์„  ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ (์šฐ์„  ์ˆœ์œ„ = ์˜ˆ์ƒ๋˜๋Š” ๋‹ค์Œ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„)
  • ๋ฌธ์ œ์ 
    • Starvation (๊ธฐ์•„): ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ์˜์›ํžˆ CPU๋ฅผ ์žก์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    • Aging (๋…ธํ™”): ์•„๋ฌด๋ฆฌ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ผ ํ•˜๋”๋ผ๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ์ง€๋‚˜๋ฉด ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋ฒ•.

๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง (RR, Round Robin)

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„์ธ time quantum ์„ ๊ฐ€์ง
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ๋นผ์•—๊ธฐ๊ณ  Ready Queue ๋งจ ๋’ค์— ๊ฐ€์„œ ์ค„์„ ์„œ๊ฒŒ ๋จ
  • ์งง์€ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋ณด์žฅํ•จ
    • ์กฐ๊ธˆ์”ฉ CPU๋ฅผ ์คฌ๋‹ค ๋บ์—ˆ๋‹ค๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU๋ฅผ ์ตœ์ดˆ๋กœ ์–ป๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์งง์Œ
    • n๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready Queue์— ์žˆ๊ณ , ํ• ๋‹น ์‹œ๊ฐ„์ด q time unit์ธ ๊ฒฝ์šฐ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n - 1) * q time unit ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Œ
    • CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด CPU ๋ฒ„์ŠคํŠธ์— ๋น„๋ก€
  • ์„ฑ๋Šฅ
    • q๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก FCFS์— ๊ฐ€๊นŒ์›Œ์ง
    • q๊ฐ€ ์ž‘์„ ์ˆ˜๋ก context switch ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•จ
  • ์ผ๋ฐ˜์ ์œผ๋กœ SJF๋ณด๋‹ค ํ‰๊ท  turnaround time (์†Œ์š” ์‹œ๊ฐ„)์ด ๊ธธ์ง€๋งŒ, ์‘๋‹ต ์‹œ๊ฐ„์€ ์งง์Œ
  • ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” job๊ณผ ์งง๊ฒŒ ๊ฑธ๋ฆฌ๋Š” job์ด ์„ž์—ฌ ์žˆ์„ ๋•Œ๋Š” ํšจ์œจ์ ์ด์ง€๋งŒ, ๋ชจ๋“  ์‹œ๊ฐ„์ด ๋™์ผํ•œ job๋งŒ ์žˆ์„ ๋•Œ๋Š” ๋น„ํšจ์œจ์ ์ด๋‹ค.

Untitled

์œ„์™€ ๊ฐ™์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์€ ์ผ์ • ํ• ๋‹น ์‹œ๊ฐ„(20)์„ ๊ณตํ‰ํ•˜๊ฒŒ ํ• ๋‹น ๋ฐ›์•„์„œ CPU ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ (Multi-Level Queue)

  • Ready Queue๋ฅผ ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ•œ๋‹ค.
    • ์–ด๋–ค ์ค„์— ์„œ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•  ๊ฒƒ์ธ๊ฐ€, ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋А ์ค„์— ์„ธ์›Œ์•ผํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค.
    • ๋น ๋ฅธ ์‘๋‹ต์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋Œ€ํ™”ํ˜• ์ž‘์—…์€ ์ „์œ„ ํ์— ๋„ฃ๋Š”๋‹ค.
      • ์ „์œ„ ํ์—์„œ๋Š” ์ฃผ๋กœ ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. (์‘๋‹ต์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด)
    • ๊ณ„์‚ฐ ์œ„์ฃผ์˜ ์ž‘์—…์€ ํ›„์œ„ ํ์— ๋„ฃ๋Š”๋‹ค.
      • ํ›„์œ„ ํ์—์„œ๋Š” ์ฃผ๋กœ FCFS ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. (์‘๋‹ต์‹œ๊ฐ„์ด ํฐ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ๋งฅ๊ตํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋„๋ก ํ•œ๋‹ค.)
  • ๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ ์ž์ฒด์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๋‹ค. (์–ด๋А ํ์— ๋จผ์ € CPU๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€)
    • ๊ณ ์ • ์šฐ์„  ์ˆœ์œ„ ๋ฐฉ์‹ (Fixed Priority Scheduling)
      • ์ „์œ„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ์ ์œผ๋กœ CPU๊ฐ€ ํ• ๋‹น๋˜๊ณ , ์ „์œ„ ํ๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ›„์œ„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
      • Starvation ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•œ๋‹ค.
    • ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ๋ฐฉ์‹ (Time Slice)
      • ๊ฐ ํ์— CPU time์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹นํ•œ๋‹ค.
      • ex) 80%๋Š” ์ „์œ„ ํ, 20%๋Š” ํ›„์œ„ ํ

๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ (Multi-Level Feedback Queue)

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ๋œ Ready Queue ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ๋ฅผ ์ด์šฉํ•˜์—ฌ aging ๊ธฐ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • aging ๊ธฐ๋ฒ•์€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์—์„œ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ธ์œผ๋ฉด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋กœ ์Šน๊ฒฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋ฉ€ํ‹ฐ ๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ๋ฅผ ์ •์˜ํ•˜๋Š” ์š”์†Œ
    • ํ์˜ ์ˆ˜
    • ๊ฐ ํ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์œ„ ํ๋กœ ์Šน๊ฒฉํ•˜๋Š” ๊ธฐ์ค€
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜์œ„ ํ๋กœ ๊ฐ•๋“ฑํ•˜๋Š” ๊ธฐ์ค€
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ–ˆ์„ ๋•Œ ๋“ค์–ด๊ฐˆ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€
      • ๋ณดํ†ต ์ฒ˜์Œ ๋“ค์–ด์˜ค๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ์— CPU ํ• ๋‹น ์‹œ๊ฐ„์„ ์งง๊ฒŒ ํ•˜์—ฌ ๋ฐฐ์น˜ํ•œ๋‹ค.
      • ๋งŒ์•ฝ ์ฃผ์–ด์ง„ ํ• ๋‹น ์‹œ๊ฐ„ ์•ˆ์— ์ž‘์—…์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜๋ฉด CPU ํ• ๋‹น ์‹œ๊ฐ„์„ ์กฐ๊ธˆ ๋” ์ฃผ๋˜, ์šฐ์„  ์ˆœ์œ„๊ฐ€ ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์€ ํ๋กœ ๊ฐ•๋“ฑํ•œ๋‹ค.
      • ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€ ์ตœํ•˜์œ„ ํ์— ๋ฐฐ์น˜๊ฐ€ ๋œ๋‹ค.

Untitled

๋‹ค์ค‘ ์ฒ˜๋ฆฌ๊ธฐ ์Šค์ผ€์ค„๋ง (Multi-Processor Scheduling)

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

์‹ค์‹œ๊ฐ„ ์Šค์ผ€์ค„๋ง (Real-time Scheduling)

  • ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ์‹คํ–‰์ด ๋˜์–ด์•ผ ํ•˜๋Š”, ์ฆ‰ deadline์ด ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
  • ๊ฒฝ์„ฑ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ (hard real-time system)
    • ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ์ž‘์—…์ด ๋๋‚˜๋„๋ก ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•œ๋‹ค.
  • ์—ฐ์„ฑ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ (soft real-time system)
    • ๋ฐ๋“œ๋ผ์ธ์ด ์กด์žฌํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ง€ํ‚ค์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์œ„ํ—˜ํ•œ ์ƒํ™ฉ์ด ์ƒ๊ธฐ์ง€๋Š” ์•Š๋Š”๋‹ค.
    • ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ–๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.

์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง (Thread Scheduling)

  • Local Scheduling
    • ์œ ์ € ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ๊ฐ€ ํ•ด๋‹น ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค.
    • OS๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ ์–ด๋А ์Šค๋ ˆ๋“œํ•œํ…Œ CPU๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
  • Global Scheduling
    • ์ปค๋„ ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ ์ปค๋„์˜ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„ํ•  ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.

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

ํ์ž‰ ๋ชจ๋ธ

  • ์ฃผ๋กœ ์ด๋ก ๊ฐ€๋“ค์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๋„์ฐฉ๋ฅ ๊ณผ CPU์˜ ์ฒ˜๋ฆฌ์œจ์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ๋ฉด, ๋ณต์žกํ•œ ์ˆ˜ํ•™์  ๊ณ„์‚ฐ์„ ํ†ตํ•ด ๊ฐ์ข… ์„ฑ๋Šฅ ์ง€ํ‘œ์ธ CPU์˜ ์ฒ˜๋ฆฌ๋Ÿ‰, ํ”„๋กœ์„ธ์Šค์˜ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋“ฑ์„ ๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค.

๊ตฌํ˜„ ๋ฐ ์‹ค์ถ•

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

์‹œ๋ฎฌ๋ ˆ์ด์…˜

  • ๊ฐ€์ƒ์œผ๋กœ CPU ์Šค์ผ€์ค„๋ง ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ ํ›„ ํ”„๋กœ๊ทธ๋žจ์˜ CPU ์š”์ฒญ์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋„ฃ์–ด ์–ด๋– ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์ž…๋ ฅ๊ฐ’์€ ๊ฐ€์ƒ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ์˜ CPU ์š”์ฒญ ๋‚ด์—ญ์„ ์ถ”์ถœํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ์ถ”์ถœํ•œ ์ž…๋ ฅ๊ฐ’์„ ํŠธ๋ ˆ์ด์Šค (trace)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
    • ํŠธ๋ ˆ์ด์Šค๋Š” ๋ช‡ ์ดˆ์— ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๊ณ , ๊ฐ๊ฐ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์„ ์–ผ๋งˆ๋กœ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‹œ๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ์ ์–ด ๋†“์€ ํŒŒ์ผ์„ ๋งํ•œ๋‹ค.

๐Ÿ“š ์ถœ์ฒ˜

๋ฐ˜ํšจ๊ฒฝ๊ต์ˆ˜๋‹˜ ์šด์˜์ฒด์ œ ๊ฐ•์˜

์šด์˜์ฒด์ œ ์ •๋ฆฌ ๊นƒํ—™



Summary



โ‰๏ธ ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

  1. ์Šค์ผ€์ค„๋ง์ด ๋ฌด์—‡์ธ์ง€์™€ ๋ชฉ์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
  1. ๋น„์„ ์ ๋ฐฉ์‹๊ณผ ์„ ์ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
  1. ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ• ์ค‘ FCFS์˜ ๋‹จ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.