[Java] Process vs Thread

Yumya's recordยท2025๋…„ 4์›” 14์ผ

SKALA

๋ชฉ๋ก ๋ณด๊ธฐ
19/25
post-thumbnail

๐Ÿฆˆ Process vs Thread ์ •๋ฆฌ ๐Ÿฆˆ

Process

์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰
  • ์šด์˜์ฒด์ œ ์•ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ
  • ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ์ƒํƒœ

์ž๋ฐ”๋กœ ๋น„์œ ํ•˜์ž๋ฉด ํด๋ž˜์Šค = ํ”„๋กœ๊ทธ๋žจ, ์ธ์Šคํ„ด์Šค = ํ”„๋กœ์„ธ์Šค

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ

์ฝ”๋“œ ์˜์—ญ

์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ถ€๋ถ„

  • Thread๋“ค์ด ๊ฐ™์€ ์ฝ”๋“œ ์˜์—ญ์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ ์ „์šฉ
  • Thread ๊ฐ„ ์ด ์˜์—ญ์— ๋Œ€ํ•œ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ

๋ฐ์ดํ„ฐ ์˜์—ญ

์ „์—ญ ๋ณ€์ˆ˜ ๋ฐ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ถ€๋ถ„

  • Thread๋“ค์ด ๊ฐ™์€ Data ์˜์—ญ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ ์ „์šฉ
  • Thread ๊ฐ„ ์ด ์˜์—ญ์— ๋Œ€ํ•œ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ
  • ์—ฌ๋Ÿฌ Thread๊ฐ€ ๋™์‹œ์— ์“ฐ๋Š” ๊ฒฝ์šฐ ๋™๊ธฐํ™” ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ

Heap ์˜์—ญ

๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

  • Thread ๊ฐ„ ๊ฐ™์€ Heap ์˜์—ญ ๊ณต์œ 
  • ์—ฌ๋Ÿฌ Thread๊ฐ€ ๋™์‹œ์— ์“ฐ๋Š” ๊ฒฝ์šฐ ๋™๊ธฐํ™” ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ
    -> ์ ์ ˆํ•œ ๋™๊ธฐํ™” ๊ธฐ๋ฒ• ์‚ฌ์šฉํ•ด์•ผ ํ•จ

Stack ์˜์—ญ

๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ž„์‹œ๋กœ ์ €์žฅ
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋ฉด ํ•ด๋‹น ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ
  • Thread ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ
  • Thread ๊ฐ„ ๊ณต์œ  X
  • ๋™๊ธฐํ™” ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์—†์Œ

Multi Process

์šด์˜์ฒด์ œ์—์„œ ํ•˜๋‚˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

  • ๋ณดํ†ต ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋˜์ง€๋งŒ, ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ
  • ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์„œ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์กฐ
  • ํ•œ ํ”„๋กœ์„ธ์Šค(๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค)์˜ ์‹คํ–‰ ๋„์ค‘ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ์Šคํ…œ ์ฝœ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ(์ž์‹ ํ”„๋กœ์„ธ์Šค)
  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ ์œ ํ•œ PID๋ฅผ ๊ฐ€์ง
  • ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ํ†ตํ•ด ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ œ์–ด
    -> ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹ 
  • ๋ถ€๋ชจ/์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰, ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ ธ ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—… ์‹คํ–‰

ex) ์ธํ„ฐ๋„ท Tab ์ฐฝ
Tab ๋งˆ๋‹ค ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ Tab ์ฐฝ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ Tab์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ง• ๊ฐ€๋Šฅ

์ฐธ๊ณ -๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค


Program

์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ

  • ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ค˜์•ผ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„ ํŒŒ์ผ์€ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๊ณ , ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ด

Instance

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์–ด๋–ค ํด๋ž˜์Šค์— ์†ํ•˜๋Š” ๊ฐ ๊ฐ์ฒด
ex) ๋ถ•์–ด๋นต ํŒฅ๋ถ•์–ด๋นต = new ๋ถ•์–ด๋นต();
=> ํŒฅ๋ถ•์–ด๋นต์€ ๋ถ•์–ด๋นต์ด๋ผ๋Š” ํด๋ž˜์Šค์— ์†ํ•˜๋Š” ๊ฐ์ฒด, ์ฆ‰ ์ธ์Šคํ„ด์Šค

์ฐธ๊ณ -์ธ์Šคํ„ด์Šค


Thread

ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„

  • ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จ
  • ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ณต์œ 
  • ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋‹จ์ˆœํ•ด ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ๋‹จ์ˆœ, ๊ฐ€๋ฒผ์›€

Java์—์„œ Thread๋Š” Multi-Thread๋ฅผ ์ง€์›
-> ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ํ•œ ๊ฐœ ์ด์ƒ์˜ Thread๋ฅผ ์ง€์›ํ•˜๋Š” ๊ตฌ์กฐ
=> ๋น„๋™๊ธฐ์‹ ๋ฐ ๋ณ‘๋ ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ

  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ : ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, Heap ์˜์—ญ์€ ํ”„๋กœ์„ธ์Šค ์•ˆ์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ 
  • ๊ฐœ๋ณ„ Stack : ๊ฐ Thread๋Š” ์ž์‹ ์˜ Stack์„ ๊ฐ€์ง

Single Thread

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ

  • ์ˆœ์ฐจ ์‹คํ–‰ : ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰
  • ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌ
  • ๋‹ค๋ฅธ ์ž‘์—…์ด ์‹คํ–‰๋˜๊ธฐ ์ „ ํ˜„์žฌ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด์•ผ ํ•จ
  • ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋‚ฎ์•„์ง

Multi Thread

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ

  • ๋ณ‘ํ–‰ ์‹คํ–‰ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰
  • ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • ์Šค๋ ˆ๋“œ ๊ฐ„ ๊ฒฝ์Ÿ์œผ๋กœ ์ธํ•ด ์ž์› ๊ณต์œ  ๋ฐ ๋™๊ธฐํ™” ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

์ฐธ๊ณ -์Šค๋ ˆ๋“œ
์ฐธ๊ณ -์Šค๋ ˆ๋“œvsํ”„๋กœ์„ธ์Šค

Process vs Thread

๋‚ด์šฉProcessThread
์ •์˜์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šคํ”„๋กœ์„ธ์Šค ๋‚ด ์‹คํ–‰ ์ž‘์—…์˜ ๋‹จ์œ„
๋ฉ”๋ชจ๋ฆฌ์ฝ”๋“œ ์˜์—ญ, ๋ฐ์ดํ„ฐ ์˜์—ญ, Heap ์˜์—ญ, Stack ์˜์—ญProcess์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ (์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, Heap)ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌ(Stack)
์‹คํ–‰ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์œผ๋กœ ์‹คํ–‰๋จํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰
profile
๐Ÿ€ ูฉ(หŠแ—œห‹*)ูˆ ๐Ÿ€

0๊ฐœ์˜ ๋Œ“๊ธ€