๐ŸŒ CS & Infra/Operating System

[OS] 02. ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ

devCloud 2023. 10. 16. 04:42
728x90

(1) ๊ฐœ์š”

CPU๋Š” ์ปดํ“จํ„ฐ ์ž์› ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ž์›์ด๋‹ค.

 

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง

  • *์ค€๋น„ ์™„๋ฃŒ(ready) ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ CPU์— ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ •์ฑ…์ด๋‹ค.
  • CPU์˜ *์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์ตœ๋Œ€ํ™”์™€ *๋ฐ˜ํ™˜์‹œ๊ฐ„(Turnaround Time)์˜ ์ตœ์†Œํ™”๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

*ready state : Main Memory์— ์˜ฌ๋ผ์™€ ์žˆ์ง€๋งŒ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•œ ์ƒํƒœ

*์ฒ˜๋ฆฌ๋Ÿ‰ : CPU๊ฐ€ ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜

*๋ฐ˜ํ™˜์‹œ๊ฐ„ : ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•ด์„œ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

(2) ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์–‘ํ•œ ์ •์˜

  • ์‹คํ–‰(Executing Running)์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ = ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ํ”„๋กœ๊ทธ๋žจ
  • PCB(Process Control Block)๋ฅผ ์ง€๋‹Œ ํ”„๋กœ๊ทธ๋žจ
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(Program Counter)๋ฅผ ์ง€๋‹Œ ํ”„๋กœ๊ทธ๋žจ

OS์˜ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ๋ฐ ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ๊ณผ ์‚ญ์ œ
  • ํ”„๋กœ์„ธ์Šค์˜ ์ผ์‹œ ์ค‘์ง€(suspend)์™€ ์žฌ์ˆ˜ํ–‰(redo)
  • ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง(์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€?)
  • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”(2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์˜ ๋™๊ธฐํ™”๋Š” ์–ด๋–ป๊ฒŒ?)
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์˜ ํ†ต์‹ ์€ ์–ด๋–ป๊ฒŒ?)
  • ๊ต์ฐฉ์ƒํƒœ ์ฒ˜๋ฆฌ(2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ฝ‰ ๋ง‰ํžŒ ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ?)

(3) ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ ์š”์†Œ

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ฃผ๊ธฐ์–ต์žฅ์น˜(๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ)์— ๋กœ๋“œ ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ์ฃผ๊ธฐ์–ต ์žฅ์น˜์— ๋กœ๋“œ๋œ ํ”„๋กœ๊ทธ๋žจ -> ํ”„๋กœ์„ธ์Šค(Process)

์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ

  • Code ์˜์—ญ : ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž์ฒด(CPU๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ ์ƒํƒœ), ์‹คํ–‰ ๋ช…๋ น์–ด ์ฝ”๋“œ(์ง‘ํ•ฉ)
  • Data ์˜์—ญ : ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ ๋ณ€์ˆ˜(Global variable)๋‚˜ ์ •์  ๋ณ€์ˆ˜(Static variable)ํ• ๋‹น
  • Stack ์˜์—ญ : ์ง€์—ญ ๋ณ€์ˆ˜(Local variable)์™€ ํ•จ์ˆ˜(๋ฉ”์†Œ๋“œ) ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„
  • Heap ์˜์—ญ : ๋ฉ”๋ชจ๋ฆฌ์˜ ๋™์  ํ• ๋‹น์„ ์œ„ํ•œ ๊ณต๊ฐ„
๊ตฌ์„ฑ ์š”์†Œ
์‹คํ–‰ ๋ช…๋ น์–ด์ฝ”๋“œ (์ฝ”๋“œ ์˜์—ญ)
์ „์—ญ๋ณ€์ˆ˜ / ์ •์ ๋ณ€์ˆ˜ (๋ฐ์ดํ„ฐ ์˜์—ญ)
๋™์  ํ• ๋‹น (ํž™ ์˜์—ญ)
. . .
์ง€์—ญ๋ณ€์ˆ˜ / ์ „๋‹ฌ์ธ์ˆ˜ (์Šคํƒ ์˜์—ญ)

 

(4) Process State

  • ์ค€๋น„(์™„๋ฃŒ)์ƒํƒœ (Ready State) : CPU ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ, ์ฆ‰ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ, ํ˜น์€ CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ž์‹ ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
  • ์‹คํ–‰ ์ƒํƒœ(Running State) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
  • ๋Œ€๊ธฐ ์ƒํƒœ(Block State) : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์–‘๋„(๋ฐ˜๋‚ฉ)ํ•˜๊ณ , ์ž…์ถœ๋ ฅ(I/O)์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

