๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸง Operating System

[OS / ์šด์˜ ์ฒด์ œ] Priority Scheduling, Round Robin Scheduling, Multilevel Queue Scheduling, Multilevel FeedBack-Queue Scheduling, Multi Processor Scheduling, Processor Affinity

by UKHYUN22 2022. 4. 25.
728x90

 

Priority Scheduling

ํ”„๋กœ์„ธ์Šค ๋ณ„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‹ค ๋‹ค๋ฅด๋‹ค. System call์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’๊ฒŒ ์ค˜์•ผ ํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ๊ฒƒ ๋จผ์ € ์‹คํ–‰ํ•˜์ž๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. P1 - P5๊นŒ์ง€ ์žˆ๊ณ  Burst Time์ด ์žˆ๋‹ค. Burst Time์€ CPU ์˜ ํ•˜๋‚˜์˜ ๊ธธ์ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํ”„๋กœ์„ธ์Šค ๋ณ„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ๋‹ค. Priority ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์„ ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด๋‹ค. 1๋ฒˆ์ด ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์ด๊ณ  5๋ฒˆ์ด ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์ด๋‹ค. ๋™์‹œ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด P2๊ฐ€ ์ œ์ผ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค. (๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด ๋จผ์ € ์‹คํ–‰๋จ). 1ms ๋งŒํผ ๋Œ๊ฒŒ ๋˜๊ณ  ๊ทธ ๋‹ค์Œ์œผ๋กœ P5๊ฐ€ 5ms ๋งŒํผ ๋Œ๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค. 

 

 

Prority Scheduling

External ์™ธ๋ถ€์—์„œ ์ฃผ๋Š” ๊ฒฝ์šฐ.

์–ด๋Š ์ •๋„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋œ๋‹ค๊ณ  ์ง€์ •์„ ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

Internal ์—์„œ ์ฃผ๋Š” ๊ฒฝ์šฐ

External์—์„œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๋”๋ผ๋„ ๋‚ด๋ถ€์—์„œ ์ƒ๋Œ€์ ์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 

IO Bound Process์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๊ฒŒ ์ธก์ •๋œ๋‹ค. Vi์™€ Compiler๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ. Vi๊ฐ€ ๋”œ๋ ˆ์ด๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. IO Bound Process๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์•ผ ํ•œ๋‹ค. ์™œ๋‚˜ํ•˜๋ฉด Userํ•˜๊ณ  Interactํ•˜๋Š” Process์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ค˜์•ผ ํ•œ๋‹ค. Compiler๊ฐ€ 2์ดˆ ๊ฑธ๋ฆด ๊ฒƒ์„ 3์ดˆ ๊ฑธ๋ ธ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒด๊ฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— IO Bound Process์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. 
IO Bound Process๋Š” Time quantum์„ ๋‹ค ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‚˜ํ•œํ…Œ ์ฃผ์–ด์ง„ Time quantum์„ ๋‹ค ์‚ฌ์šฉํ•˜๋ฉด CPU Bound Process์ผ ํ™•๋ฅ ์ด ๋†’๋‹ค. (*****) ์ด๋Ÿฐ ๊ฒฝ์šฐ Internal ํ•˜๊ฒŒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

์ค‘๊ฐ„์— Interceptive๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉด Preemtive์ด๊ณ  ๋ฐ›์„ ์ˆ˜ ์—†์œผ๋ฉด Nonpreemtive๋ผ๊ณ  ํ‘œํ˜„์„ ํ•œ๋‹ค. Waiting Queue์—์„œ ๋“ค์–ด์˜จ ๊ฒƒ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ๊ฒฝ์šฐ CPU Scheduling์„ ํ•œ๋‹ค๋ฉด Preemtive Schedule์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•ด์„œ ๊ตถ์–ด์ฃฝ์„ ์ˆ˜ ๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋‹ค๋ฆด ๋•Œ๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ค˜์„œ ์‹คํ–‰์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ Aging์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

 

Round Robin Scheduling

