๋‚˜๋งŒ์˜ ์˜ค๋ž˜๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ

Become a ghost

Computer Science/Operating system ์šด์˜์ฒด์ œ

[250306] ํ”„๋กœ์„ธ์Šค ๊ฐœ๋… ์ •๋ฆฌ / ํ”„๋กœ์„ธ์Šค๋ž€? / PCB ๊ฐœ๋… / ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ์ข…๋ฅ˜

jennnnna 2025. 3. 12. 14:41

๊ฐœ์š” 

์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋…์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. 

ํ”„๋กœ์„ธ์Šค ๊ฐœ๋… ์ •๋ฆฌ์— ์•ž์„œ, ์ฑ…์— ๋‚˜์™€์žˆ๋Š” ๊ฐœ์š”๋ฅผ ๋ณด๋ฉด ์Šค์ผ€์ค„๋ง ๊ฐœ๋…์„ ๋จผ์ € ์–ธ๊ธ‰ํ•œ๋‹ค. 

 

"์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜(cpu) ์Šค์ผ€์ค„๋ง์ด๋ž€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์˜๋ขฐ๋ฐ›์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜ ๋˜๋Š” ํ”„๋กœ์„ธ์„œ๋“ค์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•œ ์ •์ฑ…์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค." - ์šด์˜์ฒด์ œ(์ƒ๋Šฅ์ถœํŒ์‚ฌ) 48p ์ค‘ 

 

ํ”„๋กœ์„ธ์Šค? ํ”„๋กœ์„ธ์„œ?

์ฒœ์ฒœํžˆ ์•Œ์•„๋ณด๋„๋กํ•˜์ž

 

"๋ชจ๋“  ์ปดํ“จํ„ฐ ์ž์›์€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ์‹ ์ค‘ํ•œ ์ •์ฑ…์ด ์ „์ œ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์Šค์ผ€์ค„๋ง์€ ์šด์˜์ฒด์ œ์˜ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ฉฐ ...  (์ค‘๋žต)

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง์€ ์ค€๋น„์™„๋ฃŒ(ready) ์ƒํƒœ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ์„ CPU ์— ํ• ๋‹น์‹œํ‚ฌ ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ์„œ, CPU์˜ ํšจ์œจ ๋ฐ ์ฒ˜๋ฆฌ์œจ(throughput) ์ตœ๋Œ€ํ™”, ๋ฐ˜ํ™˜์‹œ๊ฐ„(turnaround time)์ตœ์†Œํ™”์— ๊ทธ ๋ชฉ์ ์„ ๋‘๊ณ  ์žˆ๋‹ค." - ์šด์˜์ฒด์ œ(์ƒ๋Šฅ์ถœํŒ์‚ฌ) 48p ์ค‘ 

 

์ฆ‰, ํ”„๋กœ์„ธ์Šค๋Š” ์ด cpu ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ "์Šค์ผ€์ค„๋ง"์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์š”์†Œ์ธ ๊ฒƒ์ด๋‹ค. 

(๊ณต๋ถ€ ์Šค์ผ€์ค„ ์งœ๋Š”๋ฐ '๊ณต๋ถ€'๊ฐ€ ๋ญ”์ง€๋ฅผ ์•Œ์•„์•ผ ๊ฒ…๋ถ€ ์Šค์ผ€์ค„์„ ์งœ์ง€ ์•Š๊ฒ„์Šต๋‹ˆ๊นŒ! ) 

 

 

 

ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•˜์—ฌ  

ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…

- ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” CPU ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” '์ž‘์—…์˜ ๋‹จ์œ„' ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

- ํ”„๋กœ๊ทธ๋žจ. 

- ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œ์ผœ์„œ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ. 

ex) ๋‹ค์–‘ํ•˜๊ฒŒ ์ •์˜๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค. 

1) ์‹คํ–‰ (executing, running)์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ

2) PCB(process control block) ๋ฅผ ์ง€๋‹Œ ํ”„๋กœ๊ทธ๋žจ

3) ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(program counter)๋ฅผ ์ง€๋‹Œ ํ”„๋กœ๊ทธ๋žจ

