Skip to content

Latest commit

ย 

History

History
133 lines (69 loc) ยท 18.1 KB

Scheduling.md

File metadata and controls

133 lines (69 loc) ยท 18.1 KB

์ด์ „ ํฌ์ŠคํŒ…๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ์ด์ „ ํฌ์ŠคํŒ…์„ ์ฝ๊ณ  ์˜ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์šด์˜์ฒด์ œ์˜ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹๊ณผ Context Switching์— ๋Œ€ํ•œ ๊ธ€์„ ์“ฐ๊ฒ ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ์ฃผ์ œ๋กœ๋Š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ์ •ํ–ˆ๋‹ค.

์Šค์ผ€์ค„๋ง?

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

์Šค์ผ€์ค„(Schedule)์ด๋ผ๋Š” ๋‹จ์–ด์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, ์šด์˜์ฒด์ œ์—์„œ ๋งํ•˜๋Š” ์Šค์ผ€์ค„๋ง์€ ์šด์˜์ฒด์ œ๊ฐ€ CPU์˜ ์ž์›์„ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•ด ์ค„ ์ง€ ๊ทธ ์ผ์ •์„ ์งœ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ Context Switching ๊ณผ์ •์€ ๋งŽ์€ ์ž์› ์†์‹ค์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ผ์ •์„ ์–ด๋–ป๊ฒŒ ์งฐ๋Š”์ง€์— ๋”ฐ๋ผ CPU์˜ ์ž์›์„ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”์ง€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค. ํ•œ ๋งˆ๋””๋กœ ์Šค์ผ€์ค„๋ง์€ ์šด์˜์ฒด์ œ ์ž…์žฅ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

Context Switching

๋ณธ๊ฒฉ์ ์œผ๋กœ ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์ „์— Context Switching์— ๋Œ€ํ•ด ์•Œ๊ณ  ๊ฐ€์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋ฐฉ๊ธˆ์ฒ˜๋Ÿผ ๋‹จ์–ด ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ๊ฐํ•ด๋ณด์ž. Switch๋ผ๋Š” ๋‹จ์–ด์˜ ๋œป์„ ์•ˆ๋‹ค๋ฉด Context๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋ชจ๋ฅธ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ "์ผ๋‹จ ๊ทธ Context๋ผ๋Š” ๊ฒƒ์„ Switching(๊ต์ฒด, ์ „ํ™˜)ํ•˜๋Š” ๊ฒƒ์ด๊ฒ ๊ตฌ๋‚˜" ํ•˜๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ Context๋Š” ๋ญ˜๊นŒ? ํ”ํžˆ๋“ค '๋ฌธ๋งฅ'์ด๋ผ๋Š” ๋‹จ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ์ด๋ ‡๊ฒŒ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ์—์„œ ๋งํ•˜๋Š” Context๋ผ๋Š” ๊ฑด ๋ฌธ๋งฅ ๊ฐ™์€ ๊ฒŒ ์•„๋‹ˆ๊ณ  CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ (ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ) ์ •๋ณด๋ฅผ ๋งํ•œ๋‹ค. ๋” ์ž์„ธํžˆ ๋งํ•˜๋ฉด Context๋Š” ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด, ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Š” ์šด์˜์ฒด์ œ์˜ PCB(Process Control Block)์— ์ €์žฅ๋œ๋‹ค. ์™œ ์ด ๊ธ€ ์“ด ๋…€์„์ด ๋ฌธ๋งฅ์ด๋ผ๊ณ  ์•ˆ ์“ฐ๊ณ  ๊ณ„์† Context๋ผ๊ณ  ๊ท€์ฐฎ๊ฒŒ ์˜์–ด๋กœ ์ผ๋Š”์ง€ ์ด์ œ๋Š” ์ดํ•ด๊ฐ€ ๊ฐˆ ๊ฒƒ์ด๋‹ค.

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

