flow-vector
article thumbnail
๐Ÿ’ก "์šด์˜์ฒด์ œ : ์•„์ฃผ ์‰ฌ์šด ์„ธ๊ฐ€์ง€ ์ด์•ผ๊ธฐ"๋ฅผ ์ฝ์œผ๋ฉด์„œ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
      ์ดํ™”์—ฌ๋Œ€ ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜์˜ ์šด์˜์ฒด์ œ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋ณต์Šต ์ฐจ์›์—์„œ ์ฑ… ํ•œ๊ถŒ์„ ์™„๋…ํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.
      ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

1. fork()

  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์‹œ์Šคํ…œ์ฝœ
  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๋ณต์‚ฌํ•˜์—ฌ ๊ฐ€์ง€๊ฒŒ ๋˜์ง€๋งŒ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€๋Š” ๋ณ„๋„์˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์ด๋‹ค.
  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์†๋ฐ›๋Š” ๊ฒƒ
    • file descriptor
    • ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ์„ค์ •
    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜

2. exec()

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

3. wait()

  • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ์ฝœ
  • wait() ์‹œ์Šคํ…œ์ฝœ์ด ํ˜ธ์ถœ๋˜๋ฉด ์ž์‹ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ ๋  ๋•Œ ๊นŒ์ง€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ์˜ ์‹คํ–‰์„ ์ค‘์ง€ ์‹œํ‚จ๋‹ค. ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด wait() ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•˜๊ณ  ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰ ๋œ๋‹ค.
  • ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค๊ฐ€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
    • ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ง‰์•„์คŒ
์ข€๋น„ ํ”„๋กœ์„ธ์Šค
- ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ ์ปค๋„์˜ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ์ธ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์—๋งŒ ๋‚จ์•„ ์žˆ๋Š” ์ƒํƒœ
- wait()ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์—์„œ ์ œ๊ฑฐํ•จ

4. ์™œ fork() ํ›„ exec() ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์„๊นŒ?

  • UNIX์—์„œ ์‰˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” fork() ์™€ exec()๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋Š”๋ฐ, exec()๋ฅผ ์‹คํ–‰ ํ•˜๊ธฐ์ „ ์‹คํ–‰ ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ๊ฐ€์žฅ ์‰ฌ์šด ์˜ˆ๋กœ๋Š” ๋ฆฌ๋‹ค์ด๋ ‰์…˜, ํŒŒ์ดํ”„์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ์ž…์ถœ๋ ฅ ๋ณ€๊ฒฝ์ด ์žˆ๋‹ค.
    • ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œํ‚ค๊ธฐ์ „์— ์ž…์ถœ๋ ฅ ๋ณ€๊ฒฝ์„ ๋จผ์ € ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    •  
echo hello | grep "h" > out
// echo ํ”„๋กœ์„ธ์Šค๋Š” hello๋ฅผ ํŒŒ์ดํ”„์— ์ถœ๋ ฅํ•ด์•ผํ•จ
// grep ํ”„๋กœ์„ธ์Šค๋Š” ํŒŒ์ดํ”„๋กœ ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  out์ด๋ผ๋Š” ํŒŒ์ผ์— ์ถœ๋ ฅํ•ด์•ผํ•จ

์ฐธ๊ณ  ์ž๋ฃŒ

https://stackoverflow.com/questions/4880555/what-is-the-linux-process-table-what-does-it-consist-of

profile

flow-vector

@flow-vector

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!