wanna be dev ๐Ÿง‘โ€๐Ÿ’ป

Cool ํ•˜๊ณ  Sickํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€ uzun์ž…๋‹ˆ๋‹ค

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Operating System

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค(Process)๋ž€?

Kick_snare 2022. 4. 9. 23:28
728x90

๐Ÿค” ํ”„๋กœ์„ธ์Šค Process ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ธ์Šคํ„ด์Šค์ด๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค์˜ ๊ด€๊ณ„๋Š” ๋งˆ์น˜ ์ž๋ฐ”์˜ Class - Object ๊ฐœ๋…๊ณผ ๋น„์Šทํ•˜๋‹ค.
    • Class๊ฐ€ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฐ™์ด ์งœ์•ผ์ง„ ํ‹€์ด๋ฉฐ, Object๋Š” ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์ด ๊ทธ class๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์˜ ๊ฒƒ์ด๋‹ค.
  • Protection์˜ ๊ธฐ๋ณธ๋‹จ์œ„์ด๋‹ค. ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋‚˜๋ˆ„๊ฒŒ ๋œ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค๋Š” process ID, ๊ณ ์œ ์˜ PID๋ฅผ ๊ฐ€์ง€๋ฉฐ ์ด ๊ฐ’์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋ฉด?

ํ•˜๋“œ๋””์Šคํฌ ๋“ฑ์— ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๊ฒŒ ๋œ๋‹ค. ์œ„ ๊ทธ๋ฆผ์€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋งต (์ƒํƒœ)๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ ์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

๐Ÿ’ก ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ• ๋•Œ์— ์ปดํ“จํ„ฐ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค.

1. ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ๋”ฉ๋œ๋‹ค

ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ ๊ณต๊ฐ„์— ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํฌ๋งท์œผ๋กœ ์กด์žฌํ•˜๊ณ  ์žˆ๋‹คOS๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒŒ์œผ๋ฅด๊ฒŒ lazily ํ•˜๊ฒŒ ๋ถˆ๋Ÿฌ์˜จ๋‹ค (ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋™์ ์œผ๋กœ ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์กฐ๊ฐ์„ ๋ถˆ๋Ÿฌ๋“ค์ธ๋‹ค๋Š” ๋œป)

2. ํ”„๋กœ๊ทธ๋žจ์˜ ๋Ÿฐํƒ€์ž„ ์Šคํƒ stack์ด ํ• ๋‹น๋œ๋‹ค

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

main() ํ•จ์ˆ˜์˜ argc ์™€ argv ๋ฐฐ์—ด๋“ฑ์ด ์Šคํƒ์— ์ €์žฅ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค

3. ํ”„๋กœ๊ทธ๋žจ์˜ ํž™ heap์ด ์ƒ์„ฑ๋œ๋‹ค

ํž™์€ ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค

malloc()๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ๋™์ ํ• ๋‹น์„ ์š”์ฒญํ•˜๊ณ , free()์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ํ• ๋‹น ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค

4. OS๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ๋“ค์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค

์ž…์ถœ๋ ฅ IO ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” 3๊ฐ€์ง€ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ file descriptor๋“ค์„ ์„ค์ •ํ•œ๋‹ค. (stdinp, stdout, stderr) ๊ทธ๋ฆฌ๊ณ  main() ์ด๋ผ๋Š” ์‹œ์ž‘์ ์—์„œ ๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค

๐Ÿ’ก ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ

ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.

  1. Running
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋กœ์„ธ์„œ์— ์˜ํ•˜์—ฌ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ
  2. Ready
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ์–ด๋– ํ•œ ์ด์œ ๋กœ ์ธํ•ด OS๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ
  3. Blocked
    • ์–ด๋– ํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ
    • ํ”„๋กœ์ƒˆ์Šค๊ฐ€ I/O ์š”์ฒญ์„ ๋””์Šคํฌ๋กœ ๋ณด๋ƒˆ์„๋•Œ, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก blocked ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค

๐Ÿ’ก ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

1. Normal exit

return ๋ฌธ์— ์˜ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ. ์ž์›์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋ฏ€๋กœ voluntaryํ•˜๋‹ค.

2. Error exit

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ return ๋ฌธ์— ์˜ํ•˜์—ฌ ์ข…๋ฃŒ๋˜์ง€๋งŒ, ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด -1 ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์—๋Ÿฌ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

3. Fatal error

Segmentation fault, protection fault ๋˜๋Š” ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ๋“ฑ์˜ ์ด์œ ๋กœ ๊ฐ•์ œ ์ข…๋ฃŒ ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ๋‹น์—ฐํžˆ involuntaryํ•˜๋‹ค.

4. Killed by another process

์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค(์‹ ํ˜ธ)๋กœ ์ธํ•ด ์ข…๋ฃŒ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.์˜ˆ๋กœ ํ„ฐ๋ฏธ๋„์—์„œ Ctrl + C ์™€ ๊ฐ™์ด ์ข…๋ฃŒ ์‹œ๊ทธ๋„์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ, ์ ์œ ํ•˜๊ณ  ์žˆ๋˜ ์ž์›๋“ฑ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์•„ Zombie ํ”„๋กœ์„ธ์Šค๋กœ ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐ ๋˜ํ•œ ์กด์žฌํ•œ๋‹ค.

๐Ÿ’ก ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌํ˜„

์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์šด์˜์ฒด์ œ์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ง‘ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ Process Control Block (PCB) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

CPU ๋ ˆ์ง€์Šคํ„ฐ, PID, PPID, ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน, ์šฐ์„ ์ˆœ์œ„, CPU ์Šค์ผ€์ค„๋ง์ •๋ณด, IO ์ƒํƒœ๋“ฑ๋“ฑ ์ด ๋“ค์–ด๊ฐ„๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” task_struct ์˜ ๊ตฌ์กฐ์ฒด์— ์ด๋Ÿฌํ•œ ์ •๋ณด๋“ค์ด ์ €์žฅ๋œ๋‹ค.

728x90