์Šค์ผ€์ค„๋ง ๊ถ๊ธˆํ•ด์„œ ๋“ค์–ด์™”๋”๋‹ˆ ์ง€๊ธˆ๊นŒ์ง€ ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•œ ์„ค๋ช…์€ ํ•˜๋‚˜๋„ ์•ˆ ๋‚˜์˜ค๊ณ  Context Switching ์–˜๊ธฐ๋งŒ ์ค„์ค„์ด ๋‚˜์™€์„œ ๋‹ต๋‹ตํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ž์„œ ๋งํ–ˆ๋“ฏ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹ฌ๋‹ฌ๋‹ฌ ์™ธ์šฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์™œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•œ์ง€ ์•„๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด์ฉ” ์ˆ˜ ์—†์—ˆ๋‹ค.

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

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

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜

Context Switching์„ ํ•  ๋•Œ ์ƒˆ๋กœ ์ž์›์„ ํ• ๋‹นํ•  ํ”„๋กœ์„ธ์Šค๋Š” ๋ˆ„๊ฐ€ ๊ฒฐ์ •ํ• ๊นŒ? ์ž์›์„ ๋‹ฌ๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์—„์ฒญ ๋งŽ์„ ํ…๋ฐ, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ์–ผ๋งŒํผ ์ฃผ์–ด์•ผ ํšจ์œจ์ ์œผ๋กœ ์ผํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์•ž์„œ ๋งํ–ˆ๋“ฏ ์ด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ •์ฑ…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ , Context Switching์„ ํ•  ๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ์ž์›์„ ํ• ๋‹นํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ง€๊ธˆ๋ถ€ํ„ฐ ๊ทธ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

๋น„์„ ์  ์Šค์ผ€์ค„๋ง

๋น„์„ ์  ์Šค์ผ€์ค„๋ง์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.

ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋†“์•„์ฃผ๋Š” ์‹œ์ ๊นŒ์ง€ ์Šค์ผ€์ค„๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ์„ธ์Šค ์ผ๊ด„ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๊ณ  Context Switching์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๋‹ค๋งŒ ๊ธด๊ธ‰ํžˆ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

FCFS (First Come First Service)

ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready Queue์— ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ž‘์—… ์™„๋ฃŒ ์‹œ๊ฐ„์„ ์˜ˆ์ธกํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธธ์ง€๋งŒ ๋œ ์ค‘์š”ํ•œ ์ž‘์—…์ด, CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง๊ณ  ๋” ์ค‘์š”ํ•œ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ํ˜ธ์œ„ ์ƒํƒœ(์ฝ˜๋ณด์ด ์ดํŽ™ํŠธ; Convoy Effect)๋ผ๊ณ  ํ•œ๋‹ค.

SJF (Shortest Job First)

ํ”„๋กœ์„ธ์Šค๋ฅผ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ์ˆœ์„œ๋Œ€๋กœ CPU์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ชจ๋“  ๋ฐฉ์‹์„ ํ†ตํ‹€์–ด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ์งง๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ์ „์ฒด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ํฌ์ƒํ•˜๋ฉฐ ๊ณ„์† Ready Queue์˜ ๋’ค๋กœ ๋ฐ€๋ ค๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ธฐ์•„ ์ƒํƒœ(์Šคํƒ€๋ฒ ์ด์…˜; Starvation)๋ผ๊ณ  ํ•œ๋‹ค.

HRN (Highest Response Ratio Next)

SJF ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์•„ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐฉ์‹์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‹จ์ˆœํžˆ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ณ , Ready Queue์—์„œ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„๊นŒ์ง€ ๊ณ ๋ คํ•˜์—ฌ ๊ฒฐ์ •ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ((๋Œ€๊ธฐ ์‹œ๊ฐ„ + CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„) / CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„)์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋ฒ•์„ ์—์ด์ง•(Aging) ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

