๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Operating System5

15. CPU Scheduling Algorithm FCFS (First Come First Served) ์Šค์ผ€์ฅด๋ง ์„ ์ž…์„ ์ฒ˜๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ๋ณ„ ๋„์ฐฉ ์‹œ๊ฐ„ ๋น„์„ ์  ์Šค์ผ€์ฅด๋ง ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ ์—†์Œ ๊ธฐ์•„ ์—†์Œ, ์Šค๋ ˆ๋“œ ์˜ค๋ฅ˜๋กœ ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๊ธฐ์•„ ๋ฐœ์ƒ ์ฒ˜๋ฆฌ์œจ์ด ๋‚ฎ์Œ. ํ˜ธ์œ„ ํšจ๊ณผ (convoy effcet) ๋ฐœ, ๊ธด์Šค๋ ˆ๋“œ๊ฐ€ ์˜ค๋ž˜ CPU๋ฅผ ์ฐจ์ง€ํ•˜๋ฉด ๋Šฆ๊ฒŒ ๋“ค์–ด์˜จ ์Šค๋ ˆ๋“œ๋Š” ์˜ค๋ž˜ ๋Œ€๊ธฐ ์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ 11s, ๋Œ€๊ธฐ์‹œ๊ฐ„ 11s, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ 11 / 4 = 2.75ms SJF (Shortest Job First) ์ตœ๋‹จ ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ ๋ณ„ ์˜ˆ์ƒ ์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ : ์งง์€ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์‹œ๊ฐ„ ๊ธฐ์•„ ๋ฐœ์ƒ๊ฐ€๋Šฅ, ์ง€์†์ ์œผ๋กœ ์งง์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉ์‹œ ๊ธด ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์„ ์˜ˆ์ธก ๋ถˆ๊ฐ€ ์งง์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋จผ์ € ์‹ค.. 2024. 4. 22.
14. CPU Scheduling CPU ์Šค์ผ€์ค„๋ง์€ ์™œ ์ƒ๊ฒผ์„๊นŒ? ์šด์˜์ฒด์ œ์˜ ๋ฐœ์ „์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‹ค์ค‘ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋„์ž…๋œ ๊ฒƒ์„ ์•Œ๊ฒŒ๋๋‹ค. ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ I/O ์ฒ˜๋ฆฌ๋กœ ์ธํ•œ CPU Idle Time์„ ์ค„์—ฌ์„œ CPU ํ™œ์šฉ๋ฅ ์„ ํ–ฅ์ƒ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ๋„์ž… ๋˜์—ˆ๋Š”๋ฐ ์ด ๋•Œ, ๋‹ค์ค‘ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด CPU ์Šค์ผ€์ค„๋ง์ด๋‹ค. ์Šค๋ ˆ๋“œ๊นŒ์ง€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์€ CPU๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทผ๋ฐ ์–ด๋–ค ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒํ•  ๊ฒƒ์ธ์ง€ ๊ณจ๋ผ์•ผํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์€ ์ •์ฑ…์„ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํฌ๊ฒŒ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•˜๊ณ  ์—„๋ฐ€ํ•˜๊ฒŒ๋Š” ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ 2๊ฐ€์ง€ ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๋ฐœ์ƒํ•œ๋‹ค. 1. ์ž‘์—… ์Šค์ผ€์ค„๋ง(job scheduling) - ๋””์Šคํฌ ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ž‘์—…์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ข….. 2024. 4. 22.
13. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ตฌํ˜„ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๊ตฌํ˜„ ? ๊ฐœ๋ฐœ์ž๋กœ ๊ฑฐ๋“ญ๋‚˜๋ ค๋ฉด ๊ผญ ํ•„์š”ํ•œ ๊ฐœ๋…์ด๋‹ค. ์šฐ๋ฆฌ๋„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ž‘์—…์„ ํ•ด์•ผํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ๋•Œ, ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์Šคํ…œ์—์„œ ์Šค์ผ€์ค„ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํฌ๊ฒŒ N:1 ๋งคํ•‘, 1:1 ๋งคํ•‘, N:M ๋งคํ•‘์ด ์žˆ๋‹ค. X : Y ๊ผด๋กœ, X๊ฐœ์˜ ์‚ฌ์šฉ์ž ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ๋ฅผ Y๊ฐœ์˜ ์ปค๋„ ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ๋กœ ๋งคํ•‘ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ธ๋ฐ ์ด ์™ธ์—๋„ 1:N ๋งคํ•‘๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ N:1, 1:1 ๋งŒ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค .N(User):1(Kernel) ๋งคํ•‘ ๋ง ๊ทธ๋Œ€๋กœ N๊ฐœ์˜ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ 1๊ฐœ์˜ ์ปค๋„ ์Šค๋ ˆ๋“œ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์šด์˜์ฒด์ œ(์ปค๋„ ์ž…์žฅ)๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ Main ์Šค๋ ˆ๋“œ๋ผ๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด ๋ง์€ ์ปค๋„ ์˜์—ญ์— ์ €์žฅ๋˜๋Š” ์ปค๋„ ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ์˜.. 2024. 4. 22.
11. ์Šค๋ ˆ๋“œ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ์ปจํ…์ŠคํŠธ ์Šค๋ ˆ๋“œ์˜ ์ฃผ์†Œ๊ณต๊ฐ„์€ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค ์ฃผ์†Œ๊ณต๊ฐ„์„ ๊ทธ๋Œ€๋กœ ๋‚˜๋ˆ„์–ด๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ํž™, ์Šคํƒ ์˜์—ญ์€ ๊ณต์œ  ์˜์—ญ์ด๋˜๊ณ  ๊ฐœ๋ณ„ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, ์Šคํƒ ์˜์—ญ, ์ปค๋„ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. โ€ป ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ๋Š” ์œ ์‚ฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์Šค๋ ˆ๋“œ ์ƒ๋ช… ์ฃผ๊ธฐ ํ”„๋กœ์„ธ์Šค์—์„œ ์Šค๋ ˆ๋“œ๋กœ ๋ฐ”๋€Œ์—ˆ์œผ๋‹ˆ ์œ ์‚ฌํ•œ ๊ฒƒ์€ ๋‹น์—ฐํ•˜๋‹ค. ๊ทธ๋Ÿผ ํ”„๋กœ์„ธ์Šค์—์„œ ์žˆ๋Š” ๊ฐœ๋…๋“ค์€ ์›ฌ๋งŒํ•˜๋ฉด ์Šค๋ ˆ๋“œ์—๋„ ์ ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ๊ฒƒ์ด๋‹ค. ์Šค๋ ˆ๋“œ ๋˜ํ•œ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” NEW, Ready, Running, Blocked, Zombie, Out ์ƒํƒœ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” Ready, Running, Blocked, Terminated ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค. ๊ฐ ์ƒํƒœ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ด ๋‚ด์šฉ์€ ํ”„๋กœ์„ธ์Šค.. 2024. 4. 22.
10. ์Šค๋ ˆ๋“œ (Thread) ์“ฐ๋ ˆ๋“œ๋Š” ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด์œ ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค์—์„œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์— ๋„ˆ๋ฌด ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์‹œ PCB ์ƒ์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค ๋‚ด์šฉ ๋ณต์‚ฌ ๋“ฑ ๋งŽ์€ ์ž‘์—…์„ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋’ค์— ๋‚˜์˜ฌ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ฐธ์กฐ, ์บ์‹œ ์—…๋ฐ์ดํŠธ ๋“ฑ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์ด ์–ด๋ ต๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๊ณต๊ฐ„์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์„œ๋กœ ์นจ๋ฒ”ํ•  ์ˆ˜ ์—†์–ด์„œ ํ†ต์‹ ์ด ํž˜๋“ค๋‹ค๋Š” ์ . ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋งต, ํŒŒ์ดํ”„, ์†Œ์ผ“ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์ž…๋ ฅ์„ ๋…์ ํ•˜๋Š” ForeGorund Process์™€ ๊ฐ์ข… ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” BackGround Process๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทธ ์™ธ์—๋„.. 2024. 4. 21.