Computer Science/๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์•Œ์•„์•ผํ•˜๋Š” ๊ธฐ๋ณธ์ง€์‹

[์šด์˜์ฒด์ œ] Process์™€ thread์˜ ์ฐจ์ด (program vs process vs thread)

_cactus 2022. 4. 1. 18:41
๋ฐ˜์‘ํ˜•

๐Ÿ“Program

- ์ฝ”๋“œ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ง‘ํ•ฉ์ฒด

- ์˜ˆ์‹œ) ํฌ๋กฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ ํ•  ์ˆ˜ ์žˆ์Œ

 

 

๐Ÿ“Process

- ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ๊ทธ๊ฒŒ process๊ฐ€ ๋จ!! (์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ ๋•Œ๋ฌธ์— job, task๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ)

- OS๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„ (process๋Š” ๋…๋ฆฝ๋œ memory์˜์—ญ์„ ๊ฐ์ž ํ• ๋‹น๋ฐ›์Œ)

 

์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค๋ผ... 
์‹œ์Šคํ…œ ์ž์›์ด ๋ญ˜๊นŒ?
memory์˜์—ญ์€?

์šฐ์„  ๊ทธ๋ฆผ์œผ๋กœ process๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋ณด์ž.

 

process์•ˆ์— code, data, stack, heap์ด ๋“ค์–ด์žˆ๋‹ค.

์–˜๋„ค๊ฐ€ ๋ฐ”๋กœ memory ์˜์—ญ..!

 

๐Ÿ“Memory ๊ตฌ์กฐ 

1. code

  ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

2. data

  ๋ฐ์ดํ„ฐ๋Š” *์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜(static), ๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ

3. stack

   *์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, return๊ฐ’ ๋“ฑ ์ž ์‹œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ

4. heap

   memory๋ฅผ ๋™์ ํ• ๋‹นํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์˜์—ญ. ๋™์ ๋ฐ์ดํ„ฐ ์˜์—ญ

 

*์ง€์—ญ๋ณ€์ˆ˜ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ
*์ „์—ญ๋ณ€์ˆ˜ : ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์„ ์–ธ

 

 

๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๋ฉด, program์„ ์‹คํ–‰์‹œํ‚ค๋ฉด process๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , process๋Š” ๊ทธ ์•ˆ์— memory๊ตฌ์กฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— process๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ OS๋Š” ํ•ด๋‹น memory์˜์—ญ, ์ฆ‰ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹นํ•ด์ค€๋‹ค!

์ถ”๊ฐ€๋กœ process๋Š” ๋…๋ฆฝ๋œ memory์˜์—ญ์„ ๊ฐ์ž ํ• ๋‹น๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—

→ process๋ผ๋ฆฌ๋Š” ์„œ๋กœ์˜ ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ ˆ๋Œ€ ์ ‘๊ทผํ•  ์ˆ˜ X !! ๋งŒ์•ฝ A process๊ฐ€ B process ์ž์›์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด, IPC(ํ”„๋กœ์„ธ์Šค๊ฐ„ ํ†ต์‹ ) (ex : socket, pipe ๋“ฑ) ์„ ์ด์šฉํ•ด์•ผํ•จ

 

๐Ÿ“Thread

- process๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ๋ฆ„์˜ ๋‹จ์œ„

- ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด process๊ฐ€ ๋˜๊ณ , ๊ทธ process์•ˆ์— ์–ด๋–ค ํ๋ฆ„์ด ์‹คํ–‰๋˜๋ฉด ๊ทธ๊ฒŒ thread!

 

๋ฐ”๋กœ ์œ„์—์„œ ๋งํ–ˆ์ง€๋งŒ, thread๋Š” process๋‚ด์—์„œ ๋™์ž‘๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— memory์˜์—ญ์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•œ๋‹ค!!

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์™ผ์ชฝ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ code, data, heap์˜์—ญ์€ ๊ณต์œ ํ•˜๊ณ  stack์˜์—ญ๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

⇒ ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— thread๋ผ๋ฆฌ๋Š” heap์˜์—ญ์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ž์›์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ but, stack์˜์—ญ์€ ์ ‘๊ทผ ๋ถˆ๊ฐ€

 

 

 

 

 

๊ทผ๋ฐ ์™œ stack๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋Š” ๊ฑธ๊นŒ..??
๋ฐ˜์‘ํ˜•

 

 

โ“ ์™œ stack๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋Š”๊ฐ€

- LIFO๋ผ๋Š” stack์˜ ํŠน์„ฑ ๋•Œ๋ฌธ.

- ๋งŒ์•ฝ stack์„ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด.. stack์€ ์Œ“์ด๋ฉด ์œ„์—์„œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ process๊ฐ€ ์„ž์ธ์ฑ„๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜ค๊ฒŒ ๋˜๋ฏ€๋กœ(?) ๋” ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— thread ์‚ฌ์ด์˜ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด stack์„ ๊ตฌ๋ถ„

 (๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๊ฐ๊ฐ์˜ ์‹คํ–‰ ์‹œํ€€์Šค/์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ๋ฐ˜ํ™˜๋  ๋•Œ ๊ฐ๊ฐ์˜ *PC๋ฅผ push / pop ํ•ด์•ผ ํ•จ)

*PC : Program counter

 

- stack๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ž, ๋˜๋Œ์•„๊ฐˆ ์ฃผ์†Œ ๊ฐ’ ๋ฐ ํ•จ์ˆ˜๋‚ด์—์„œ ์„ ์–ธํ•˜๋Š” ๋ณ€์ˆ˜ ๋“ฑ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„.

   ๋”ฐ๋ผ์„œ, stack ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ๋…๋ฆฝ์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , ์ด๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

๐Ÿ“Program Counter (PC)

- CPU ๋ ˆ์ง€์Šคํ„ฐ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜

- ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ

- thread์— ๋…๋ฆฝ์ ์œผ๋กœ PC๊ฐ€ ํ• ๋‹น๋จ → ์—ฌ๋Ÿฌ thread๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ ๊ฐ thread์˜ PC๋Š” ๋ช…๋ น์–ด์˜ ์–ด๋””๊นŒ์ง€ ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ์ €์žฅํ•จ!

 

 

์ด์ƒ program, process, thread์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.
๋‹ค์Œ์€ multiprocessing๊ณผ multithreading์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!!
๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡
 

[์šด์˜์ฒด์ œ] Multiprocessing๊ณผ Multithreading์˜ ์ฐจ์ดโ€ผ๏ธ

๐Ÿ“MultiProcessing - ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ๊ฐœ์˜ process๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ process๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ž‘์—…(task)์”ฉ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ ์˜ˆ์‹œ) ํฌ๋กฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ํฌ๋กฌ ์ฐฝ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋„์šด๋‹ค๊ณ 

mac-user-guide.tistory.com

 

 

์ „์— ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋„ ์ž์„ธํ•˜๊ฒŒ ์“ด ๊ธ€์ด ์žˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์„ ํ™•์ธํ•ด๋ณด์„ธ์š”..! ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡
 

[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ : program์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ์šด์˜์ฒด์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰์‹œํ‚จ program์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์คŒ. ์ฆ‰ os๋Š” program์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณต ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ stack, heap,

mac-user-guide.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•