์‹คํ–‰ ์ƒํƒœ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚ ์ˆ˜๋„, ์‹œ๊ฐ„์ด ๋‹ค ๋ผ์„œ ๋Œ์•„๊ฐˆ์ˆ˜๋„ ์•„๋‹ˆ๋ฉด ์ž…์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ๋Š” 3๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

 

ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ „ํ™˜

  • ์ค€๋น„ ์ƒํƒœ -> ์‹คํ–‰ ์ƒํƒœ (Dispatch)
  • ์‹คํ–‰ ์ƒํƒœ -> ์ค€๋น„ ์ƒํƒœ (Timer Runout, ์‹œ๊ฐ„์ด ๋‹ค ๋จ)
  • ์‹คํ–‰ ์ƒํƒœ -> ๋Œ€๊ธฐ ์ƒํƒœ (Block, CPU ๋ฐ˜๋‚ฉํ•˜๊ณ  ์ž…์ถœ๋ ฅ ์ˆ˜ํ–‰)
  • ๋Œ€๊ธฐ ์ƒํƒœ -> ์ค€๋น„ ์ƒํƒœ (Wakeup , ์ž…์ถœ๋ ฅ ์™„๋ฃŒํ•˜๊ณ  ์ค€๋น„ ์ƒํƒœ๋กœ)

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ ๋‚ด์˜ Traffic Controller(ํŠธ๋ž˜ํ”ฝ ์ œ์–ด๊ธฐ)๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ์ „ํ™˜ํ•œ๋‹ค.

(5) Process Control Block(PCB)

  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์œผ๋กœ Process Descriptor(ํ”„๋กœ์„ธ์Šค ์„ค๋ช…)๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ด์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(ํ…Œ์ด๋ธ” ๊ตฌ์กฐ)์ด๋‹ค.
  • ๊ฐ Process๋Š” ์ž๊ธฐ๋งŒ์˜ PCB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  Process๊ฐ€ PCB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ์— ๋งŒ๋“ค์–ด์ง€๊ณ , ์ˆ˜ํ–‰ ์™„๋ฃŒ ์‹œ์— ์‚ญ์ œ๋œ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋Ÿฌ ๋‚ด์˜ Traffic Controller์— ์˜ํ•˜์—ฌ ๋‚ด์šฉ์ด ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ์„ฑ ํ˜•ํƒœ(PCB์— ํฌํ•จ๋˜๋Š” ์ •๋ณด)

  • ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ƒํƒœ(์ค€๋น„, ์‹คํ–‰, ๋Œ€๊ธฐ)
  • ํ”„๋กœ์„ธ์Šค์˜ ๊ณ ์œ  id(identifier)
  • ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์žฌ๋œ ๊ธฐ์–ต์žฅ์น˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›(์žฅ์น˜)๋“ฑ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • CPU ๋‚ด์— ์žˆ๋Š” ๊ฐ์ข… ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„
  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋‹ค์Œ์— ์‹คํ–‰ํ•ด์•ผ ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ)

โ€ป CPU๋„ ์ž์ฒด์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ๋ถ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค -> Register(์ž…์ถœ๋ ฅ ์†๋„๊ฐ€ ๋น ๋ฆ„)

(6) Process Scheduling

๋ชฉ์ 

1) ๊ณต์ •์„ฑ (๋ฌดํ•œ ๋Œ€๊ธฐ ๋ฐฉ์ง€)
2) ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ ์ตœ๋Œ€ํ™” (๋‹จ์œ„ ์‹œ๊ฐ„ ๋‚ด์— ์ตœ๋Œ€ํ•œ์˜ ํ”„๋กœ์„ธ์Šค ์ˆ˜ํ–‰)
3) ์‘๋‹ต ์‹œ๊ฐ„์˜ ์ตœ์†Œํ™” (์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋น ๋ฅธ ์‘๋‹ต)
4) ์˜ˆ์ธก ๊ฐ€๋Šฅ (๋™์ผ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ๋น„์šฉ ๋ฐ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•จ)
5) overhead์˜ ์ตœ์†Œํ™” (๋‚ญ๋น„๋˜๋Š” ์ž์› ์ตœ์†Œํ™”)
6) ์ž์› ์‚ฌ์šฉ์˜ ๊ท ํ˜• ์œ ์ง€
7) ๋น ๋ฅธ ์‘๋‹ต๊ณผ ์ž์› ์ด์šฉ ๊ฐ„์˜ ๊ท ํ˜• ์œ ์ง€ (ํšจ๊ณผ์ ์ธ ์ž์› ํ™œ์šฉ VS ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ)
8) ์‹คํ–‰์˜ ๋ฌดํ•œํ•œ ์ง€์—ฐ์„ ํ”ผํ•  ๊ฒƒ
9) ์šฐ์„ ์ˆœ์œ„์ œ ์‹ค์‹œ
10) ์ฆˆ์š” ์ž์›๋“ค์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ๊ถŒ ๋ถ€์—ฌ
11) ์ข€ ๋” ๋ฐ”๋žŒ์งํ•œ ๋™์ž‘์„ ๋ณด์ด๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋” ์ข‹์€ ์„œ๋น„์Šค ์ œ๊ณต
12) ์‹œ์Šคํ…œ์˜ ๊ณผ์ค‘ํ•œ ๋ถ€ํ•˜ ๊ฐ์†Œ

