νλ‘μΈμ€ : λ©λͺ¨λ¦¬μμμ μ€ν μ€μΈ νλ‘κ·Έλ¨
μ€λ λ : νλ‘μΈμ€ μμμ μ€νλλ μ¬λ¬ νλ¦ λ¨μ
κΈ°λ³Έμ μΌλ‘ νλ‘μΈμ€λ§λ€ μ΅μ 1κ°μ μ€λ λ(λ©μΈ μ€λ λ)λ₯Ό μμ νλ€.
νλ‘μΈμ€λ κ°κ° λ³λμ μ£Όμ 곡κ°μ ν λΉλ°λλ€. (λ 립μ )
-
Code : μ½λ μ체λ₯Ό ꡬμ±νλ λ©λͺ¨λ¦¬ μμ (νλ‘κ·Έλ¨ λͺ λ Ή)
-
Data : μ μ λ³μ, μ μ λ³μ, λ°°μ΄ λ±
- μ΄κΈ°νλ λ°μ΄ν°λ Data μμμ μ μ₯
- μ΄κΈ°νλμ§ μμ λ°μ΄ν°λ BSS μμμ μ μ₯
-
Heap : λμ ν λΉ μ μ¬μ© (new(), malloc() λ±)
-
Stack : μ§μ λ³μ, λ§€κ° λ³μ, λ¦¬ν΄ κ° (μμ λ©λͺ¨λ¦¬ μμ)
μ€λ λλ Stackλ§ λ°λ‘ ν λΉλ°κ³ λλ¨Έμ§ μμμ 곡μ νλ€.
- μ€λ λλ λ 립μ μΈ λμμ μννκΈ° μν΄ μ‘΄μ¬ = λ 립μ μΌλ‘ ν¨μλ₯Ό νΈμΆν μ μμ΄μΌ ν¨
- ν¨μμ λ§€κ° λ³μ, μ§μ λ³μ λ±μ μ μ₯νλ Stack μμμ λ 립μ μΌλ‘ ν λΉλ°μμΌ ν¨
νλμ νλ‘μΈμ€κ° μμ±λ λ, κΈ°λ³Έμ μΌλ‘ νλμ μ€λ λκ° κ°μ΄ μμ±λλ€.
νλ‘μΈμ€λ μμ λ§μ κ³ μ κ³΅κ° λ° μμμ ν λΉλ°μ μ¬μ©νλ λ° λ°ν΄,
μ€λ λλ λ€λ₯Έ μ€λ λμ κ³΅κ° λ° μμμ 곡μ νλ©΄μ μ¬μ©νλ μ°¨μ΄κ° μ‘΄μ¬νλ€.
νλμ νλ‘κ·Έλ¨μ μ¬λ¬ κ°μ νλ‘μΈμ€λ‘ ꡬμ±νμ¬ κ° νλ‘μΈμ€κ° λ³λ ¬μ μΌλ‘ μμ μ μ²λ¦¬νλλ‘ νλ κ²
μ₯μ : μμ μ± (λ©λͺ¨λ¦¬ μΉ¨λ² λ¬Έμ λ₯Ό OS μ°¨μμμ ν΄κ²°)
λ¨μ : κ°κ° λ 립λ λ©λͺ¨λ¦¬λ₯Ό κ°κ³ μμ΄ μμ λμ΄ λ§μμλ‘ μ€λ²ν€λ λ°μ, Context SwitchingμΌλ‘ μΈν μ±λ₯ μ ν
Context Switching μ΄λ?
νλ‘μΈμ€μ μν μ 보λ₯Ό μ μ₯νκ³ λ³΅μνλ μΌλ ¨μ κ³Όμ
- λμ μ€μΈ νλ‘μΈμ€κ° λκΈ°νλ©΄μ ν΄λΉ νλ‘μΈμ€ μνλ₯Ό 보κ΄
- λκΈ°νκ³ μλ λ€μ μλ²μ νλ‘μΈμ€κ° λμνλ©΄μ μ΄μ μ 보κ΄νλ νλ‘μΈμ€ μνλ₯Ό 볡ꡬ
λ¬Έμ μ : νλ‘μΈμ€λ λ 립λ λ©λͺ¨λ¦¬ μμμ ν λΉλ°μΌλ―λ‘, μΊμ λ©λͺ¨λ¦¬ μ΄κΈ°νμ κ°μ λ¬΄κ±°μ΄ μμ μ΄ μ§νλλ©΄ μ€λ²ν€λκ° λ°μν μ μμ
νλμ νλ‘κ·Έλ¨μ μ¬λ¬ κ°μ μ€λ λλ‘ κ΅¬μ±νμ¬ κ° μ€λ λκ° νλμ μμ μ μ²λ¦¬νλλ‘ νλ κ²
μ€λ λλ€μ΄ 곡μ λ©λͺ¨λ¦¬λ₯Ό ν΅ν΄ λ€μμ μμ μ λμμ μ²λ¦¬νλλ‘ ν΄ μ€λ€.
μ₯μ : λ 립μ μΈ νλ‘μΈμ€μ λΉν΄ 곡μ λ©λͺ¨λ¦¬λ§νΌμ μκ°κ³Ό μμ μμ€ κ°μ, μ μ λ³μμ μ μ λ³μ 곡μ κ°λ₯
λ¨μ : μμ μ± (곡μ λ©λͺ¨λ¦¬λ₯Ό κ°κΈ° λλ¬Έμ νλμ μ€λ λκ° λ°μ΄ν° 곡κ°μ λ§κ°λ¨λ¦¬λ©΄, λͺ¨λ μ€λ λ μλ λΆλ₯)
λ©ν°μ€λ λμ μμ μ±μ λν λ¨μ μ Critical Section κΈ°λ²μ ν΅ν΄ λλΉνλ€.
νλμ μ€λ λκ° κ³΅μ λ°μ΄ν°κ°μ λ³κ²½νλ μμ μ λ€λ₯Έ μ€λ λκ° κ·Έ κ°μ μ½μΌλ € ν λ λ°μνλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λκΈ°ν κ³Όμ
μνΈ λ°°μ , μ§ν, νμ λ λκΈ°λ₯Ό μΆ©μ‘±ν΄μΌ ν¨