๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/์šด์˜์ฒด์ œ

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

by joaa 2024. 2. 12.

๐ŸŽˆ CPU scheduler vs Dispatcher

CPU scheduler: ready queue์—์„œ ๋‹ค์Œ์œผ๋กœ ์‹คํ–‰๋  ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ์—ญํ• 

Dispatcher: context switching, ์ปค๋„ ๋ชจ๋“œ <-> ์œ ์ € ๋ชจ๋“œ ์ „ํ™˜, ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜๋กœ ์ด๋™ ๋“ฑ ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋กํ•˜๋Š” ์—ญํ• ์„ ํ•จ. 

์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ์—ญํ• .

 

 

๐ŸŽˆ ์Šค์ผ€์ค„๋ง์˜ ์„ ์  ๋ฐฉ์‹

Nonpreemptive vs Preemptive scheduling

 

Nonpreemptive(๋น„์„ ์ ) Scheduling

: running -> terminated, running -> waiting, ์ž๋ฐœ์  running -> ready ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ OS๊ฐ€ ๊ฐœ์ž…ํ•ด์„œ ์Šค์ผ€์ค„๋งํ•˜๋Š” ๋ฐฉ์‹. 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ running ์ƒํƒœ์—์„œ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ์—๋งŒ OS๊ฐ€ ๊ฐœ์ž…ํ•˜๋Š” ๋ฐฉ์‹.

์‹ ์‚ฌ์ , ํ˜‘๋ ฅ์ (cooperative), ๋А๋ฆฐ ์‘๋‹ต์„ฑ

 

Preemtive Scheduling

: nonpreemptive๊ฐ€ ํ•˜๋Š” ์ผ + ๋น„์ž๋ฐœ์  running -> ready, ready ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ running ์ƒํƒœ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ์—๋„ OS๊ฐ€ ๊ฐœ์ž…ํ•˜๋Š” ๋ฐฉ์‹.

์ ๊ทน์ , ๊ฐ•์ œ์ , ๋น ๋ฅธ ์‘๋‹ต์„ฑ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฌธ์ œ

 

 

๐ŸŽˆ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

FCFS(first-come, first out)

: ๋จผ์ € ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ

SJF(shortest-job-first)

: ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ CPU burst๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰

SRTF(shortest-remaining-time-first)

: ๋‚จ์€ CPU burst๊ฐ€ ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰

Priority

: ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰

RR(round-robin)

: time slice๋กœ ๋‚˜๋ˆ ์ง„ CPU time์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰

Multilevel queue

: ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ทธ๋ฃนํ™”ํ•ด์„œ ๊ทธ๋ฃน๋งˆ๋‹ค ํ๋ฅผ ๋‘๋Š” ๋ฐฉ์‹