4) ๋Šฅ๋™์  ๊ฐœ์ฒด(entity)๋กœ, ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ 

 

๐Ÿ’ก Q. ๊ทธ๋ ‡๋‹ค๋ฉด 'ํ”„๋กœ๊ทธ๋žจ' ์ž์ฒด๊ฐ€ ํ”„๋กœ์„ธ์Šค์ธ๊ฐ€? ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€? 

A. ์นด์นด์˜คํ†ก์„ ์‹คํ–‰ ์ค‘์ด๋ฉด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์ธ๊ฑด๊ฐ€? Q. ๋„น. ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์ด๊ณ , ์ด์ƒํƒœ์—์„œ ์นดํ†ก์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋ณด๋‚ด๊ณ  ์ง€๋‹ˆ ๋ฎค์ง์„ ์‹คํ–‰ํ•˜๋ฉด ๋‘๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ๋จ. 

 

์šด์˜์ฒด์ œ๋Š” ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น(Multitasking)์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ !! 

๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ์˜ ์Šค์ผ€์ค„๋ง์— ๋”ฐ๋ผ CPU๋ฅผ ๋ฒˆ๊ฐˆ์•„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Œ.

 

 

์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•˜๋Š” ์ผ 

1. ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์™€ ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ๊ณผ ์‚ญ์ œ

2. ํ”„๋กœ์„ธ์Šค์˜ ์ผ์‹œ ์ค‘์ง€์™€ ์žฌ์ˆ˜ํ–‰

3. ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง

4. ํ”„๋กœ์„ธ์Šค์˜ ๋™๊ธฐํ™”

5. ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 

6. ๊ต์ฐฉ ์ƒํƒœ ์ฒ˜๋ฆฌ

 

 

ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ์š”์†Œ 

์ฃผ๊ธฐ์–ต ์žฅ์น˜ (CPU) ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค(์‹คํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ํ˜น์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด)๋Š” ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, ์Šคํƒ ์˜์—ญ, ํž™ ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋ผ ์žˆ์Œ. 

 

- ์ฝ”๋“œ ์˜์—ญ: ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋งํ•˜์ง€๋งŒ .java ๋“ฑ์˜ ์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค 
-> .java ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋˜์–ด cpu ๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š”, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class ํŒŒ์ผ, ๊ธฐ๊ณ„)๋กœ ๋ณ€ํ™˜๋˜๊ณ  ์ด๊ฒƒ๋“ค์ด ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. 

- ๋ฐ์ดํ„ฐ ์˜์—ญ: ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ ๋ณ€์ˆ˜(global variable), ์ •์  ๋ณ€์ˆ˜(static variable)

- ์Šคํƒ ์˜์—ญ: ์ง€์—ญ ๋ณ€์ˆ˜(local variable), ์ธ์ˆ˜argument 

 

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

ํ”„๋กœ์„ธ์Šค๋Š” ๊ณง ์‹คํ–‰๊ฐ€๋Šฅํ•œ PCB(Process Control Block) ๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. 

์‹คํ–‰, ์ž…์ถœ๋ ฅ ๋Œ€๊ธฐ ๋“ฑ๊ณผ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณต๋œ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ์ž‘์—…์€ ํ•œ๋ฒˆ์— ๋๋‚˜์ง€ ์•Š๋Š”๋‹ค. 

 

1. ์‹คํ–‰ ์ƒํƒœ(running): ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

2. ์ค€๋น„์™„๋ฃŒ ์ƒํƒœ(ready): ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ ๋•Œ ๊ทธ๊ฒƒ์„ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ 

3. ๋Œ€๊ธฐ ์ƒํƒœ(block): ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ์ค‘, ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ ๋“ฑ์œผ๋กœ ๋ฐ€๋ ค๋‚ฌ์„ ๋•Œ ๋‹ค๋ฅธ ์ž‘์—…์ด ์™„๋ฃŒ ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์ƒํƒœ ! 

**ํŠธ๋ ˆํ”ฝ ์ œ์–ด๊ธฐ(traffic controller) ๋‹ด๋‹น. 

 

๐Ÿ’ก ํ ๊ฐœ๋… 

