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