CS

[OS] CPU Scheduling

rkawk 2024. 9. 29. 20:55

 

Preemptive and Nonpreemptive Scheduling

CPU-scheduling์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ์ผ์–ด๋‚œ๋‹ค.

1. I/O request๋‚˜ wait()์— ์˜ํ•œ running state -> waiting state

2. Interrupt์— ์˜ํ•œ running state -> ready state

3. completion of I/O ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์˜ํ•œ waiting state -> ready state

4. ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ์‹œ.

 

1, 4์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„์„œ core์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ 2, 3๋ฒˆ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ์„์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

1, 4์˜ ๊ฒฝ์šฐ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”, ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ์‹œ์™€ waiting state๋กœ ๋ณ€ํ•  ๊ฒฝ์šฐ์— core์— ๋‹ค๋ฅธ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹์€ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง ์ด๋ผ ํ•œ๋‹ค.

2, 3๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ core์— ๋„ฃ์–ด์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง ์ด๋ผ ํ•œ๋‹ค.

 

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ์ปค๋„์˜ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ, multiprocess, real-time ๊ตฌํ˜„ ์‹œ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ ๊ณต์œ ์ž์›์— ๋”ฐ๋ฅธ race condition์„ ๋ง‰๋Š”๊ฒƒ์— ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•œ๋‹ค.

 

Dispatcher

CPU scheduler์— ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์— core์˜ ์ œ์–ด๊ถŒ์„ ์ฃผ๋Š” ์š”์†Œ์ด๋‹ค.

PCB๋ฅผ ์ ์žฌํ•˜๊ณ , Context Switch๋ฅผ ์œ ๋ฐœํ•˜๋ฏ€๋กœ ์ตœ๋Œ€ํ•œ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

 

Scheduling Algorithm

FCFS(first come, first serve)

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•.

pros - ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

cons - ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค. I/O bound, CPU bound process๋ฅผ ๊ตฌ๋ณ„ํ•ด์„œ ์Šค์ผ€์ค„๋ง ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

Shortest-Job-First Scheduling

waiting time์˜ ๊ฐœ๋…์—์„œ ์ตœ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์„ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ธฐํ•˜๊ธ‰์ˆ˜ํ‰๊ท ์œผ๋กœ ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค.

 

์„ ์ /๋น„์„ ์  ๋‘˜๋‹ค ๊ฐ€๋Šฅํ•œ๋ฐ, process ๋„์ฐฉ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ burst time์ด ์ ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ core๋ฅผ ์„ ์ ํ•˜๋„๋ก ํ•˜๋ฉด ์„ ์  ์Šค์ผ€์ค„๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Round Robin

FCFS๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ ์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, Time quantum์ด๋ผ๋Š” ์‹œ๋ถ„ํ•  ๋‹จ์œ„๋ฅผ ์ •ํ•ด ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŠน์ • ์‹œ๋ถ„ํ•  ๋‹จ์œ„๋งŒํผ core์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ๋ถ„ํ•  ๋‹จ์œ„๋งŒํผ core์— ํ• ๋‹น๋˜์—ˆ๋‹ค๋ฉด, ready queue์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์‹œ ๋ณด๋‚ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

์‹œ๋ถ„ํ•  ๋‹จ์œ„๋Š” Context Switch time์— ๋”ฐ๋ผ์„œ ์ •ํ•ด์ ธ์•ผ ํ•œ๋‹ค.

 

Priority Scheduling

SJF๊ฐ€ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ์ผ์ข…์ด๋‹ค.

๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์„œ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.

 

Starvation, indefinite block์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Starvation - ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ๋Œ€๊ธฐํ•˜๋Š” ํ˜„์ƒ.

indefinite block - ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ blocking ๋˜์–ด CPU๊ฐ€ ๊ณ„์† ๋Œ€๊ธฐํ•˜๋Š” ์ƒํ™ฉ.

 

Aging์„ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜๋ฉด ์ด ๋‘๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ ์ /๋น„์„ ์  ๋‘˜๋‹ค ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Multilevel Queue Scheduling

PS + RR๋กœ ์ข‹๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒ๊ธฐ์— ์„œ์ˆ ํ•œ PS, RR ์ „๋ถ€ ๋‹จ์ผ ํ๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ, ๋‹จ์ผ ์„ ํ˜• ํ๋ผ๋Š” ๊ฐ€์ •์—์„œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ O(N), N = queue size๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค.

์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ฅธ ์—ฌ๋Ÿฌ๊ฐœ์˜ Queue๋ฅผ ๋‘๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์€ RR๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋” ํ™•์žฅํ•ด์„œ ํ”„๋กœ์„ธ์Šค์˜ ๋‹จ์œ„์— ๋”ฐ๋ผ์„œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

Foreground Process(interactive process)๋Š” RR, Background Process(batch Process)๋Š” FCFS๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋“ฑ์˜ ์šฐ์„ ์ˆœ์œ„ ๋ณ„ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์„ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„œ ์Šค์ผ€์ค„๋ง์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Multilevel Feedback Queue Scheduling

MQS๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ Starvation์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

์ด๋Š” ๋ฌด์กฐ๊ฑด Queue๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด์žˆ๋‹ค๋Š” ๊ด€์ ์—์„œ ๋‚˜์˜จ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ๊ฐ์˜ Queue๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ด€์ ์—์„œ MFQS๊ฐ€ ๋‚˜์™”๋‹ค.

 

ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ CPU burst time์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด, ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ธ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.

 

MFQS๋Š” ์Šค์ผ€์ค„๋ง ๊ตฌํ˜„์—

1. ํ์˜ ๊ฐœ์ˆ˜

2. ๊ฐ๊ฐ์˜ ํ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

3. ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ธฐ์ค€

4. ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚ด๋ฆฌ๋Š” ๊ธฐ์ค€

5. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋น„์Šค ๋˜๊ณ  ์‹ถ์„๋•Œ, ์–ด๋–ค ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐˆ์ง€ ์„ค์ •ํ•˜๋Š” ๊ธฐ์ค€

 

์ด 5๊ฐœ ์š”์†Œ๊ฐ€ ์ „๋ถ€ ๊ณ ๋ ค๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

 

 

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[OS] Threads, Concurrency  (2) 2024.09.15
[OS] Processes  (0) 2024.09.14
[DB] Index  (0) 2024.03.24