์ด๋Ÿฌํ•œ ์Šค์ผ€์ค„๋ง์˜ ๋ชฉ์ ๋“ค ๊ฐ„์˜ ์ƒํ˜ธ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด ์Šค์ผ€์ค„๋ง์ด ๋ณต์žกํ•ด์ง„๋‹ค.

 

โ–ถ ๋ฐฉ์‹๋ณ„ ๋ถ„๋ฅ˜ โ—€

โ˜ Non Preemptive scheduling

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

Ex) Priority, FCFS, SJF, HRN

 

โ˜ Preemptive scheduling

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€์‹œํ‚ค๊ณ  CPU๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•  ๋•Œ ์œ ๋ฆฌํ•˜๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๋˜๋Š” ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋ณด์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด์ „์— ์ˆ˜ํ–‰๋˜๋˜ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด(context)๋ฅผ ๋ณ„๋„๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•ด ๋‘์–ด์•ผ ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ(๋ถ€๋‹ด)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์„ ์  ์‹œ์— context switching(๋ฌธ๋งฅ ๊ตํ™˜)๋ถ€๋‹ด๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Ex) Priority, SRT, Round-Robin, Multilevel Queue/Feedback Queue

1. Priority scheduling

  • non preemptive, preemptive ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ฃผ์–ด์ง€๋ฉฐ, CPU๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น๋œ๋‹ค.
    • ๋‚ด๋ถ€์  ์š”์ธ(์ œํ•œ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰, ๊ฐœ๋ฐฉ๋œ ํŒŒ์ผ์˜ ์ˆ˜, etc)๊ณผ ์™ธ๋ถ€์  ์š”์ธ(ํ”„๋กœ์„ธ์Šค ์ค‘์š”์„ฑ, ์‚ฌ์šฉ ๋ถ€์„œ ๋“ฑ์˜ ์ •์ฑ…์  ์š”์ธ)์„ ์ด์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์† ๋Œ€๊ธฐํ•ด์•ผ ๋ผ์„œ indefinite blocking(๋ฌดํ•œ ๋Œ€๊ธฐ) or starvation(๊ธฐ์•„ ํ˜„์ƒ)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ *Aging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

*Aging๊ธฐ๋ฒ• : ์˜ค๋žซ๋™์•ˆ ์‹œ์Šคํ…œ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ •์  ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฒ•๊ณผ ๋™์  ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.
    • static priority : ์ƒ๋Œ€์ ์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ ์œผ๋‚˜, ์ฃผ์œ„ ์—ฌ๊ฑด์˜ ๋ณ€ํ™”์— ์ ์‘ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.
    • dynamic priority : ํ•„์š”์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฃผ๋ณ€ ์ƒํ™ฉ ๋ณ€ํ™”์— ์ž˜ ์ ์‘ํ•˜์ง€๋งŒ, ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์•„์ง„๋‹ค.