cpu ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ๋ฐ–์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ค€๋น„ ์™„๋ฃŒ ์ƒํƒœ๋‚˜ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. 

์ด๋ฅผ ์œ„๋ž˜ 1) ์ค€๋น„ ์™„๋ฃŒ ๋ฆฌ์ŠคํŠธ(ํ) 2) ๋Œ€๊ธฐ ๋ฆฌ์ŠคํŠธ(ํ) ๋ฅผ ๋งŒ๋“ค์–ด 1)์— ์žˆ๋Š” ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ํ• ๋‹นํ•ด์ค€๋‹ค. 

- ๊ต์žฌ 51p ๊ทธ๋ฆผ2-2 ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์ „์ด ๊ทธ๋ฆผ ์ฐธ๊ณ . 

 

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค(time slice) or ํ• ๋‹น ์‹œ๊ฐ„(time quantum) ๊ฐœ๋…

OS ๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜๋ฅผ ์ ์œ ํ•˜๋„๋ก ํ•œ๋‹ค. 

์˜ˆ์‹œ1) ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ์•ฝ ํ• ๋‹น์‹œ๊ฐ„ ์ง€๋‚˜๋„๋ก ๊ณ„์† CPU ๋ฅผ ์จ์•ผ ํ•  ๊ฒฝ์šฐ ์šฐ์„  CPU ๋„˜๊ฒจ์ฃผ๊ณ  ์ค€๋น„์™„๋ฃŒ ์ƒํƒœ๋กœ ๋ฐ”๋€œ

์˜ˆ์‹œ2) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ „ io ๋ฐœ์ƒํ•˜๋ฉด, ์ผ๋‹จ CPU ๋ฅผ ์–‘๋„ํ•˜๊ณ , io ๊ฐ€ ๋๋‚ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ->์ดํ›„ ์ค€๋น„์™„๋ฃŒ. 

 

ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก (PCB - Process Control Block) 

ํ”„๋กœ์„ธ์Šค๋Š” ์™„๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ์—ฌ๋Ÿฌ ์ƒํƒœ๋กœ ๋ณ€ํ•˜๋ฉด์„œ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด CPU ํ• ๋‹น ํ˜น์€ ํšŒ์ˆ˜๊ฐ€ ์ด๋ฃจ์–ด์ง. 

PCB ๋Š” ํ”„๋กœ์„ธ์Šค์— ๊ด€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ์— ๋งŒ๋“ค์–ด์ง„๋‹ค. 

๋˜ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์ด ์ œ๊ฑฐ๋œ๋‹ค. 

 

๐Ÿ’ก ํŠธ๋ž˜ํ”ฝ ์ œ์–ด๊ธฐ๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ ๋•Œ๋งˆ๋‹ค PCB ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค. 

PCB ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์„œ๋กœ ๋งํฌ๋˜์–ด ์žˆ๋‹ค. 

 

PCB ์˜ ๊ตฌ์„ฑ์ƒํƒœ

 - ํ”„๋กœ์„ธ์Šค ํ˜„์žฌ ์ƒํƒœ(์‹คํ–‰, ์ค€๋น„, ๋Œ€๊ธฐ) 

- ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„

- ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์žฌ๋œ ๊ธฐ์–ต์žฅ์น˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ํฌ์ธํ„ฐ 

- ํ• ๋‹น๋œ ์ž์›(์žฅ์น˜ ๋“ฑ)์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ 

- ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜์˜ ๊ฐ์ข… ๋ ˆ์ง€์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„ 

 

 

ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ 

fork() ๋ช…๋ น์–ด๋ž€? 

- ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ช…๋ น์–ด

- ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณต์ œํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

- ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค(parent process), ์ž์‹ ํ”„๋กœ์„ธ์Šค(child process) ๋กœ ๋‚˜๋‰จ. 

 

 

ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ (PC, Program Counter) 

- ๋‹ค์Œ ์‹คํ–‰๋  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ. 

- ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋””๊นŒ์ง€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜๊ณ  ๋‹ค์Œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๊ฐ€ ์–ด๋””์žˆ๋Š”์ง€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—ญํ• ์„ํ•จ. 

