κ·Έλμ μ€λ λλ₯Ό 곡λΆνλ©° λλ 건, ν¬λ‘¬ νλ λμλκ³ κ·Έ μμμ νμΌλ λ€μ΄λ‘λ λ°κ³ , μμ λ κ°μν μ μλ λ©ν° μ€λ λκ° λΉμ°ν μ±κΈ μ€λ λλ³΄λ€ μ’μ κ±°λΌλ μκ°μ΄μλ€. κ·Έλ°λ° μλ°μ€ν¬λ¦½νΈλ₯Ό μ²μ 곡λΆνλ©΄ μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ κΈ°λ°μ μΈμ΄λΌλ κ±Έ μκ² λλ€. λκ° λ΄λ λ©ν° μ€λ λκ° μ°μλΌκ³ μκ°νλλ°, μ μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λλ₯Ό ννμκΉ?
λ©ν° μ€λ λμ μ΄λ€ λ¨μ μ νΌνκ³ μ, νΉμ μ±κΈ μ€λ λμ μ΄λ ν μ₯μ μ ννκ³ μ μ±κΈ μ€λ λλ₯Ό ννλμ§ κΆκΈν΄μ‘λ€.
μ€λμ λ©ν° μ€λ λμ μ₯/λ¨μ κ³Ό μ±κΈ μ€λ λμ μ₯/λ¨μ μ λν΄ μ΄ν΄λ³΄κ² λ€!!
νλμ νλ‘μΈμ€κ° νλμ main threadλ§ κ°μ§κ³ νλμ μΌλ§ μνν μ μλλ‘ νλ κ²
(cf. μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λμ΄μ§λ§, μλ°μ€ν¬λ¦½νΈ λ°νμμ μ±κΈ μ€λ λκ° μλλ€!)
μμμ κ·Όμ λν λκΈ°νλ₯Ό μ κ²½μ°μ§ μμλ λλ€.
context switchingμ΄ μΌμ΄λμ§ μμΌλ―λ‘ λ¨μν μμ μ΄λΌλ©΄ λ©ν° μ€λ λμ λΉν΄ μμ μκ°μ΄ λΉ λ₯Ό μ μλ€.
μ¬λ¬ κ°μ CPUκ° μλ κ²½μ° μ΄λ₯Ό νμ©νμ§ λͺ»νλ€.
νλμ νλ‘μΈμ€κ° μ¬λ¬ κ°μ threadλ₯Ό κ°μ§κ³ λμμ μ¬λ¬ κ°μ μΌμ μνν μ μλλ‘ ν΄μ£Όλ κ²(μ¬μ€μ λμμ μ€νλλ κ²μ²λΌ 보μ΄λ κ²)
ex. μλ νλ‘μΈμμμ κ·Έλ¦Όμ νμνκ³ , ν€ μ λ ₯μ μλ΅νλ©° μ² μ¬ λ° λ¬Έλ² κ²μ¬λ₯Ό κ³μ ν¨
λ©ν°μ€λ λλ μμμ 곡μ νκΈ° λλ¬Έμ νλ‘μΈμ€ μμ±μ λΉν΄ μ μ λ©λͺ¨λ¦¬μ μμμ μλͺ¨νκ³ μ»¨ν μ€νΈ μ€μμΉλ λ©ν° νλ‘μΈμ€μ λΉν΄ λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€. νμ§λ§ μ¬λ¬ κ°μ μ€λ λκ° μκ³μμ(Critical Section)μ 곡μ μμμ μ κ·Όν μ μκΈ° λλ¬Έμ λ°μ΄ν°μ μΌκ΄μ±κ³Ό μ νμ±μ μν΄ λκΈ°ν κΈ°λ²μ μ¬μ©νμ¬μΌ νλ€.
νλ‘κ·Έλ¨μ μΌλΆλΆ(μ€λ λ)μ΄ μ€λ¨λκ±°λ κΈ΄ μμ
μ μννλλΌλ νλ‘κ·Έλ¨μ μνμ΄ κ³μ λμ΄ μ¬μ©μμ λν μλ΅μ±μ΄ μ¦κ°νλ€.
ex. λ©ν° μ€λ λκ° μ μ©λ μΉ λΈλΌμ°μ νλ‘κ·Έλ¨μμ νλμ μ€λ λκ° μ΄λ―Έμ§ νμΌμ λ‘λνκ³ μλλμ, λ€λ₯Έ μ€λ λμμ μ¬μ©μμ μνΈμμ© κ°λ₯
νλ‘μΈμ€ λ΄ μμλ€κ³Ό λ©λͺ¨λ¦¬λ₯Ό 곡μ νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ 곡κ°κ³Ό μμ€ν μμμλͺ¨κ° μ€μ΄λ λ€. μ€λ λκ° ν΅μ μ΄ νμν κ²½μ°μλ μ½κ² λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μμΌλ©° νλ‘μΈμ€μ context switchingκ³Ό λ¬λ¦¬ μ€λ λκ°μ context switchingμ μΊμ λ©λͺ¨λ¦¬λ₯Ό λΉμΈ νμκ° μκΈ° λλ¬Έμ λ λΉ λ₯΄λ€.
μ°Έκ³ μ¬μ΄νΈ
μ½λ©νλ κ²½μ νλλ
dkimλ