CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

1eehyunji 2023. 8. 28. 19:08

์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค์— ์ ์ ˆํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š”๋ฐ, ๋‹ค์Œ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.

์œ„์—์„œ๋ถ€ํ„ฐ ์Šคํƒ, ํž™, ๋ฐ์ดํ„ฐ(BSS, Data) ์˜์—ญ, ์ฝ”๋“œ ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. 

์Šคํƒ์€ ์ฃผ์†Œ๊ฐ€ ์œ„์ชฝ๋ถ€ํ„ฐ ํ• ๋‹น๋˜๊ณ , ํž™์€ ์•„๋ž˜์ชฝ๋ถ€ํ„ฐ ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. 

 

์Šคํƒ๊ณผ ํž™

์Šคํƒ๊ณผ ํž™์€ ๋™์  ํ• ๋‹น์ด ๋˜๋ฉฐ, ๋™์  ํ• ๋‹น์ด๋ž€ ๋Ÿฐํƒ€์ž„ ๋‹จ๊ณ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

์Šคํƒ์—๋Š” ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์— ์˜ํ•ด ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์ค„์–ด๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋  ๋•Œ์˜ ํ™˜๊ฒฝ ๋“ฑ ํŠน์ • ์ •๋ณด๊ฐ€ ์Šคํƒ์— ์ €์žฅ๋œ๋‹ค. 

๋˜, ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šคํƒ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋‚ด์˜ ๋ณ€์ˆ˜ ์ง‘ํ•ฉ์ด ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š”๋‹ค. 

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

 

ํž™์€ ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ๋‹ด๋Š”๋‹ค. malloc(), free() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์ ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ํž™ ์˜์—ญ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ vector๊ฐ€ ์žˆ๋‹ค. 

 

๋ฐ์ดํ„ฐ ์˜์—ญ๊ณผ ์ฝ”๋“œ ์˜์—ญ

๋ฐ์ดํ„ฐ ์˜์—ญ๊ณผ ์ฝ”๋“œ ์˜์—ญ์€ ์ •์  ํ• ๋‹น์ด ๋˜๋ฉฐ, ์ •์  ํ• ๋‹น์ด๋ž€ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. 

 

๋ฐ์ดํ„ฐ ์˜์—ญ์€ BSS, Data, code/text ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด์„œ ์ €์žฅ๋œ๋‹ค. 

BSS(Block Started by Symbol) ์˜์—ญ์€ ์ „์—ญ ๋ณ€์ˆ˜ ๋˜๋Š” static, const๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™”๊ฐ€ ์•„์˜ˆ ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋“ค์ด ์ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค. 

Data ์˜์—ญ์€ ์ „์—ญ ๋ณ€์ˆ˜ ๋˜๋Š” static, const๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ  0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ณ€์ˆ˜๊ฐ€ ์ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค. 

code/text ์˜์—ญ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.