- CPU ๋Š” ์ด ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ PC ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ฝ๊ณ  ์‹คํ–‰ํ•œ๋‹ค. 

 

 

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง 

์Šค์ผ€์ค„๋ง์˜ ๋ชฉ์ ๊ณผ ๊ธฐ์ค€ 

๊ฒฐ๋ก ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋ฉด์„œ, ๊ณตํ‰ํ•˜๊ฒŒ CPU ๋ฅผ ๋ฐฐ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์Šค์ผ€์ค„๋ง ๋ชฉ์ ์ด๋‹ค. 

- CPU ๋ฅผ ์ตœ๋Œ€ํ•œ ๋†€๋ฆฌ์ง€ ์•Š๊ณ  ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ ํ•  ๊ฒƒ. 

- ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ์ตœ๋Œ€ํ™”ํ•  ๊ฒƒ. ์ฆ‰ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ 

- ๋Œ€๊ธฐ ์‹œ๊ฐ„(Minimizing Waiting Time) ๋‹จ์ถ• 

- ์‘๋‹ต ์‹œ๊ฐ„(Response Time) ์ตœ์†Œํ™” 

- ๋ฐ˜ํ™˜ ์‹œ๊ฐ„(Turnaround Time) ๋‹จ์ถ•. ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ~ ์ข…๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋‹จ์ถ•. 

- ๋ฌดํ•œ ๋Œ€๊ธฐ (Starvation) ๋ฐฉ์ง€. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ๋ฌดํ•œํžˆ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ ๋ฐฉ์ง€. *์—์ด์ง•(Aging) ํ•ด์คŒ. 

- ๊ณตํ‰ํ•œ ์ž์› ๋ถ„๋ฐฐ 

- ์„ ์  (Preemption) ๊ด€๋ฆฌ. ๊ธด๊ธ‰ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ CPU ๋ฅผ ์–‘๋ณดํ•  ์ˆ˜ ์žˆ๋„๋กํ•จ. 

 

๐Ÿ’ก ์—์ด์ง•(Aging) : ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ค„๋ง์—์„œ ์˜ค๋žซ๋™์•ˆ ์‹คํ–‰๋˜์ง€ ๋ชปํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์  ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋ฒ•. 

 

 

์Šค์ผ€์ค„๋ง ๊ธฐ์ค€ 

๐Ÿ’ก ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์„ฑ๊ฒฉ๊ณผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•ด์„œ CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒŒ ๋ชฉํ‘œ

๐Ÿ“Œ ์Šค์ผ€์ค„๋ง ๊ธฐ์ค€์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์š”์•ฝํ•˜๋ฉด
- ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ(CPU vs I/O, ์‹คํ–‰ ์‹œ๊ฐ„), ์‘๋‹ต ์†๋„ ์š”๊ตฌ, ์šฐ์„ ์ˆœ์œ„, ์„ ์  ์—ฌ๋ถ€ ๋“ฑ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•ด ์ ์ ˆํ•œ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

 

 

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง - ๋‹จ๊ณ„๋ณ„ ๋ถ„๋ฅ˜ 

 

1. ์ƒ์œ„ ๋‹จ๊ณ„ ์Šค์ผ€์ค„๋ง(Long-Term Scheduling), ์ฑ…์— ๋”ฐ๋ผ High Level Scheduling ์œผ๋กœ ํ‘œ๊ธฐ๋˜๊ธฐ๋„ํ•จ. 

- ์ž‘์—…(job) ์Šค์ผ€์ค„๋กœ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ์–ด๋–ค ์ž‘์—…์—๊ฒŒ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ์ฐจ์ง€ํ•˜๋„๋ก ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„. 

- ์ฆ‰, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. (๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด์ง€ ๋ง์ง€) 

Q. ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅด๊ณ  ๋‚˜์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๋“ค? ์•ฑ์„ ์˜คํ”ˆํ•˜๊ฒŒ ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•œ๋‹ค๋Š”๊ฑด๊ฐ€? 

A. 

 

