Skip to content

Latest commit

ย 

History

History
158 lines (105 loc) ยท 7.72 KB

MemoryStructure.md

File metadata and controls

158 lines (105 loc) ยท 7.72 KB

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ..

๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ €์žฅํ•˜๋Š” ์ €์žฅ ๊ณต๊ฐ„์€ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. CPU์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ €์žฅ ๊ณต๊ฐ„์€ ๋ ˆ์ง€์Šคํ„ฐ์ด๊ณ , ๋ ˆ์ง€์Šคํ„ฐ โ†’ CPU ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ โ†’ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ โ†’ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ โ†’ ์™ธ๋ถ€๊ธฐ์–ต์žฅ์น˜ ์ˆœ์œผ๋กœ CPU์™€ ๋ฉ€์–ด์ง„๋‹ค. CPU๋กœ๋ถ€ํ„ฐ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋Ÿ‰์ด ์ปค์ง€๊ณ  ์ ‘๊ทผ ์†๋„๋Š” ๋А๋ ค์ง„๋‹ค.


์ง„์งœ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—.. ROM vs RAM

ROM์€ Read Only RAM์€ Read / Write ๊ฐ€๋Šฅ


์ด์ œ ์ง„์งœ๋กœ ์‹œ์ž‘ํ•จ ..

ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์„ฑ๊ณผ ์‹คํ–‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋œ๋‹ค.

  1. ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
  1. ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋””์Šคํฌ์— ์ €์žฅ
  2. ์‚ฌ์šฉ์ž๊ฐ€ ์šด์˜์ฒด์ œ์— ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์š”์ฒญ
  3. ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด load



๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๊ตฌ์กฐ

_2020-08-02__10 36 08


Code ์˜์—ญ(Text ์˜์—ญ)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ด๋‹ค. ์ฆ‰, ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์˜์—ญ.
    • ์ด ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋œ ํ›„ ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๋Š” ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ Instruction ์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • CPU๋Š” ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ณ  ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค.
  • ์ฝ๊ธฐ ์ „์šฉ
  • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•œ ์˜์—ญ โ† ???????????

Data ์˜์—ญ

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ ๋ณ€์ˆ˜์™€ static ๋ณ€์ˆ˜ ๋“ฑ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์˜์—ญ์ด๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ, ์ „์—ญ ๋ณ€์ˆ˜์™€ static ๋ณ€์ˆ˜๋Š” ๋ฉ”์ธ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ ์˜์—ญ์— ํ• ๋‹น๋œ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ณ  ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์˜์—ญ์€ BSS ์˜์—ญ, Data ์˜์—ญ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.
    • BSS(Block Stated Symbol) ์˜์—ญ
    • Data ์˜์—ญ
      • ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง„ ๋ณ€์ˆ˜๋“ค์ด ์ €์žฅ๋œ๋‹ค.
      • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์ˆ˜์ •, ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ์‚ฌ์‹ค ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ROM์— ์œ„์น˜ํ•˜๋Š”๋ฐ, ์ „์—ญ๋ณ€์ˆ˜์™€ static ๋ณ€์ˆ˜๋ฅผ ROM์— ์ €์žฅํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์‹œ ๋ณ€๊ฒฝ๋œ ๊ฐ’์ด ์ ์šฉ๋˜์ง€ ์•Š๊ณ , ๊ณ„์† ์ดˆ๊ธฐ๊ฐ’๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค. (ROM์€ read only๋‹ˆ๊นŒ!) ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ์˜์—ญ์„ RAM์— ๋ณต์‚ฌํ•ด์„œ ๋Ÿฐํƒ€์ž„ ์‹œ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ..
    • BSS์™€ Data ์˜์—ญ์„ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š”?
      • ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ROM์˜ data ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋“ค๊นŒ์ง€ ROM์— ์ €์žฅ๋˜๋ฉด ํฐ ์‚ฌ์ด์ฆˆ์˜ ROM์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜์—ญ์„ ๋‚˜๋ˆˆ๋‹ค๊ณ  ํ•จ..

Heap ์˜์—ญ

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋™์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์ด๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹น, ํ•ด์ œ๋œ๋‹ค.
  • class, closure์™€ ๊ฐ™์€ ์ฐธ์กฐ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
    • swift์˜ ๊ฒฝ์šฐ ARC๊ฐ€ ์ฐธ์กฐ ํƒ€์ž…์˜ ํ• ๋‹น, ํ•ด์ œ ์‹œ์ ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค
    • Java์˜ ๊ฒฝ์šฐ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ๊ฐ€ ๊ด€๋ฆฌํ•จ
    • C์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹น, ํ•ด์ œ ํ•ด์ค˜์•ผ ํ•จ. (malloc, free?)
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ฎ์€ ์ฃผ์†Œ โ†’ ๋†’์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค.
  • ๋Ÿฐํƒ€์ž„ ์‹œ(= ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘)์— ํž™ ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

Stack ์˜์—ญ

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ๋˜๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • ์ฆ‰, ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ํ• ๋‹น๋˜๋ฉฐ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋œ๋‹ค.
    • ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ •๋„๋กœ ์ƒ๊ฐ
    • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์Šคํƒ์— push ๋˜๊ณ , return ์„ ํ•˜๋ฉด ์Šคํƒ์—์„œ pop
    • ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ๋ถˆํ™•์‹คํ•˜๋‹ค.
    • ์ด๋ ‡๊ฒŒ ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ Stack Frame์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • struct, enum๊ณผ ๊ฐ™์€ ๊ฐ’ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ๋†’์€ ์ฃผ์†Œ โ†’ ๋‚ฎ์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค.
    • ์™œ ์ด๋ ‡๊ฒŒ ํ• ๋‹นํ•˜์ง€??
  • ์ปดํŒŒ์ผ ์‹œ์— ํ• ๋‹น๋  ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.
  • ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ์ œํ•œ๋œ ์Šคํƒ ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ์ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•ด push ํ•  ์ˆ˜ ์—†์Œ!

