CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

1eehyunji 2023. 8. 28. 00:10

ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ƒํƒœ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. 

์ƒ์„ฑ(create)

์ƒ์„ฑ ์ƒํƒœ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, fork() ๋˜๋Š” exec() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ๋‹ค. ์ด๋•Œ PCB(Process Control Block)๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

  • fork()๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฃผ์†Œ ๊ณต๊ฐ„๋งŒ ๋ณต์‚ฌํ•  ๋ฟ์ด๊ณ  ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋น„๋™๊ธฐ ์ž‘์—… ๋“ฑ์€ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • exec()๋Š” ์ƒˆ๋กญ๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

์ค€๋น„(ready)

์ค€๋น„ ์ƒํƒœ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ , ์•„๋‹ˆ๋ฉด ์•„๋‹Œ ์ƒํƒœ๋กœ ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ CPU ์Šค์ผ€์ค„๋Ÿฌ๋กœ๋ถ€ํ„ฐ CPU ์†Œ์œ ๊ถŒ์ด ๋„˜์–ด์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ด๋‹ค. ์ด๋•Œ CPU ์†Œ์œ ๊ถŒ์„ ๋ฐ›์•„ ์‹คํ–‰ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋””์ŠคํŒจ์น˜(dispatch)๋ผ ํ•œ๋‹ค.

์‹คํ–‰(running)

CPU ์†Œ์œ ๊ถŒ๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

๋Œ€๊ธฐ(wait)

์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ดํ›„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฐจ๋‹จ๋œ ์ƒํƒœ์ด๋‹ค. I/O ๋””๋ฐ”์ด์Šค์— ์˜ํ•œ ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ข…๋ฃŒ(terminated)

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