2. ์ค‘๊ฐ„ ๋‹จ๊ณ„ ์Šค์ผ€์ค„๋ง(Medium-Term Scheduling), Intermediate Level Scheduling

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

์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑํ•˜๋‹ˆ๊นŒ ์ž ๊น ๊บผ๋‘˜๊นŒ? ํ•˜๋Š” ๋‹จ๊ณ„ !!! 

 

3. ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋ง (Short-Term Scheduling), Low Level Scheduling

- CPU ๊ฐ€ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งž์ดํ•  ์ค€๋น„๊ฐ€ ๋์„ ๋•Œ ์–ด๋–ค ready ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„. 

๊ฒฐ์ • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ํ• ๋‹นํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค ! 

- ์ด ๋‹จ๊ณ„๋Š” ๋””์ŠคํŒจ์ฒ˜์— ์˜ํ•ด ๋งค์ดˆ ์—ฌ๋Ÿฌ๋ฒˆ ์ž‘๋™ํ•œ๋‹ค. CPU ๋‚ด์— *๋””์ŠคํŒจ์ฒ˜๊ฐ€ ํ•ญ์ƒ ์ ์žฌ๋ผ์žˆ์–ด์•ผํ•˜๋Š” ์ด์œ . 

์ฆ‰, ์ง€๊ธˆ CPU ๋ฅผ ๋ˆ„๊ตฌ์—๊ฒŒ ์ค„๊นŒ? ํ•˜๋Š” ๋‹จ๊ณ„ 

 

๐Ÿ’ก๋””์ŠคํŒจ์ฒ˜(dispatcher) CPU๋ฅผ ์‚ฌ์šฉํ•  ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฐ์ •ํ•œ ํ›„, ์‹ค์ œ๋กœ CPU๋ฅผ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋Š” ์—ญํ• , CPU ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ์ƒํƒœ(Running)๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ ๋‹ด๋‹น. 

- ๋ฌธ๋งฅ ์ „ํ™˜(Context Switching), (์‚ฌ์šฉ์ž, ์ปค๋„) ๋ชจ๋“œ ์ „ํ™˜(Mode Switching), ์‹คํ–‰ ์ƒํƒœ(Running)๋กœ ์ „ํ™˜

 

 

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง - ๋ฐฉ๋ฒ• ๋ฐ ํ™˜๊ฒฝ๋ณ„ ๋ถ„๋ฅ˜ 

 

1. ์„ ์  / ๋น„์„ ์  (preemptive / nonpreemtive) ์Šค์ผ€์ค„๋ง 

- ์šด์˜์ฒด์ œ๋Š” ๋Œ€๋ถ€๋ถ„ ์„ ์  ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•œ๋‹ค. 

- ์„ ์  ์Šค์ผ€์ค„๋ง์ผ ๊ฒฝ์šฐ, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

- ๋น„์„ ์  ์Šค์ผ€์ค„๋ง์ผ ๊ฒฝ์šฐ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— CPU ํ• ๋‹น๋˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ๋ฅผ ์„ ์ ํ•  ์ˆ˜ ์—†๋‹ค. 

- ํšจ๊ณผ์ ์ธ ์„ ์  ์Šค์ผ€์ค„๋ง์„ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ฃผ๊ธฐ์–ต์žฅ์น˜(RAM) ์— ์žˆ์–ด์•ผํ•œ๋‹ค. 

- ๋น„์„ ์ ์ผ ๊ฒฝ์šฐ, ์•„๋ฌด๋ฆฌ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ผ ํ•˜๋”๋ผ๋„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. = ๊ณต์ •ํ•œ ๋Œ€์šฐ 

 

 

2. ์šฐ์„ ์ˆœ์œ„(priority) ์Šค์ผ€์ค„๋ง 

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

- ๊ธด๊ธ‰ํ•œ ์ž‘์—…์„ ๋จผ์ € ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

- ์ •์  ์šฐ์„ ์ˆœ์œ„(static priority): ์ƒ๋Œ€์ ์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ์ ์œผ๋‚˜, ์ฃผ์œ„ ์—ฌ๊ฑด ๋ณ€ํ™”์— ์ ์‘ X (์œ ์—ฐ์„ฑ X) 