ํ™”์‚ดํ‘œ์˜ ๊ธธ์ด๋ฅผ Time slice, Time Quantum์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ผ์ •์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ฐ•์ œ๋กœ Switching์„ ํ•ด๋ฒ„๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์˜๋ฏธํ•œ๋‹ค. FCFS์˜ preemtiveํ•œ ๋ฐฉ์‹์„ Round Robin ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค. 

 

 

Round Robin Scheduling

Time quantum = 4์ธ ๊ฒฝ์šฐ P1์ด ๋Œ๋•Œ 4ms ๋งŒํผ ๋Œ๊ณ  P2๋กœ ๋Œ์•„๊ฐ„๋‹ค.

 

 

Round Robin Scheduling

Time quantum์„ 12๋กœ ์žก์œผ๋ฉด Context Switching์ด ๊ฒŒ ๋œ๋‹ค. 1๋กœ ์žก๊ฒŒ ๋˜๋ฉด ๋ฌด๋ ค 9๋ฒˆ์ด๋‚˜ ๋ฐ”๊พธ๋ฉด 1ms๋งˆ๋‹ค Switchingํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ Switching์„ ๋งŽ์ด ํ•  ์ˆ˜๋ก CPU๋ฅผ ๋งŽ์ด ์žก์•„๋จน๊ฒŒ ๋œ๋‹ค. Time quantum์— ๋”ฐ๋ผ์„œ Behavior๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. Time quantum์ด ์•„์ฃผ ๊ธธ์–ด์ง€๋ฉด FCFS์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. ์ž‘์•„๋„ ์•ˆ์ข‹๊ณ  ์ปค๋„ ์ข‹์ง€ ์•Š๋‹ค. 

 

 

Round Robin Scheduling

Turnaround

80%์ด๋ผ๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. IO Bound Process

 

 

Multilevel Queue Scheduling

์šฐ์„ ์ˆœ์œ„๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์ง€์ผœ์ฃผ๊ธฐ ์œ„ํ•ด์„œ Queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ Queue์—์„œ ํ›„๋ณด๊ฐ€ ํ•˜๋‚˜์”ฉ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ฐ๊ฐ ๋‚˜์˜จ ๋Œ€ํ‘œ Queue ์ค‘ ๋ˆ„๊ตฌ๋ฅผ ๋„ฃ์„์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

 

Multilevel Queue Scheduling

์ตœ์ข…์ ์œผ๋กœ ๋ˆ„๊ตฌ๋ฅผ ํƒํ•  ๊ฒƒ์ธ๊ฐ€. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ ๋ฐฉ์‹์ด Fixed Priority Preemtive schduling์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ Queue๊ฐ€ 2๊ฐœ๋ฐ–์— ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. foreground์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ background queue๋ณด๋‹ค ๋†’๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด ์ž๊ธฐ๋ณด๋‹ค ์œ„์ชฝ์— Process๊ฐ€ ์žˆ์–ด๋„ 20%๋ผ๋Š” ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ Process๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

 

 

Multilevel FeedBack-Queue Scheduling

CPU Bound Process๋Š” Interactive ํ•˜์ง€ ์•Š๋‹ค. 

 

 

Multilevel FeedBack-Queue Scheduling

๊ต‰์žฅํžˆ ๋งŽ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋””์ž์ธ์ด ์กด์žฌํ•œ๋‹ค. ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๋Š” ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ FeedBack Queue์ž„์„ ์˜๋ฏธํ•œ๋‹ค. Process์˜ ์‹œ์ž‘์€ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘์„ ํ•œ๋‹ค. Time quantum ์ด ์งง๋‹ค๋Š” ๊ฒƒ์€ IO Bound Process์ด๊ณ  Interactiveํ•œ Process๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 8+24 ms ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ 8ms๋กœ ๋Œ์•„์˜ค๊ฒŒ ๋œ๋‹ค. Burst๊ฐ€ ๊ธธ๋‹ค๋Š” ๊ฒƒ์€ CPU Bound Process๋ผ๋Š” ๊ฒƒ์ด๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถฐ๋„ ์ข‹๋‹ค๋ผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