HRN ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด ์„ ์ ์ผ ๊ฒฝ์šฐ์—” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋„ˆ๋ฌด ์ž์ฃผ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— Context Switching์ด ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค. ์ด์— ๋”ฐ๋ผ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ผ์ด ๋„ˆ๋ฌด ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— HRN ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์€ ๋น„์„ ์  ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ง€๊ธˆ๊นŒ์ง€์˜ ์„ค๋ช…๋งŒ ์ฝ์–ด๋ดค๋‹ค๋ฉด FCFS ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ํ•˜๋“ฑ์˜ ์ด์œ ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. HRN ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์— ๋น„ํ•ด ์ด์ƒ์ ์œผ๋กœ๋Š” ํ›จ์”ฌ ์šฐ์›”ํ•ด ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ SJF, HRN ๋“ฑ์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ์ด์œ ๊ฐ€ ์žˆ๋Š”๋ฐ, ํ˜„์‹ค์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆด์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•  SRT ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„ (Priority)

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

์„ ์  ์Šค์ผ€์ค„๋ง

์„ ์  ์Šค์ผ€์ค„๋ง์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์„ ๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ๋ฅผ ๋นผ์•—์•„ CPU๋ฅผ ์ ์œ ํ•  ์ˆ˜ ์žˆ์Œ.

ํ”„๋กœ์„ธ์Šค์˜ I/O ์š”์ฒญ, I/O ์‘๋‹ต, Interrupt ๋ฐœ์ƒ, ์ž‘์—… ์™„๋ฃŒ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์—์„œ ์Šค์ผ€์ค„๋ง์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ธด๊ธ‰ํžˆ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์— ๋น„ํ•ด Context Switching์ด ์ž์ฃผ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

SRT (Shortest Remaining Time)

SJF ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋ฒ•. SJF ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ์ˆœ์„œ๋Œ€๋กœ CPU์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋˜ SJF ๋ฐฉ์‹๊ณผ ๋™์ผํ•ด ๋ณด์ด์ง€๋งŒ, ์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— CPU๋ฅผ ์ ์œ  ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋‚จ์€ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ Ready Queue์— ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์ƒˆ๋กœ ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ CPU ์ ์œ ๋ฅผ ๋นผ์•—์•„ ์ ์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„ (Priority)

SJF์™€ SRT์˜ ๊ด€๊ณ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋น„์„ ์  ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์˜ ์„ ์  ๋ฐฉ์‹์ธ ์„ ์  ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด ์žˆ๋‹ค.

๋ผ์šด๋“œ๋กœ๋นˆ (Round-Robin)

FCFS ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์— ์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹๊ณผ Time Quantum ๊ฐœ๋…์„ ์ถ”๊ฐ€ํ•œ ๋ฐฉ์‹์ด๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค CPU๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์— ์ œํ•œ์„ ๋‘๊ณ , ์ด ์‹œ๊ฐ„์„ Time Quantum์ด๋ผ๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์ด Time Quantum๋งŒํผ ์ง€๋‚˜๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ CPU ์ž์›์„ ํšŒ์ˆ˜ํ•˜๊ณ , ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ Ready Queue์˜ ๊ฐ€์žฅ ๋’ค๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

๋ผ์šด๋“œ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„  Time Quantum์„ ์–ผ๋งˆ๋กœ ๋‘˜ ์ง€ ์ž˜ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ Time Quantum์ด ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด, CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์˜ค๋ž˜ ์ ์œ ํ•˜๋ฉฐ ์ •์ž‘ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ด ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ FCFS ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ ๋ฐœ์ƒํ•˜๋˜ ํ˜ธ์œ„ ์ƒํƒœ๊ฐ€ ๋˜ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  Time Quantum์„ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ๋‘๋ฉด, Context Switching์ด ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง„๋‹ค.