2. Deadline scheduling

  • ์ž‘์—…๋“ค์ด ๋ช…์‹œ๋œ ์‹œ๊ฐ„์ด๋‚˜ ๊ธฐํ•œ ๋‚ด์— ์™„๋ฃŒ๋˜๋„๋ก ๊ณ„ํšํ•˜๋Š” ์Šค์ผ€์ค„๋ง์ด๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์— ์œ ํšจํ•˜๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜, ์‹ค์ œ ์ ์šฉ์—๋Š” ๋งŽ์€ ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์ „์— ์ž‘์—…์ด ์š”๊ตฌํ•˜๋Š” ์ •ํ™•ํ•œ ์ž์›์„ ์ œ์‹œํ•ด์•ผ ํ•œ๋‹ค.
    • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์ž‘์—…์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ๊ธฐํ•œ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
    • ๊ธฐํ•œ๊นŒ์ง€ ์ž‘์—…์„ ๋๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ์ž์› ๋ฐฐ๋ถ„์„ ์‹ ์ค‘ํžˆ ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋งŽ์€ ์ˆ˜์˜ ๊ธฐํ•œ๋ถ€ ์ž‘์—…์ด ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์Šค์ผ€์ค„๋ง์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง„๋‹ค.
    • ๊ธฐํ•œ๋ถ€ ์Šค์ผ€์ค„๋ง์— ๋”ฐ๋ฅธ ์ง‘์ค‘์  ์ž์› ์šด์˜์€ ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๋ฐฉ์‹(Real-Time System Scheduling)

  • Static Sheduling : ์‹œ์Šคํ…œ์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ์ž‘์—… ์ง‘ํ•ฉ์ด ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
    Ex) Rate Monotonic(RM) Algorithm : ๋Œ€ํ‘œ์ ์ธ ์ •์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ, ์ž‘์—… ์ฃผ๊ธฐ๊ฐ€ ์งง์„์ˆ˜๋ก ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.
  • Dynamic Scheduling : ์ž‘์—…์˜ ๋ฐœ์ƒ ์‹œ๊ฐ„์ด๋‚˜ ํŠน์„ฑ์„ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋ฉฐ, ๋ณด์žฅ๋œ ์ฃผ๊ธฐ์˜ ์‹œ๊ฐ„ ๋‚ด์— ์„œ๋น„์Šค๋ฅผ ๋ณด์žฅํ•œ๋‹ค.
    Ex) Earliest-Deadline First(EDF) Algorithm : ๋Œ€ํ‘œ์ ์ธ ๋™์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ, ์ž„๊ณ„ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๊ทผ์ ‘ํ•œ ํƒœ์Šคํฌ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

3. Multiple Processor scheduling

ํ”„๋กœ์„ธ์„œ๋“ค(CPU)์˜ ํ˜•ํƒœ๊ฐ€ ๋™์ผํ•œ ๋™์งˆ ์‹œ์Šคํ…œ ๋˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ด์งˆ ์‹œ์Šคํ…œ์ด ์กด์žฌํ•œ๋‹ค.

 

์ด์งˆ ์‹œ์Šคํ…œ

  • ๊ฐ ํ”„๋กœ์„ธ์„œ๋Š” ์ž์‹ ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ Ready Queue๊ฐ€ ๊ฐ๊ฐ ์žˆ์œผ๋ฉฐ ์ž์‹ ๋งŒ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

๋™์งˆ ์‹œ์Šคํ…œ

  • ํ”„๋กœ์„ธ์„œ(CPU)๋“ค์ด ๋™์งˆ์ผ ๊ฒฝ์šฐ load balancing(๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ)์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋™์งˆ ์‹œ์Šคํ…œ์—์„œ์˜ ๋‘ ๊ฐ€์ง€ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹
    • ๊ฐ ํ”„๋กœ์„ธ์„œ(CPU)๊ฐ€ ์Šค์Šค๋กœ ์Šค์ผ€์ค„๋งํ•˜๋ฉฐ, ๊ณต๋™ ์ค€๋น„ ํ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.
    • ํ•œ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋กœ์„œ ์ง€์ •๋˜์–ด master slave structure(์ฃผ์ข… ๊ตฌ์กฐ)๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

*์ด์งˆ : CPU๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ

*๋™์งˆ : ํ•˜๋‚˜์˜ Queue์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ฒƒ

4. First Come First Served(FCFS) scheduling

  • non preemptive ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ค€๋น„ ์ƒํƒœ์˜ ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ์— ๋”ฐ๋ผ CPU๋ฅผ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค.
  • ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋น„ํ•ด ์ž‘์—… ์™„๋ฃŒ์‹œ๊ฐ„์„ ์˜ˆ์ธกํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜์ง€๋งŒ, ํŠน์ • ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•˜์—ฌ ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„ ๋ณด์žฅ์ด ์•ˆ ๋œ๋‹ค.
  • ๊ธด ์ž‘์—…์ด๋‚˜ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ž‘์—…์ด ์งง์€ ์ž‘์—…์ด๋‚˜ ์ค‘์š”ํ•œ ์ž‘์—…์„ ์˜ค๋žซ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • convoy effect(ํ˜ธ์œ„ ํšจ๊ณผ) : ๋จผ์ € ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ๋ฉด, ๊ทธ ๋‹ค์Œ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒซ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋˜๋Š” ํ˜„์ƒ

  • *ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ *ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„์„ Gantt chart(๊ฐ„ํŠธ ์ฐจํŠธ)๋ฅผ ์ด์šฉํ•ด ์„ฑ๋Šฅ ํ‰๊ฐ€๋ฅผ ํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

*ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ : ํ์—์„œ๋ถ€ํ„ฐ CPU๋กœ ๋ฐ›๊ธฐ ์ง์ „์˜ ์‹œ๊ฐ„, CPU๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„

*ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„์ „ํžˆ ๋๋‚˜๋Š” ์‹œ๊ฐ„

5. Shortest Job First(SJF) scheduling

  • non preemptive ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„์„ ์  ์Šค์ผ€์ค„๋ง์ด๋‹ค.
  • FCFS๋ฅผ ๋ณด์™„ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด๋‹ค ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ๋ฌธ์ œ์ ์€ ์ˆ˜ํ–‰๋  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ธด ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ ์ด ์ •๋ณด๋ฅผ ์–ป๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด์— ์˜์กดํ•˜๊ณ , ๋ถ€์ •ํ™•ํ•œ ์ •๋ณด๋‚˜ ๊ฑฐ์ง“ ์ •๋ณด์˜ ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค.

6. Shortest Remaining Time(SRT) scheduling

  • preemptive ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , SJF๋ฐฉ๋ฒ•์— ์„ ์  ๋ฐฉ์‹์„ ๋„์ž…ํ•œ ๊ฒƒ์ด๋‹ค.
  • ์ƒˆ๋กœ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๊ฐ€์žฅ ์งง์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ผ๋„ ๋‚จ์€ ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๋” ์งง๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ์— ๋“ค์–ด์˜ค๋ฉด ์–ธ์ œ๋ผ๋„ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ ์ ๋œ๋‹ค.
    • ์ˆ˜ํ–‰์ค‘์ธ ๊ฐ๊ฐ์˜ ์ž‘์—…๋“ค์— ๋Œ€ํ•œ ์‹คํ–‰์‹œ๊ฐ„์„ ์ถ”์  ๋ณด์œ ํ•ด์•ผ ํ•œ๋‹ค.(overhead)
  • SRT๋Š” ๋„์ฐฉ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ.

๊ณ„์‚ฐํ•  ๋•Œ ๋ณต์žกํ•˜๋ฏ€๋กœ ํ‘œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ํ‰๊ท  ๋ฐ˜ํ™˜์‹œ๊ฐ„์„ ๊ตฌํ•œ๋‹ค.

7. Round-Robin scheduling

  • preemptive ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์œ„ํ•˜์—ฌ ๊ณ ์•ˆ๋œ ์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ฐ™์€ ํฌ๊ธฐ์˜ CPU ์‹œ๊ฐ„์„ ํ• ๋‹น ๋ฐ›์œผ๋ฉฐ, ํ• ๋‹น ์‹œ๊ฐ„ ๋‚ด์— ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•˜๋ฉด ์ค€๋น„ ํ์˜ ๊ฐ€์žฅ ๋’ค๋กœ ๋ณด๋‚ด์ง„๋‹ค.
    • CPU time quantum(ํ• ๋‹น ์‹œ๊ฐ„)์˜ ํฌ๊ธฐ๋Š” ๋ณดํ†ต 10์—์„œ 100ms ์‚ฌ์ด๋‹ค.

  • ํ• ๋‹น ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ : FCFS ๋ฐฉ์‹๊ณผ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค. (ํ•œ๋ฒˆ์˜ CPU ํ• ๋‹น์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.)
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์ž‘์€ ๊ฒฝ์šฐ : context switching์„ ์œ„ํ•œ overhead๊ฐ€ ํฌ๊ฒŒ ๋ฐœ์ƒํ•˜๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์ด CPU๋ฅผ ํ• ๋‹นํ•˜๋Š”๋ฐ ์†Œ๋ชจ๋œ๋‹ค.

  • CPU ํ• ๋‹น์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ๋ฌธ๋งฅ ๊ตํ™˜ (Context Switching) ํšŸ์ˆ˜
    • CPU ํ• ๋‹น์‹œ๊ฐ„์ด ๊ฐ๊ฐ 11ms, 8ms, 2ms๋กœ ๊ฒฐ์ •๋˜๋Š” ๊ฒฝ์šฐ

