๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์šด์˜์ฒด์ œ20

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ”„๋ ˆ์ž„ ํ• ๋‹น ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์™€ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)์™€ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•(Paging) ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์•ž์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ƒ๊ฐํ•˜ ground90.tistory.com ์š”๊ตฌ ํŽ˜์ด์ง• ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ ํ”„๋กœ์„ธ์Šค๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ํ•œ์ •๋˜์–ด ์žˆ๊ณ  ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํŽ˜์ด์ง€ ๊ต์ฒด๋Š” ํŽ˜์ด์ง€ ์ธ/์•„์›ƒ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹คํ–‰.. 2023. 11. 11.
๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)์™€ ํŽ˜์ด์ง• ๊ธฐ๋ฒ•(Paging) ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์•ž์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ์™€ ์™ธ๋ถ€ ๋‹จํŽธํ™”์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์€ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์น˜๋˜๋Š” ์ƒํ™ฉ์ด์ฃ . ํ•˜์ง€๋งŒ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ground90.tistory.com ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ๋ž€? ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ(Virtual Memory)๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ๊ธฐ์–ต์žฅ์น˜(RAM)์˜ ํ™•์žฅ๋œ ํ˜•ํƒœ๋กœ, ์‹ค์ œ ๋ฌผ๋ฆฌ์ ์ธ RAM๋ณด๋‹ค ํฐ ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ์—๋„ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฃผ๋กœ ์šด์˜ ์ฒด์ œ์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์ฃผ๊ธฐ์–ต์žฅ.. 2023. 11. 7.
์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(Memory Allocation) ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์€ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์น˜๋˜๋Š” ์ƒํ™ฉ์ด์ฃ . ํ•˜์ง€๋งŒ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์—๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์€ ๋ฐ”๋กœ ์ด์–ด์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์—๋Š” ํ˜„์žฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ž„์‹œ๋กœ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ ์ผ๋ถ€๋กœ ์ซ“์•„๋‚ด๊ณ , ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ธด ๋นˆ ๊ณต๊ฐ„์— ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์Šค์™€ํ•‘(Swapping)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด์กฐ๊ธฐ์–ต ์žฅ์น˜์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์žฌํ•˜๋Š” ์ผ๋ถ€ ์˜์—ญ์„ ์Šค์™‘ ์˜์—ญ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ.. 2023. 11. 6.
ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ๊ธฐ๋ฒ• ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์‚ฌ์ด์˜ ์ˆ˜ํ–‰ ์‹œ๊ธฐ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ์ž…์žฅ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๊ณ  ์ƒํ˜ธ ๋ฐฐ์ œ(๋™์‹œ์— ์ ‘๊ทผํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ์ž์›์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ ‘๊ทผ)์„ ์›ํ™œํžˆ ์ด๋ฃจ์–ด๋‚ด์•ผ ํ•˜์ฃ . ์ด์™€ ๊ด€๋ จํ•ด์„œ ๊ณต์œ  ์ž์›๊ณผ ์ž„๊ณ„ ์˜์—ญ, ์ƒ์‚ฐ์ž/์†Œ๋น„์ž ๋ฌธ์ œ, ๊ฒฝ์Ÿ ์ƒํƒœ, ์ž„๊ณ„ ์˜์—ญ ๋“ฑ์˜ ๊ฐœ๋…์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…๋“ค์€ ์ด์ „์— ๋‹ค๋ค˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. [C++] 21. ์Šค๋ ˆ๋“œ ๊ฒฝ์Ÿ ์ƒํƒœ(Race condition), ๋ฎคํ…์Šค(mutex), ๋ฐ๋“œ๋ฝ, std::conditional_variable, std::async ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค, std::thread์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. [C++] 20. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ.. 2023. 11. 6.
CPU ์Šค์ผ€์ค„๋ง ๊ฐœ๋…๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ CPU ์Šค์ผ€์ค„๋ง ๊ฐœ๋… CPU ์Šค์ผ€์ค„๋ง์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ณต์œ ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์–ด๋–ค ์ˆœ์„œ๋กœ CPU์— ํ• ๋‹นํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ž‘์—…์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ, ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐœ๋ฐœ๋˜์–ด์™”๊ณ , ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŠน์ • ์ƒํ™ฉ์ด๋‚˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์ ํ•ฉํ•œ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ๊ณต์ •ํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์œผ๋กœ CPU์ž์›์„ ๋ฐฐ๋ถ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CPU ์Šค์ผ€์ค„๋ง์€ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ๊ณผ๋„ ์ง๊ฒฐ๋˜๋Š” ์ค‘๋Œ€ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋ง ํ CPU์ž…์žฅ์—์„œ CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋งŽ์„ ๋•Œ, ๋จผ์ € CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ํ”„๋กœ์„ธ์Šคํ•œํ…Œ CPU์ž์›์„ ํ• ๋‹นํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‹ค๋ฅด.. 2023. 11. 5.
ํ”„๋กœ์„ธ์Šค ๊ณ„์ธต ๊ตฌ์กฐ ํ”„๋กœ์„ธ์Šค ๊ณ„์ธต ๊ตฌ์กฐ ํ”„๋กœ์„ธ์Šค ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์กฐ์œจํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์ข…์ข… ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค(Parent Process): ์šด์˜์ฒด์ œ์—์„œ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ƒˆ๋กœ์šด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ž์›์„ ํ• ๋‹นํ•˜๋ฉฐ, ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ๋™์ž‘์„ ๊ฐ์‹œํ•  ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. 2. ์ž์‹ ํ”„๋กœ์„ธ์Šค(Child Process): ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ์ž์›๊ณผ ๊ถŒํ•œ์„ ์ƒ์†.. 2023. 10. 31.