๋‹ค๋‹จ๊ณ„ ํ (Multi-Level Queue)

ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ƒ์— ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ๋ฃน๋งˆ๋‹ค Queue๋ฅผ ๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ•œ ๋งˆ๋””๋กœ Ready Queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ๊ฐ์˜ Queue๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € Foreground Queue์™€ Background Queue์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ๊ฐ€์•ผ ํ•œ๋‹ค.

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

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ์ธ Foreground Queue์—๋Š” ์‘๋‹ต ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ผ์šด๋“œ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์ ์šฉํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ์ธ Background Queue์—๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด ํฐ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— FCFS ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์ ์šฉํ•˜๋Š” ๋“ฑ ๊ฐ Queue๋งˆ๋‹ค ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ€์žฅ ์ ์ ˆํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

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

๋‹ค๋งŒ ๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Queue๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ คํ•ด์•ผ ํ•  ์ ์ด ํ•˜๋‚˜ ๋” ์ƒ๊ธด๋‹ค. ๋ฐ”๋กœ ์–ด๋–ค Queue์— ์–ผ๋งˆ๋‚˜ CPU๋ฅผ ์˜ค๋ž˜ ํ• ๋‹นํ•  ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ์Šค์ผ€์ค„๋ง์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์ •๋„๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๊ณ ์ • ์šฐ์„ ์ˆœ์œ„ (Fixed Priority)

Queue๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ Queue์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚จ์•„ ์žˆ๋‹ค๋ฉด, ๋ฌด์กฐ๊ฑด ๊ทธ Queue์— ๋‚จ์•„ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋’ค์— ๋‹ค์Œ ์šฐ์„ ์ˆœ์œ„์˜ Queue๋ฅผ ์„œ๋น„์Šคํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— CPU ์ž์›์„ ์šฐ์„  ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์•„ ๋ณด์ด์ง€๋งŒ SJF ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ฒ˜๋Ÿผ ๊ฒฐ๊ตญ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋‘๋“ค ๊ธฐ์–ตํ•˜๊ฒ ์ง€๋งŒ ์ด๋Ÿฐ ์ƒํƒœ๋ฅผ ๊ธฐ์•„ ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค (Time Slice)

๊ณ ์ • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์ƒ๊ธด ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ Time Slice๋ฅผ ๋‘๊ณ , ์ด ์‹œ๊ฐ„ ๋น„์œจ์— ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ Queue๋ฅผ ์„œ๋น„์Šคํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CPU ์ž์›์˜ 75%๋Š” Foreground Queue, 25%๋Š” Background Queue๋ฅผ ์„œ๋น„์Šคํ•˜๋Š” ๋ฐ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ (Multi-Level Feedback Queue)

๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์€ ๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์— ์—์ด์ง• ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ๋ฐฉ์‹์ด๋‹ค. ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ๋Š” ๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์—์„œ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฐ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์  ์˜ฌ๋ ค์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋กœ ์˜ฎ๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค๋‹จ๊ณ„ ํ ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ธฐ์•„ ์ƒํƒœ๋ฅผ ์–ด๋Š ์ •๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ฒฐ๋ก 

์ด๋ ‡๊ฒŒ ์Šค์ผ€์ค„๋ง์ด ์™œ ํ•„์š”ํ•œ์ง€๋ถ€ํ„ฐ, ์‹ค์ œ๋กœ ์Šค์ผ€์ค„๋ง์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋Š”์ง€๊นŒ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์š”์•ฝํ•ด๋ณด์ž.

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

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

References

ํ‰๋ฒ”ํ•œ๊ฐœ๋ฐœ์ž๋…ธํŠธ
Preamtree์˜ ํ–‰๋ณต๋กœ๊ทธ
์–‘ํ–„์ฐŒ๊ฐ€ ๋งŒ๋“œ๋Š” ์„ธ์ƒ
๊ธฐ๋ณธ๊ธฐ๋ฅผ ์Œ“๋Š” ์ •์•„๋งˆ์ถ”์–ด ์ฝ”๋”ฉ๋ธ”๋กœ๊ทธ

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

pa324.log
์œค์ž์ด ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