8. Multilevel Queue scheduling

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

9. Multilevel Feedback Queue scheduling

  • preemptive๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋“ค์€ CPU์˜ ์‚ฌ์šฉ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์ž…์ถœ๋ ฅ ์œ„์ฃผ์™€ CPU์œ„์ฃผ ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ CPU ํ• ๋‹น์‹œ๊ฐ„์„ ๋ถ€์—ฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋Š” Queueing network์˜ ๋‹จ๊ณ„1ํ์— ์ถ”๊ฐ€๋˜์–ด, ๊ทธ ํ”„๋กœ์„ธ๋Š” FCFS์— ์˜ํ•˜์—ฌ CPU๋ฅผ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค.(๋†’์€ ์šฐ์„  ์ˆœ์œ„ ๋ฐฐ์ •)
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ํ• ๋‹น๋œ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ž…์ถœ๋ ฅ ๋“ฑ์œผ๋กœ ์ธํ•˜์—ฌ CPU๋ฅผ ์–‘๋„ํ•œ๋‹ค๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ๋‹ค์Œ ํ•˜์œ„ ๋‹จ๊ณ„์˜ ํ๋กœ ์ด๋™๋˜์–ด ์ˆœ์„œ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์˜ ํ์—์„œ๋Š” ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ round-robin ๋ฐฉ์‹์œผ๋กœ ์Šค์ผ€์ค„๋ง ๋œ๋‹ค.

์Šค์ผ€์ค„๋ง ๊ธฐ์ค€

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


10. High Response ratio Next(HRN) scheduling

  • non preemptive๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , ์ผ๋‹จ ํ•œ ์ž‘์—…์ด CPU๋ฅผ ์ฐจ์ง€ํ•˜๋ฉด ๊ทธ ์ž‘์—…์€ ์™„์„ฑ๋  ๋•Œ ๊นŒ์ง€ ์‹คํ–‰๋œ๋‹ค.
  • SJF ์Šค์ผ€์ค„๋ง์˜ ๋ฌธ์ œ์ ์ธ ๊ธด ์ž‘์—…๊ณผ ์งง์€ ์ž‘์—…๊ฐ„์˜ ์ง€๋‚˜์นœ ๋ถˆํ‰๋“ฑ์„ ๋ณด์™„ํ•œ ๊ธฐ๋ฒ•์œผ๋กœ, ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐ์‹์—์„œ ์‹œ์Šคํ…œ ์‘๋‹ต์‹œ๊ฐ„์ด ํด์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ง„๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„(์‹œ์Šคํ…œ ์‘๋‹ต์‹œ๊ฐ„) = (๋Œ€๊ธฐ์‹œ๊ฐ„ + ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„) / ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„
  • ์งง์€ ์ž‘์—…์ด๋‚˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํฐ ์ž‘์—…์ผ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ง„๋‹ค.
  • Aging์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

Thread

ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ์˜ ๊ด€๊ณ„

Thread ํŠน์ง•

  • ๊ฐ ์“ฐ๋ ˆ๋“œ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค
  • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์“ฐ๋ ˆ๋“œ๋“ค์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค์˜ ์ž์›๋“ค์„ ๊ณต์œ ํ•˜์ง€๋งŒ, ๊ทธ ์ž์‹ ์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๊ณผ ์Šคํƒ, ๋ ˆ์ง€์Šคํ„ฐ๋“ค์ด ํ• ๋‹น๋œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ „ํ™˜ ์†๋„๋ณด๋‹ค ์“ฐ๋ ˆ๋“œ ๊ฐ„์˜ ์ „ํ™˜ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.
  • ์“ฐ๋ ˆ๋“œ์˜ ์‹คํ–‰/์ข…๋ฃŒ ์ˆœ์„œ๋Š” ์˜ˆ์ธก ํ•  ์ˆ˜ ์—†๋‹ค.(๋‘ ๊ฐœ ์ด์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์‹œ ๋ฌธ์ œ ๋ฐœ์ƒ ์œ„ํ—˜)
  • ์“ฐ๋ ˆ๋“œ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ด์ง€๋งŒ, ํ•œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ทจํ•œ ํ–‰๋™์€ ํ”„๋กœ์„ธ์Šค์— ์žˆ๋Š” ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 

 

 

728x90