C Programming Language/C

CPU ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ

567Rabbit 2024. 5. 31. 14:42

(ํ˜•์‹) ๋ณ€์ˆ˜ = ๋ฐ์ดํ„ฐ
=์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์€ ๋ณ€์ˆ˜, ์˜ค๋ฅธ์ชฝ์€ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.

count = 3

 

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

 

  • ๋ฐ์ดํ„ฐ (Data) ์˜์—ญ:
    • ์ฃผ๋ฐฉ์˜ "์ €์žฅ ๊ณต๊ฐ„"๊ณผ ๊ฐ™๋‹ค
    • ๋ชจ๋“  ์žฌ๋ฃŒ(์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜)๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ํ•  ๋•Œ ์žฌ๋ฃŒ๋ฅผ ๊บผ๋‚ด๋†“๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ณต๊ฐ„
    • ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ ˆ์‹œํ”ผ์— ๋”ฐ๋ผ ์ด๋ฏธ ์ค€๋น„๋œ ์žฌ๋ฃŒ(์ดˆ๊ธฐํ™”๋œ ๋ณ€์ˆ˜)์ด๊ณ , ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” ์•„์ง ๊บผ๋‚ด์ง€ ์•Š์€ ์žฌ๋ฃŒ(์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜)์ด๋‹ค
    • ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ด๋‹ค
    • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ํ• ๋‹น๋˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค
    • ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์™€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ(BSS)๋กœ ๋‚˜๋‰œ๋‹ค

 

  • ์Šคํƒ (Stack) ์˜์—ญ:
    • ์ฃผ๋ฐฉ์˜ "์ž‘์—…๋Œ€"๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค
    • ์š”๋ฆฌ์‚ฌ๊ฐ€ ์š”๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ(์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜)๋“ค์ด ์—ฌ๊ธฐ ๋†“์ธ๋‹ค
    • ์ž‘์—…๋Œ€๋Š” ์š”๋ฆฌํ•  ๋•Œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋„๊ตฌ๋ฅผ ๊บผ๋‚ด๊ณ , ์š”๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ ์ œ์ž๋ฆฌ์— ๋Œ๋ ค๋†“๋Š”๋‹ค
    • ๋„๊ตฌ๋ฅผ ์“ธ ๋•Œ๋งˆ๋‹ค ์Œ“์•„๋‘๊ณ (ํ• ๋‹น), ๋‹ค ์“ฐ๋ฉด ์น˜์šฐ๋Š”(ํ•ด์ œ) ๋ฐฉ์‹์ด๋‹ค
    • ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ์ฃผ์†Œ ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
    • LIFO(Last In, First Out) ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ํ• ๋‹น๋˜๊ณ  ํ•จ์ˆ˜ ์ข…๋ฃŒ ์‹œ ํ•ด์ œ๋œ๋‹ค.
    • ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€์— ๋”ฐ๋ผ ์Šคํƒ์„ ๊ด€๋ฆฌํ•œ๋‹ค
    • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค
    • java์˜ ๊ฒฝ์šฐ main ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ์Šคํƒ ์˜์—ญ(์ž‘์—… ์˜์—ญ)์—์„œ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

  • ํž™ (Heap) ์˜์—ญ:
    • ์ฃผ๋ฐฉ์˜ "๋ƒ‰์žฅ๊ณ "๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค
    • ํ•„์š”ํ•œ ์žฌ๋ฃŒ(๋™์  ๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ์š”๋ฆฌ ์ค‘๊ฐ„์— ๊บผ๋‚ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
    • ๋ƒ‰์žฅ๊ณ ์—์„œ ์žฌ๋ฃŒ๋ฅผ ๊บผ๋‚ผ ๋•Œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊บผ๋‚ด๊ณ , ๋‹ค ์“ฐ๊ณ  ๋‚˜๋ฉด ๋‹ค์‹œ ๋ƒ‰์žฅ๊ณ ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.
    • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์žฌ๋ฃŒ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•ด์„œ, ์ž˜๋ชป ๊ด€๋ฆฌํ•˜๋ฉด ์žฌ๋ฃŒ๊ฐ€ ์ƒํ•˜๊ฑฐ๋‚˜(๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜) ๋ƒ‰์žฅ๊ณ ๊ฐ€ ๊ฝ‰ ์ฐจ์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ์ด๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ํ•„์š”ํ•œ ์‹œ์ ์— malloc, calloc, realloc ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ , free ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์ œํ•œ๋‹ค.
    • ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ, ์ž˜๋ชป๋œ ๊ด€๋ฆฌ(์˜ˆ: ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ์ด์ค‘ ํ•ด์ œ ๋“ฑ)๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค.
    • C์–ธ์–ด๋Š” ์ง์ ‘ ๊ฐœ๋ฐœ์ž๊ฐ€ garbage๋ฅผ ์‚ญ์ œํ•˜๋ฉฐ, java์—์„œ๋Š” garbage collector๋ผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์‚ญ์ œํ•œ๋‹ค.