Stack ์˜์—ญ vs Heap ์˜์—ญ

  • ์Šคํƒ ์˜์—ญ๊ณผ ํž™ ์˜์—ญ์€ ์‚ฌ์‹ค์ƒ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์Šคํƒ ์˜์—ญ์ด ํด ์ˆ˜๋ก ํž™ ์˜์—ญ์ด ์ž‘์•„์ง€๊ณ , ํž™ ์˜์—ญ์ด ํด ์ˆ˜๋ก ์Šคํƒ ์˜์—ญ์ด ์ž‘์•„์ง„๋‹ค.

  • ์Šคํƒ ์˜์—ญ์ด ๋†’์€ ์ฃผ์†Œ โ†’ ๋‚ฎ์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋˜๊ณ , ํž™ ์˜์—ญ์ด ๋‚ฎ์€ ์ฃผ์†Œ โ†’ ๋†’์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์˜์—ญ์ด ์ƒ๋Œ€์˜ ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ์‚ฌํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐ๊ฐ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ, ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ผ๊ณ  ํ•œ๋‹ค.

  • ํ• ๋‹น ์†๋„ ๋น„๊ต

    • ์Šคํƒ์€ ์ปดํŒŒ์ผ ์‹œ ์ด๋ฏธ ํ• ๋‹น๋œ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • ์Šคํƒ์—์„œ ๋งํ•˜๋Š” ํ• ๋‹น์ด๋ž€ ์ด๋ฏธ ์ƒ์„ฑ๋œ ์Šคํƒ์— ๋Œ€ํ•ด ํฌ์ธํ„ฐ์˜ ์œ„์น˜๋งŒ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋‹จ์ˆœํ•œ CPU Instruction์„ ๋งํ•œ๋‹ค.
    • ํž™์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋”ฐ๋กœ ํ• ๋‹นํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค.
      • ํž™์—์„œ์˜ ํ• ๋‹น์ด๋ž€ ์š”์ฒญ๋œ chunk์˜ ํฌ๊ธฐ, ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์˜ fragmentation ์ƒํ™ฉ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ CPU Instruction์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

    โ†’ ๊ทธ๋Ÿฌ๋ฉด ์Šคํƒ ํ• ๋‹น ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๊ฒ ์ง€์š”?




์ „์—ญ ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜

  • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ์Šค๋ ˆ๋“œ๋Š”, ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, code, data, heap ์˜์—ญ๋งŒ ๊ณต์œ ํ•˜๊ณ , stack ์˜์—ญ์€ ๊ฐ์ž ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์Šค๋ ˆ๋“œ๋ผ๋ฆฌ ๊ณต์œ ํ•  ์ •๋ณด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด data ์˜์—ญ์— ์ €์žฅ๋˜๊ฒŒ๋” ํ•˜๊ณ , ๊ฐ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ๋๋‚˜๋ฉด ๋ฒ„๋ฆด(?) ์ •๋ณด๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด stack ์˜์—ญ์— ์ €์žฅ๋˜๊ฒŒ๋” ํ•˜๋ฉด ๋œ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€ ~! ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์— ๊ด€ํ•œ ๊ธ€์€ ์ด๊ฑฐ ์ฝ์œผ์„ธ์š” .. ์•„์ฃผ ๋ช…๋ฌธ์ž„ !!

swift์—์„œ static์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ..

..


swift ARC vs Java ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ ?

  • ARC

    • ํž™ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์–ผ๋งˆ๋‚˜ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š”์ง€ countํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ๋ฅผ ๊ด€๋ฆฌ
    • ์ฆ‰, ์ปดํŒŒ์ผ ์‹œ์— reference counting์„ ํ•จ
      • ์–ด๋–ป๊ฒŒ counting์„ ํ•˜๋Š”๋ฐ?
    • ์ปดํŒŒ์ผ ์‹œ ์ธ์Šคํ„ด์Šค ํ•ด์ œ ์‹œ์ ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์ œ ์ด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ ์ž์›์„ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ

    • ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ์ค‘์— reference counting
    • ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘ํ•  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์‹œ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ์ž์›์ด ํ•„์š”ํ•˜๋‹ค.
    • ๋ช…ํ™•ํ•œ ๊ทœ์น™์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์–ธ์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋  ์ง€ ์˜ˆ์ธกํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›€.

    (ใ…ˆใ……ํ•ฉ๋‹ˆ๋‹ค ์ž๋ฐ”๋Š” ์—ฌ๊ธฐ๊นŒ์ง€๋ฐ–์— ๋ชจ๋ฆ…๋‹ˆ๋‹ค...)




Reference

https://kant0116.tistory.com/17

https://velog.io/@hidaehyunlee/๋ฉ”๋ชจ๋ฆฌ-๊ตฌ์กฐ๋ฅผ-์•Œ์•„๋ณด์ž

https://ieroa.tistory.com/entry/C์–ธ์–ด-๋ฉ”๋ชจ๋ฆฌ-๊ตฌ์กฐ