OS - CPU Scheduling 2

๋ฏผ์ฐฌํ™ยท2023๋…„ 10์›” 13์ผ
0

CS - OS(์šด์˜์ฒด์ œ)

๋ชฉ๋ก ๋ณด๊ธฐ
5/6

๐Ÿš€ OS - CPU Scheduling 1์—์„œ ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฐœ๋…์—์„œ๋Š” ready queue์— ํ•œ์ค„๋กœ ์ค„์„ ์„ฐ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ค„์„ ์—ฌ๋Ÿฌ์ค„ ์„œ๋Š” ๊ฐœ๋…์ด ๋’ค์— ๋‚˜์˜ค๋Š” ๊ฐœ๋…์ด๋‹ค.

๐Ÿงฉ Multilevel Queue

๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๋งจ ์œ„๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ค„์ด๊ณ , ๋งจ ์•„๋ž˜๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ค„์ด๋‹ค. CPU๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ณณ๋ถ€ํ„ฐ ๋ฌด์กฐ๊ฑด ํ• ๋‹นํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ณณ์— ๋Œ€๊ธฐ๊ฐ€ ์—†์„ ๋•Œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ๋Œ€๊ธฐ ์ค„์€ ์—ฌ๋Ÿฌ๊ฐœ์ธ๋ฐ CPU๋Š” ํ•˜๋‚˜์ด๋‹ˆ ๊ณ ๋ คํ•  ์‚ฌํ•ญ๋“ค์ด ์žˆ๋‹ค.

  • Ready queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• 
    • foreground(interactive)
    • background(batch - no human interaction)
  • ๊ฐ ํ ์‚ฌ์ด์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๊ฐ ํ๋Š” ๋…๋ฆฝ์ ์€ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง
    • foreground - RR
    • background - FCFS
  • ํ์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”
    • Fixed priority scheduling(์šฐ์„ ์ˆœ์œ„ ๊ฐ•ํ•˜๊ฒŒ ์ ์šฉ)
      • ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ์ค„์ด ๋น„์–ด์žˆ์„ ๋•Œ๋งŒ ๋‚ฎ์€ ๊ณณ์— CPU๊ฐ€ ๊ฐ„๋‹ค.
      • Starvation ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ
    • Time slice
      • ๊ฐ ํ์— CPU time์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹น
      • ex) 80% to foreground in RR, 20% to background in FCFS

์œ„์— ๋ฐฉ์‹์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์€ ๊ณ„์† ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€์ฑ„๋กœ ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด์ œ ์•„๋ž˜์˜ Multilevel Feedback Queue๋Š” ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์ด ๊ฐœ์„ ๋œ๋‹ค.

๐Ÿงฉ Multilevel Feedback Queue

  • Multilevel Queue์™€ ๋น„์Šทํ•˜์ง€๋งŒ, MFQ๋Š” ๊ฐ ํ ๊ฐ„์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Aging ์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Multilevel Feedback Queue Scheduler๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค
    • Queue์˜ ์ˆ˜
    • ๊ฐ ํ์˜ Scheduling algorithm
    • Process๋ฅผ ์ƒ์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€
    • Process๋ฅผ ํ•˜์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›์œผ๋ ค ํ•  ๋•Œ ๋“ค์–ด๊ฐˆ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€

๋ณดํ†ต Multilevel Feedback Queue๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์šด์˜ํ•˜๋ƒ๊ณ  ํ•˜๋ฉด ์ฒ˜์Œ ๋“ค์–ด์˜ค๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ์— ์ง‘์–ด๋„ฃ๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ณณ์€ RR์—์„œ ํ• ๋‹น์‹œ๊ฐ„์„ ๊ต‰์žฅํžˆ ์งง๊ฒŒ ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ‘์— ํ๋กœ ๊ฐˆ์ˆ˜๋ก ํ• ๋‹น์‹œ๊ฐ„์„ ์กฐ๊ธˆ ๋” ๊ธธ๊ฒŒ ์ฃผ๊ณ , ์ œ์ผ ์•„๋ž˜ ํ๋Š” FCFS๋ฐฉ์‹์„ ์“ด๋‹ค.

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


์ด์ œ ์ง€๊ธˆ๊นŒ์ง€ ๋งํ•œ ๊ฒƒ๋“ค์€ ๋‹ค ๋ชจ๋‘ CPU๊ฐ€ ํ•˜๋‚˜์ผ๋•Œ์˜ ์ผ๋ฐ˜ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ–ˆ๋‹ค. ์ด์ œ๋ถ€ํ„ฐ ๋งํ•  ๊ฒƒ๋“ค์€ ํŠน์ดํ•œ ์ผ€์ด์Šค๋“ค์—์„œ์˜ CPU Scheduling์„ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

๐Ÿงฉ Multiple-Processor Scheduling

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

๐Ÿงฉ Real-Time Scheduling

Deadline์ด ์žˆ๋Š” ์Šค์ผ€์ค„๋ง

  • Hard real-time systems
    • Hard real-time task๋Š” ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ๋๋‚ด๋„๋ก ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•จ
  • Soft real-time computing
    • Soft real-time task๋Š” ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ๋†’์€ priority๋ฅผ ๊ฐ–๋„๋ก ํ•ด์•ผ ํ•จ

๐Ÿงฉ Thread Scheduling

  • Local Scheduling
    • User level thread์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ thread library์— ์˜ํ•ด ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •
    • ์šด์˜์ฒด์ œ๋Š” thread์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ธฐ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ CPUํ• ๋‹น์„ ๊ฒฐ์ •
  • Global Scheduling
    • Kernel level thread์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ปค๋„์˜ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •
    • ์šด์˜์ฒด์ œ๊ฐ€ ๊ฒฐ์ •

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


์ง€๊ธˆ๊นŒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ์•Œ์•„๋ดค์œผ๋‹ˆ ์ด๊ฒƒ๋“ค์— ๋Œ€ํ•œ ํ‰๊ฐ€๋ฅผ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

๐Ÿงฉ Alrorithm Evaluation

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

0๊ฐœ์˜ ๋Œ“๊ธ€