Multiple process scheduling

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ์œผ๋ฉด scheduling ์ž…์žฅ์—์„œ ๋ณต์žกํ•ด์ง„๋‹ค.

 

 

Symmetric vs Asymmetric 

Symmetric๊ณผ Asymmetric์„ ๋‚˜๋ˆ„๋Š” ๊ฒฝ๊ณ„๋Š” Master Slave ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ์ง€์˜ ์œ ๋ฌด์ด๋‹ค. ์ด ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด Asymmetric์ด๊ณ  ๋™์ผํ•˜๋‹ค๋ฉด Symmetric์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

 

Multi Processor Scheduling

์š”์ฆ˜ ์šด์˜์ฒด์ œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU๋ฅผ ๋‘๊ณ  CPU ๋งˆ๋‹ค Ready Queue๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋„๋ก ์„ค๊ณ„๋ฅผ ํ•œ๋‹ค.

 

 

Processor Affinity

์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œ์ผฐ๋Š”๋ฐ 2๋ฒˆ CPU์—์„œ ๋Œ๊ณ  ์žˆ๋‹ค. Time quantum์„ ๋Œ๊ณ  ๋‹ค์‹œ ๋Œ์•„์™”๋‹ค. ๊ธฐ์กด์— 2๋ฒˆ์— ๋Œ๊ณ  ์žˆ๋Š” CPU๊ฐ€ ์žˆ๋Š”๋ฐ 2๋ฒˆ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊นŒ 1,3๋ฒˆ์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค. "๋ˆ„๊ฐ€ ํ•˜๋˜ ์ผ์ด ์žˆ๋Š”๋ฐ ์ „์— ํ•˜๋˜ ์‚ฌ๋žŒํ•œํ…Œ ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด์ „์— ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋˜ ๋ญ”๊ฐ€๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ!!" ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ Cache Contents์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์™€ CPU์˜ ์†๋„์ฐจ์ด๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ๋ฐ ์ด๋ฅผ ๋ณด์™„ํ•ด์ค€๋‹ค. 2๋ฒˆ CPU Cache์— ๊ด€๋ จ ๋‚ด์šฉ์ด ์ด๋ฏธ ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์›๋ž˜ ๋Œ๋˜ ์นœ๊ตฌํ•œํ…Œ ์ฃผ๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค๋Š” ๊ฒƒ์ด Affinity๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

1. Soft Affinity

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์—์„œ ๋Œ๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋ผ๊ณ  ํ•œ๋‹ค.

2. Hard Affinity

๋ฌด์กฐ๊ฑด ๋Œ๋˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋„๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

Processor Affinity

NUMA, CPU๋งˆ๋‹ค ๊ฐ๊ฐ ๋กœ์ปฌ Memory๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•œ CPU์—์„œ ์ž˜ ๋Œ๋˜ Process๋ฅผ ๋‹ค๋ฅธ CPU๋กœ ์˜ฎ๊ธฐ๊ฒŒ ๋˜๋ฉด ์ž‘์—…์ด ๊ต‰์žฅํžˆ ๋Š๋ ค์ง„๋‹ค. 

 

 

Load Balancing

๋ฐ”์œ ๋ฐ ์žˆ์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ Load Balancing์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค๋“ค ๊ณตํ‰ํ•˜๊ฒŒ CPU Time์„ ๋ฐ›์•˜์œผ๋ฉด ์ข‹๊ฒŸ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Push๊ฐ€ ์žˆ๊ณ  Pull์ด ์žˆ๋‹ค. ๋„๋„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ€์–ด์ฃผ๋Š” ๊ฒƒ์„ Push migration์ด๋ผ๊ณ  ํ•œ๋‹ค. Pull migration์€ ์ข€ ๋” ์ž๋ฐœ์ ์ธ ๊ฒƒ์ด๋‹ค. ์–‘์‹ฌ์ด ์žˆ๋Š” CPU๋ผ๋ฉด ๋‚˜๋Š” ํ•œ๊ฐ€ํ•˜๋‹ˆ ๋‚˜ํ•œํ…Œ ๋‹ฌ๋ผ๋Š” ๊ฒƒ์ด Pull migration์ด๋‹ค. ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.