- ๋™์  ์šฐ์„ ์ˆœ์œ„(dynamin priority): ์ฒ˜์Œ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ถ€์—ฌ๋˜๋”๋ผ๋„ ์กฐ์ • ๊ฐ€๋Šฅํ•˜๋‹ค 

- ํ•˜์ง€๋งŒ ๋ฌดํ•œ ๋Œ€๊ธฐ(Starvation) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ → ์—์ด์ง•(Aging) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐํ•˜๋„๋กํ•œ๋‹ค. 

 

 

3. ๊ธฐํ•œ๋ถ€(Deadline) ์Šค์ผ€์ค„๋ง

- ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ(Real-Time System)์—์„œ ์ค‘์š”!

- ์ผ๋ฐ˜์ ์ธ ์šด์˜์ฒด์ œ๋ณด๋‹ค๋Š” ํŠน์ˆ˜ํ•œ ํ™˜๊ฒฝ(์ž„๋ฒ ๋””๋“œ, ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ)์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋จ. 

- ์ž‘์—…๋“ค์ด ๋ช…์‹œ๋œ ์‹œ๊ฐ„์ด๋‚˜ ๊ธฐํ•œ ๋‚ด์— ์™„๋ฃŒ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ.

- ํ•˜๋“œ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ(Hard Real-Time): ๋ฐ˜๋“œ์‹œ ๊ธฐํ•œ์„ ๋งž์ถฐ์•ผ ํ•จ (์˜ˆ: ํ•ญ๊ณต๊ธฐ ์ œ์–ด ์‹œ์Šคํ…œ

- ์†Œํ”„ํŠธ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ(Soft Real-Time): ๊ธฐํ•œ์„ ๋„˜๊ฒจ๋„ ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ ์ €ํ•˜ (์˜ˆ: ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ)

 

 

 

 

4. ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ(Multiprocessor) ์Šค์ผ€์ค„๋ง

- ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ํ™˜๊ฒฝ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…

- ๋‹จ์ผ CPU ํ™˜๊ฒฝ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„œ๋Š” ํ•„์ˆ˜์ ์œผ๋กœ ๊ณ ๋ ค๋จ.

- ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU๊ฐ€ ์žˆ์„ ๋•Œ, ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฐ๋ถ„ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•

 

 

 

 

ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ 4๊ฐ€์ง€ 

 

1. FCFS (First-Come, First-Served)

- ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์œผ๋กœ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 

"๊ฐ€์žฅ ์ฒ˜์Œ์— ๋“ค์–ด์˜จ ๊ฒŒ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค" ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์„ ์  ๋ชปํ•˜๋Š” ๊ฒƒ!! 

- ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๋Œ€๊ธฐ ํ์— ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU ๋ฅผ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค. 

- ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ ๋ฐ›๋Š”๋‹ค. 

- ๋‹ค๋ฅธ ๋ฐฉ์‹์— ๋น„ํ•ด ์ž‘์—… ์™„๋ฃŒ ์‹œ๊ฐ„ ์˜ˆ์ธก ์šฉ์ดํ•จ

- BUT ์˜ค๋Š˜๋‚ ์—๋Š” ์ฃผ๋œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Œ. (์˜ค๋Š˜๋‚ ์—”? ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์‹คํ–‰ํ•˜๋ฉฐ, ์šฐ์„ ์ˆœ์œ„ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋“ค์— ํ•œํ•ด FCFS ๋ฐฉ์‹๋Œ€๋กœ ํ•จ. ์ฆ‰, ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉ) 

 

์ถœ์ฒ˜: ์šด์˜์ฒด์ œ (๋ฐ•๊ทœ์„, ๊น€์ฐฝ์ˆ˜, ๋ฐฐ์ธํ•œ, ์ด์ค€์—ฐ, ๋ฐ•ํ™์ง„ ์ง€์Œ) 65p

ํ”„๋กœ์„ธ์Šค ๋„์ฐฉ์ˆœ์„œ๊ฐ€ ์œ„์™€ ๊ฐ™์ด p1, p2, p3 ์ผ๋•Œ ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์€ ์ฐจ๋ก€๋Œ€๋กœ 21, 3, 6
ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ = (21+24+30) / 3 = 25

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ = (0+21+24) / 3 = 15

 

์ฑ… ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•œ ์ด๋ฏธ์ง€

๋ฐ˜๋ฉด ํ”„๋กœ์„ธ์Šค ๋„์ฐฉ์ˆœ์„œ๊ฐ€  p2, p1, p3 ์ผ ๋•Œ์—๋Š” 

ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ = (3+24+30) / 3 = 19

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ = (0+3+24) / 3 = 9 ๊ฐ€ ๋œ๋‹ค ! 

 

 

 

 

2. SJF (Shortest Job First)

- ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์‹คํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ๋จผ์ € ์ˆ˜ํ–‰

- ๋น„์„ ์ ํ˜•(Non-Preemptive) (SRT์™€ ์ฐจ์ด์ !)

- ๋‹จ์ : ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌดํ•œ ๋Œ€๊ธฐ(Starvation)ํ•  ์ˆ˜๋„ ์žˆ์Œ. (Aging์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ)

- ์ˆ˜ํ–‰(์‹คํ–‰)์‹œ๊ฐ„์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์— ์˜์กดํ•จ. ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜๋Š” ์—†์Œ. ๊ทธ๋ž˜์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. 

์ถœ์ฒ˜: ์šด์˜์ฒด์ œ (๋ฐ•๊ทœ์„, ๊น€์ฐฝ์ˆ˜, ๋ฐฐ์ธํ•œ, ์ด์ค€์—ฐ, ๋ฐ•ํ™์ง„ ์ง€์Œ) 67p

FCFS ๋ฐฉ์‹์˜ ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ : (7+5+18+24) / 4 = 16

SJF ๋ฐฉ์‹์˜ ํ‰๊ท  ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ : (3+9+16+24) / 4 = 13 

* ๋ˆ„์ ํ•ด์„œ ๋”ํ•˜๊ณ  ์žˆ์Œ. 

 

 

 

 

 

3. ์šฐ์„ ์ˆœ์œ„ (Priority) ์Šค์ผ€์ค„๋ง โญ โญ 

- ๊ฐ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค. 

- ์„ ์ ํ˜• / ๋น„์„ ์ ํ˜• ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•˜๋‹ค (ready ํ์— ๋„์ฐฉํ•˜๋ฉด, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์„ ์ ํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์ž‘์—… ํ์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ๊ณ  CPU ํ• ๋‹น์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.) 

- ๋ฌธ์ œ์ : ๋ฌดํ•œ๋Œ€๊ธฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ  (Aging์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ)

- ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์„ ๋•Œ์—๋Š” FCFS ์ˆœ์„œ๋กœ ์Šค์ผ€์ค„๋จ. 

- ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๋ฌธ์ œ์ ์€ ๋ฌดํ•œ๋Œ€๊ธฐ(indefinite blocking), ๊ธฐ์•„ ํ˜„์ƒ(starvation) : ์‹คํ–‰ ์ค€๋น„ ๋˜์—ˆ์œผ๋‚˜ cpu ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” cpu ๋ฅผ ๊ณ„์† ๋Œ€๊ธฐํ•œ๋‹ค. ์ด๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์œผ๋ฉด ๋ฌดํ•œํžˆ ๋Œ€๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น€. 

- ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—์ด์ง•(aging) ๊ธฐ๋ฒ•: ์˜ค๋žซ๋™์•ˆ ์‹œ์Šคํ…œ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•. 

 

๐Ÿ’ก์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜ ๋ฒ„์ŠคํŠธ(CPU burst): CPU ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ๋Š๊น€์—†์ด ์—ฐ์†์ ์œผ๋กœ CPU ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„ 

 - ํ”„๋กœ์„ธ์Šค๋Š” cpu ๋งŒ ๊ณ„์† ์“ฐ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ <<cpu 3ms ์‚ฌ์šฉ->I/O ๋Œ€๊ธฐ-> cpu 5ms ์‚ฌ์šฉ>> ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณต๋จ. ์—ฌ๊ธฐ์„œ 3ms, 5ms๊ฐ€ CPU burst ์ž„ ! 

 

 

 

 

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

- ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ์‹œ๊ฐ„ (Time Quantum) ์„ ์ฃผ๊ณ  ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์‹คํ–‰ 

- ์„ ์ ํ˜• (Preemptive). 

- ์ผ์ •ํ•œ ์‹œ๊ฐ„(๋ณดํ†ต 10~100ms)์ด ๋˜๋ฉด ๋Œ€๊ธฐ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— cpu ๋„˜์–ด๊ฐ. ์ฆ‰, ์„ ์ ๋จ. 

- ์‹คํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ค€๋น„์™„๋ฃŒ ๋ฆฌ์ŠคํŠธ (์ž‘์—… ํ) ์—์„œ ๊ฐ€์žฅ ๋’ค๋กœ ๋ณด๋‚ด์ง„๋‹ค. 

- ์‹œ๋ถ„ํ•  ๋ฐฉ์‹ ์‹œ์Šคํ…œ์—์„œ ํšจ๊ณผ์ ์ด๋‹ค (ex. ๋Œ€ํ™”ํ˜• ์‹œ์Šคํ…œ Interactive System) 

- I/O ๋ฐœ์ƒ ์‹œ, ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ฒจ์ค€๋‹ค. ์œ ํœด ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—. ๋ฌธ๋งฅ๊ตํ™˜์„ ๊ฐ์ˆ˜ํ•˜๋Š” ํŽธ์ด ๋‚˜์Œ. ์ž…์ถœ๋ ฅ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

๐Ÿ’ก์˜ค๋ฒ„ํ—ค๋“œ(Overhead): ์‹ค์ œ ์ž‘์—… ์ด์™ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋น„์šฉ 

ex)

