μ£Όλμ΄ κ°λ°μμ κ°μΈ κ³΅λΆ κ³Όμ μ κΈ°λ‘ν©λλ€.
νλ‘μΈμ€μ μ€λ λ
κΈ°μ λ©΄μ μμ λ¨κ³¨ μ§λ¬Έ μ¬νμΌλ‘ λμ¨λ€κ³ νλ νλ‘μΈμ€μ μ€λ λμ λν΄ κ³΅λΆν λ΄μ© μ 리ν΄λ³Έλ€.
νλ‘μΈμ€μ μ€λ λλ?
νλ‘μΈμ€:Β μ΄μ체μ λ‘λΆν° μμμ ν λΉλ°μΒ μμ μ λ¨μ.
μ€λ λ:Β νλ‘μΈμ€κ° ν λΉλ°μ μμμ μ΄μ©νλΒ μ€ν νλ¦μ λ¨μ.
μ΄λ ΅κ²λ§ λ€λ¦΄ μ μλλ°, νλ‘μΈμ€μ μ μμμΒ μμ μ΄λΌλ λ¨μ΄μ μ€λ λμ μ μμμΒ μ€ν νλ¦μ΄λΌλ λ¨μ΄λ₯Ό κΈ°μ΅νμ.
νλ‘κ·Έλ¨ β νλ‘μΈμ€ β μ€λ λ
νλ‘κ·Έλ¨ β νλ‘μΈμ€
νλ‘μΈμ€μ μ€λ λμ λν΄ μ΄ν΄νκΈ° μν΄μλ μ°μ νλ‘κ·Έλ¨μ λν΄ μμλ νμκ° μλ€. κ·ΈλΌ νλ‘κ·Έλ¨μ 무μμΌκΉ? νλ‘κ·Έλ¨μ΄λ
- μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ»΄ν¨ν°μκ² μ£Όμ΄μ§λ μ²λ¦¬ λ°©λ²κ³Ό μμλ₯Ό κΈ°μ ν μΌλ ¨μ λͺ λ Ήλ¬Έμ μ§ν©μ²΄ λλ
- νμΌμ΄ μ μ₯ μ₯μΉμ μ μ₯λμ΄ μμ§λ§ λ©λͺ¨λ¦¬μλ μ¬λΌκ° μμ§ μμ μ μ μΈ μνλΌκ³ λ§νλ€
νμ΄μ λ€μ μ 리ν΄λ³΄λ©΄,
- λ©λͺ¨λ¦¬μ μ¬λΌκ° μμ§ μμ:Β μμ§ μ΄μ체μ κ° νλ‘κ·Έλ¨μκ² λ 립μ μΈ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉν΄μ£Όμ§ μμλ€λ λ»μ΄λ€. λͺ¨λ νλ‘κ·Έλ¨μ μ΄μ체μ κ° μ€νλκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉν΄ μ€μΌ μ€νλ μ μλ€.
- μ μ μΈ μν:Β μ μ (ιη)μ΄λΌλ λ¨μ΄ κ·Έλλ‘, μμ§μ΄μ§ μλ μνλΌλ λ»μ΄λ€. ν λ§λλ‘ μμ§ μ€νλμ§ μκ³ κ°λ§ν μλ€λ λ»μ΄λ€.
κ²°κ΅ νλ‘κ·Έλ¨μ΄λΌλ λ¨μ΄λ μμ§ μ€νλμ§ μμ, μΌλ ¨μ λͺ λ Ήλ¬Έμ μ§ν©μ²΄ κ·Έ μ체λ₯Ό κ°λ¦¬ν€λ λ§μ΄λ€.
μΌλ ¨μ λͺ λ Ήλ¬Έμ μ§ν©μ²΄μΈ μ€ν νμΌ(νλ‘κ·Έλ¨)μ μ€ν μν€λ μκ° ν΄λΉ νμΌμ μ»΄ν¨ν° λ©λͺ¨λ¦¬μ μ¬λΌκ°κ² λκ³ , μ΄ μνλ₯ΌΒ λμ (εη)μΈ μνλΌκ³ νλ©° μ΄ μνμ νλ‘κ·Έλ¨μΒ νλ‘μΈμ€λΌκ³ νλ€. μ¦, νλ‘μΈμ€λΌλ λ¨μ΄λ μμ μ€μΈ νλ‘κ·Έλ¨μ μλ―Ένλ€
νλ‘μΈμ€ β μ€λ λ
κ³Όκ±°μλ νλ‘κ·Έλ¨ μ€ν μμλΆν° μ€ν μ’ λ£κΉμ§ νλμ νλ‘μΈμ€ λ§μΌλ‘ μ§νλμλ€κ³ νλ€. νμ§λ§ μκ°μ΄ νλ₯Όμλ‘ νλ‘κ·Έλ¨μ 볡μ‘ν΄μ‘κ³ νλμ νλ‘μΈμ€λ‘ μ€ν μν€κΈ°μλ λ² μ°¨κ² λμλ€. μ€μ λ‘ νλ‘κ·Έλ¨μ΄ νλμ μμ λ§ μ€ννλ κ²½μ°λ μλ€. κ·ΈλΌ μ΄λ»κ² ν΄μΌν κΉ?
νλ‘μΈμ€λ₯Ό μ¬λ¬κ° μ€ννλ©΄ λμ§ μμκΉ? λΌκ³ μκ°ν μ μμ§λ§ λΆκ°λ₯νλ€. μλνλ©΄ μ΄μ체μ λ μμ μ±μ μν΄μ νλ‘μΈμ€λ§λ€ μμ μκ² ν λΉλ λ©λͺ¨λ¦¬ λ΄μ μ 보μλ§ μ κ·Όν μ μλλ‘ μ μ½μ λκ³ μκ³ , μ΄λ₯Ό λ²μ΄λλ μ 보μ μ κ·Όνλ €λ©΄ μ€λ₯κ° λ°μνκΈ° λλ¬Έμ΄λ€.
μλ¬΄νΌ νλ‘μΈμ€μλ λ€λ₯Έ λ μμ μ€ν λ¨μ κ°λ μ΄ νμνκ² λμκ³ , μ΄ κ°λ μ΄ λ°λ‘ μ€λ λλ€.
μ¦, νλ‘μΈμ€μ νκ³λ₯Ό ν΄κ²°νκΈ° μν΄ λ§λ€μ΄μ§ κ°λ μ΄ μ€λ λλ€.
μ€λ λλ νλ‘μΈμ€μ μ½λμ μ μλ μ μ°¨μ λ°λΌ μ€νλλ νΉμ ν μν κ²½λ‘λ€.
μ‘°κΈ λ μμΈν νμ΄λ³΄λ©΄,
νλ‘μΈμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ μ΄μ체μ λ‘λΆν° μμ€ν
μμμ ν λΉλ°λλ° μ΄ λ μ΄μ체μ λ νλ‘μΈμ€λ§λ€ κ°κ° λ
립λ λ©λͺ¨λ¦¬ μμμ, Code/Data/Stack/Heapμ νμμΌλ‘ ν λΉν΄ μ€λ€. κ°κ° λ
립λ λ©λͺ¨λ¦¬ μμμ ν λΉν΄ μ£ΌκΈ° λλ¬Έμ νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ λ³μλ μλ£μ μ κ·Όν μ μλ€.
λ°λ©΄ μ€λ λλ λ©λͺ¨λ¦¬λ₯Ό μλ‘ κ³΅μ ν μ μλ€. μ‘°κΈ λ μμΈν νμ΄λ³΄λ©΄, νλ‘μΈμ€κ° ν λΉλ°μ λ©λͺ¨λ¦¬ μμ λ΄μμ Stack νμμΌλ‘ ν λΉλ λ©λͺ¨λ¦¬ μμμ λ°λ‘ ν λΉλ°κ³ , λλ¨Έμ§ Code/Data/Heap νμμΌλ‘ ν λΉλ λ©λͺ¨λ¦¬ μμμ 곡μ νλ€. λ°λΌμ κ°κ°μ μ€λ λλ λ³λμ μ€νμ κ°μ§κ³ μμ§λ§ ν λ©λͺ¨λ¦¬λ μλ‘ μ½κ³ μΈ μ μκ² λλ€.
μ¬κΈ°μ νλ‘μΈμ€μ μ€λ λμ μ°¨μ΄μ μ μ μ μλ€.
-
νλ‘μΈμ€λ κ°κ°μ λ 립λ λ©λͺ¨λ¦¬λ₯Ό ν λΉλ°κΈ° λλ¬Έμ μ€λ₯κ° λ°μν΄μ νλ‘μΈμ€κ° κ°μ λ‘ μ’ λ£λλ€λ©΄, 곡μ νκ³ μλ νμΌμ μμμν€λ κ²½μ°κ° μλλΌλ©΄ λ€λ₯Έ νλ‘μΈμ€μκ² μλ¬΄λ° μν₯μ μ£Όμ§ μλλ€.
-
μ€λ λλ λ©λͺ¨λ¦¬λ₯Ό 곡μ νκΈ° λλ¬Έμ μ΄λ€ μ€λ λ νλμμ μ€λ₯κ° λ°μνλ€λ©΄ κ°μ νλ‘μΈμ€ λ΄μ λ€λ₯Έ μ€λ λ λͺ¨λκ° κ°μ λ‘ μ’ λ£λλ€.
β¨ tl;dr
- νλ‘κ·Έλ¨
- μ΄λ€ μμ μ νκΈ° μν΄ μ€νν μ μλ νμΌ λλ νλ‘κ·Έλ¨
- νλ‘μΈμ€
- λ©λͺ¨λ¦¬μ μ μ¬λκ³ CPU μμμ ν λΉλ°μ νλ‘κ·Έλ¨μ΄ μ€νλκ³ μλ μν
- μ€λ λ
- μ΄λ ν νλ‘κ·Έλ¨ λ΄μμ, νΉν νλ‘μΈμ€ λ΄μμ μ€νλλ νλ¦μ λ¨μ
νλ‘κ·Έλ¨μ μ½λ λ©μ΄λ¦¬ νμΌ, κ·Έ νλ‘κ·Έλ¨μ μ€νν κ² νλ‘μΈμ€.
μ€λ λλ₯Ό μ½λ(νλ‘μΈμ€) λ΄μμμ ν¨μ(μ€λ λ)μ λΉλμ΄ ννν΄λ³΄λ©΄ μ΄ν΄νκΈ° ν¨μ¬ μ½λ€. μ½λ λ΄ μ΄λ€ ν¨μ νλμμ μ€λ₯κ° λ°μνλ©΄ μ΄λ€ ν¨μμμ λ°μνλ κ°μ μμ μ μ€λ¨νκ³ νλ‘μΈμ€ μ€νμ λλ΄λ²λ¦¬λ κ²μ μκ°νλ©΄ λ³΄λ€ μ΄ν΄νκΈ° μ½λ€!
π μ°Έκ³
λ©λͺ¨λ¦¬ μμ
: νλμ νλ‘μΈμ€λ κ°κ° λ 립λ λ©λͺ¨λ¦¬ μμ(Code, Data, Stack, Heap)μ ν λΉλ°λλ€.
μ½λ(Code) μμ:
- μ½λ μμμ μ€νν νλ‘κ·Έλ¨μ μ½λ λ° λ§€ν¬λ‘ μμκ° κΈ°κ³μ΄ ννλ‘ μ μ₯λλ μμμ΄λ€. CPUλ μ½λμμμ μ μ₯λ λͺ λ Ήμ΄λ₯Ό νλμ© μ²λ¦¬νλ€.
λ°μ΄ν°(Data) μμ:
- λ°μ΄ν° μμμ μ½λμμ μ μΈν μ μ λ³μμ μ μ (static) λ³μκ° μ μ₯λλ μμμ΄λ€. λ°μ΄ν° μμμ νλ‘κ·Έλ¨μ μμκ³Ό ν¨κ» ν λΉλμ΄ μ’ λ£λ λ μλ©Έλλ€.
μ€ν(Stack) μμ:
- μ€ν μμμ ν¨μ μμμ μ μΈλ μ§μλ³μ, 맀κ°λ³μ, 리ν΄κ°, λ±μ΄ μ μ₯λκ³ ν¨μ νΈμΆμ κΈ°λ‘νκ³ μ’ λ£λλ©΄ μ κ±°νλ€. μ€νμ΄λΌλ μλ£κ΅¬μ‘° λͺ μΉμμλ μ μ μλ―μ΄ νμμ μΆ(LIFO) λ©μ»€λμ¦μ λ°λ₯Έλ€.
ν(Heap) μμ:
- ν μμμ κ΄λ¦¬κ° κ°λ₯ν λ°μ΄ν° μ΄μΈμ λ€λ₯Έ ννμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν 곡κ°(Free Space)μ΄λ€. μ΄ κ³΅κ°μ λμ λ©λͺ¨λ¦¬ ν λΉ κ³΅κ°μ΄λ―λ‘ μ¬μ©μ΄ λλλ©΄ μ΄μ체μ κ° μΈμ μλλ‘ λ°λ©ν΄μΌ νλ€. νλ‘κ·Έλ¨μ΄ μ€ννλ μκ° νλ‘κ·Έλ¨μ΄ μ¬μ©ν λ©λͺ¨λ¦¬ ν¬κΈ°λ₯Ό κ³ λ €νμ¬ λ©λͺ¨λ¦¬μ ν λΉμ΄ μ΄λ£¨μ΄μ§λ λ°μ΄ν° λλ μ€νκ³Ό κ°μ μ μ λ©λͺ¨λ¦¬ ν λΉκ³Όλ λμ‘°μ μ΄λ€. λμ λ©λͺ¨λ¦¬ ν λΉμ μ΄λ μμ μ μ΄λ μ λμ 곡κ°μ ν λΉν μ μμμ§ μ ννκ² μμΈ‘ν μ μμΌλ―λ‘, λ°νμμ νμΈκ°λ₯νλ€.