๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ’ป Computer Science/os

[OS] ํ”„๋กœ์„ธ์Šค(Process)์™€ ์Šค๋ ˆ๋“œ(Thread)

by ๋ฐ”์ฟ„๋ฆฌ 2022. 7. 3.

์šด์˜์ฒด์ œ์˜ ๊ธฐ๋ณธ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ, ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…๊ณผ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

โœ… Program

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

 

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์ €์žฅ์žฅ์น˜์— ์ €์žฅ์€ ๋˜์–ด ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์˜ฌ๋ผ๊ฐ€ ์žˆ์ง€ ์•Š์€?

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

 

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๊ณ , ์‹คํ–‰๋œ ํ”„๋กœ๊ทธ๋žจ์„ ํ”„๋กœ์„ธ์Šค(Process)๋ผ๊ณ  ํ•œ๋‹ค.

 

โœ… Process

 ยท ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น ๋ฐ›๋Š” / ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋‹จ์œ„

  โ†’ ํ• ๋‹น๋ฐ›๋Š” ์‹œ์Šคํ…œ ์ž์›์˜ ์˜ˆ : CPU ์‹œ๊ฐ„, ์šด์˜๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„, Code/Data/Stack/Heap์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

 ยท Processer(์ฒ˜๋ฆฌ๊ธฐ, CPU)์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์—…(Job), ํ…Œ์Šคํฌ(Task)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 ยท ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค ๋‹น ์ตœ์†Œ 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

โœ… Thread

 ยท ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํ๋ฆ„์˜ ๋‹จ์œ„

 ยท ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„

 ยท ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๊ฐ๊ฐ Stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น๋ฐ›๊ณ  Code, Data, Heap ์˜์—ญ์€ ๊ณต์œ ํ•œ๋‹ค.

 


๐Ÿ” Process ์™€ Thread ์˜ ์ž‘๋™ ๋ฐฉ์‹

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ์˜์—ญ(Code, Data, Stack, Heap์˜ ๊ตฌ์กฐ)๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

1๏ธโƒฃ Code

์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ ๋ฐ ๋งคํฌ๋กœ ์ƒ์ˆ˜๊ฐ€ ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„.

CPU๋Š” ์ฝ”๋“œ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

2๏ธโƒฃ Data

์ฝ”๋“œ์—์„œ ์„ ์–ธํ•œ ์ „์—ญ๋ณ€์ˆ˜, ์ •์ (Static) ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

 

3๏ธโƒฃ Stack

์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธ๋œ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๊ฐ’ ๋“ฑ์ด ์ €์žฅ๋˜๊ณ  ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๊ธฐ๋ก๋˜๋Š” ๊ณต๊ฐ„

 

4๏ธโƒฃ Heap

๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ด์™ธ์— ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„(Free Space)

์ด ๊ณต๊ฐ„์€ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ณต๊ฐ„์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์šด์˜์ฒด์ œ๋กœ ๋ฐ˜๋‚ฉ๋œ๋‹ค.

 

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋‚ด์—์„œ Stack ํ˜•์‹์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ๋”ฐ๋กœ ํ• ๋‹น๋ฐ›๊ณ , ๋‚˜๋จธ์ง€ Code/Data/Heap ํ˜•์‹์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๋Š” ๋ณ„๋„์˜ Stack์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ Heap ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„œ๋กœ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ํ”„๋กœ์„ธ์Šค์˜ Code/Data/Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜๋Š” ๋ชจ์Šต์ด๋‹ค

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

 

๐Ÿ“Œ ๊ฒฐ๋ก 

 ยท ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•˜๊ณ , ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•œ๋‹ค.

 ยท ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๊ฐœ๋ณ„ ์Šคํƒ์„ ๊ฐ€์ง€๊ณ  ํ”„๋กœ์„ธ์Šค์˜ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค.

 

 

 

References

 ยท https://www.jiniaslog.co.kr/article/view?articleId=152

 ยท https://velog.io/@raejoonee/ํ”„๋กœ์„ธ์Šค์™€-์Šค๋ ˆ๋“œ์˜-์ฐจ์ด

 ยท https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html