thread 2

[JAVA] JAVA Thread(์Šค๋ ˆ๋“œ) ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ

Thread๋ž€? ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„ ์šด์˜์ฒด์ œ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…(Task) Thread = Task(์ž‘์—…) JVM์— ์˜ํ•ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  main() ์•ˆ์˜ ์‹คํ–‰๋ฌธ๋“ค์ด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ main() ์ด์™ธ์˜ ๋˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ Runnable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์ž‘์—… ์‹œ, ๊ฐ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ์ฒ˜๋ฆฌ ๊ณผ์ •์˜ ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ๋Š” ์ •๋ณด ๊ตํ™˜ ๋ถˆ๊ฐ€๋Šฅ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ(Multi Thread)๋ž€? ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‹คํ–‰์‹œํ‚ค๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋ฒ• ์žฅ์  ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ์ž์› ์†Œ๋ชจ ์ค„์–ด๋“ฌ ๋™์‹œ ์ž‘์—…์ด ๊ฐ€๋Šฅ ๋‹จ์  ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ์— ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ ๋กœ์ง์˜ ๋ณต์žก๋„..

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

ํ”„๋กœ์„ธ์Šค(Process) ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ์— ์˜ํ•ด ์—ฐ์†์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์šด์˜์ฒด์ œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์œ„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉฐ ์šด์˜์ฒด์ œ์— ์˜ํ•ด CPU, ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ํ• ๋‹น๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ Code, Heap, Data, Stack์„ ํ• ๋‹น๋ฐ›์Šต๋‹ˆ๋‹ค. Code : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ Data : ์ „์—ญ๋ณ€์ˆ˜, ์ •์ ๋ณ€์ˆ˜, ๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ์ •์ ์ธ ๋ฐ์ดํ„ฐ Stack : ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด(์‹คํ–‰์ •๋ณด, ์ง€์—ญ๋ณ€์ˆ˜, ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ)์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํŒŒ์ผ ํƒ€์ž„์— Stack์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. Heap : ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ex) Array๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ..

Computer Science/OS 2022.08.13
๋ฐ˜์‘ํ˜•