1)๋ฌธ๋งฅ ์ „ํ™˜(Context Switching) ์˜ค๋ฒ„ํ—ค๋“œ : CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜์ด ๋„ˆ๋ฌด ์žฆ์œผ๋ฉด CPU๊ฐ€ "์‹ค์ œ ์ž‘์—…"์„ ํ•˜๋Š” ๋Œ€์‹  "๋ฌธ๋งฅ ์ „ํ™˜"์— ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋จ

2)์Šค์ผ€์ค„๋ง ์˜ค๋ฒ„ํ—ค๋“œ : ์šด์˜์ฒด์ œ๊ฐ€ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ Ready Queue ๊ด€๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐ, ์Šค์ผ€์ค„๋Ÿฌ ์‹คํ–‰ ์‹œ๊ฐ„ ๋“ฑ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒ

3) ๋™๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ (๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ, ๋ฝ) : ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผํ•  ๋•Œ,๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด์ง€ ์•Š๋„๋ก ๋ฝ(Lock)์„ ๊ฑธ๊ฑฐ๋‚˜, ๋™๊ธฐํ™”(Synchronization)๋ฅผ ํ•ด์•ผ ํ•จ but ๋ฝ์„ ๊ฑธ๊ณ  ํ•ด์ œํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ

 

์ด์™ธ์—๋„ SRT (Shortest Remaining Time), ๋‹ค๋‹จ๊ณ„ ํ (Multilevel Queue), ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ (Multilevel Feedback Queue), HRN (Highest Response Ratio Next) ๋“ฑ์ด ์žˆ๋‹ค  !! ๊ธฐ๋ณธ์ ์ธ 4๊ฐ€์ง€๋งŒ ๋จผ์ € ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. 

 

 

๋ ! 

 

์•Œ๋ฆผ: *๊ฐœ์ธ ๊ณต๋ถ€ ๋ชฉ์ ์œผ๋กœ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค* 

์ฐธ๊ณ ํ•œ ์ฑ…: ์šด์˜์ฒด์ œ (๋ฐ•๊ทœ์„, ๊น€์ฐฝ์ˆ˜, ๋ฐฐ์ธํ•œ, ์ด์ค€์—ฐ, ๋ฐ•ํ™์ง„ ์ง€์Œ) - ์ƒ๋Šฅ์ถœํŒ