Thread.md
μ΅κ·Ό νμ¬ μ€λ¬΄ λ©΄μ μ 보면μ CSμ§λ¬Έμ λ°μλλ° μ λλ‘ λ΅λ³νμ§ λͺ»νλ μ€λ λμ λν΄μ 곡λΆνλ€.
νλ‘μΈμ€(process) vs μ€λ λ(thread)
νλ‘μΈμ€
μ¬μ©μκ° μμ±ν νλ‘κ·Έλ¨μ΄ μ΄μ체μ μ μν΄ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉλ°μ μ€ν μ€μΈ μν
ꡬμ±
νλ‘κ·Έλ¨μ μ¬μ©λλ λ°μ΄ν°λ λ©λͺ¨λ¦¬
μ€λ λ
μ€λ λ
νλ‘μΈμ€ λ΄μμ μ€μ λ‘ μμ μ μννλ 주체
λͺ¨λ νλ‘μΈμ€μλ ν κ°μ΄μμ μ€λ λκ° λμκ°λ©° μμ μ μνν¨
λ©ν° μ€λ λ νλ‘μΈμ€: λ κ° μ΄μμ μ€λ λλ₯Ό κ°μ§λ νλ‘μΈμ€
λ©ν° μ€λ λ
νλμ νλ‘μΈμ€ λ΄μμ λ μ΄μμ μ€λ λκ° λμμ μμ μ μννλ κ²
λ©ν° νλ‘μΈμ€: μ¬λ¬κ°μ CPUλ₯Ό μ¬μ©νμ¬ μ¬λ¬ νλ‘μΈμ€λ₯Ό λμμ μννλ κ²
λ©ν° νλ‘μΈμ€ vs λ©ν° μ€λ λ
λ©ν° νλ‘μΈμ€
κ° νλ‘μΈμ€κ° λ 립μ μΈ λ©λͺ¨λ¦¬λ₯Ό κ°μ§κ³ λ³λλ‘ μ€ν
λ©ν° μ€λ λ
κ° μ€λ λκ° μμ μ΄ μν νλ‘μΈμ€μ λ©λͺ¨λ¦¬λ₯Ό 곡μ
νΉμ§
μμ€ν μμμ λλΉ μ μ
κ° μ€λ λκ° μμ μ΄ μν νλ‘μΈμ€μ ν λΉλ°μ λ©λͺ¨λ¦¬λ₯Ό 곡μ νμ¬ μ¬μ©νκΈ° λλ¬Έ
μ¬μ©μμμ μλ΅μ± μ’μμ§
νλμ μ€λ λκ° μμ μ ν λ λ€λ₯Έ μ€λ λκ° λ³λμ μμ μ ν μ μκΈ° λλ¬Έ
Context Switching
μ»΄ν¨ν°μμ λμμ μ²λ¦¬ν μ μλ μμ μλ CPUμ μ½μ΄(core)μ μΈλ°, λ§μ½ μ΄ μ½μ΄ μλ³΄λ€ λ§μ μ€λ λκ° μ€νλλ©΄ κ° μ½μ΄κ° μ ν΄μ§ μκ° λμ μ¬λ¬ μμ μ λ²κ°μκ°λ©° μννκ² λλ€. μ΄ λ κ° μ€λ λκ° μλ‘ κ΅μ²΄λλ μν©μμ Context Switchingμ΄ λ°μνλ€.
Context Switchingμ΄λ νμ¬κΉμ§μ μμ μνλ λ€μ μμ μ νμν κ°μ’ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ½μ΄μ€λ μμ μ λ§νλ€.
λ©ν° μ€λ λ νκ²½μμ Context Switchingμ 걸리λ μκ°μ΄ 컀μ§μλ‘ ν¨μ¨μ μ νλκ³ λ§μ μμ λ¨μν κ³μ°μ μ±κΈ μ€λ λλ‘ λμνλ κ²μ΄ ν¨μ¨μ μ΄λ€.
μ€λ λ κ·Έλ£Ή(thread group)
μλ‘ κ΄λ ¨μ΄ μλ μ€λ λλ₯Ό νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΄ λ€λ£¨κΈ° μν μ₯μΉ
λ°λͺ¬ μ€λ λ(daemon thread)
λ€λ₯Έ μΌλ° μ€λ λμ μμ μ λλ 보쑰μ μΈ μν μ νλ μ€λ λ
μΌμ μκ°λ§λ€ μλμΌλ‘ μνλλ μ μ₯ λ° νλ©΄ κ°±μ λ±μ μ΄μ©
λλΆλΆ 무ν 루νμ 쑰건문μ μ΄μ©νμ¬ μ€ν ν λκΈ°νκ³ μλ€κ° νΉμ μ‘°κ±΄μ΄ λ§μ‘±λλ©΄ μμ μ μννκ³ λ€μ λκΈ°νλλ‘ μμ±
κ°λΉμ§ 컬λ ν°(garbage collector)
νλ‘κ·Έλλ¨Έκ° λμ μΌλ‘ ν λΉν λ©λͺ¨λ¦¬ μ€ λ μ΄μ μ¬μ©νμ§ μλ μμμ μλμΌλ‘ μ°Ύμλ΄μ΄ ν΄μ ν΄ μ£Όλ λ°λͺ¬ μ€λ λ
κ°λΉμ§ 컬λ ν°κ° λμνλ λμμλ νλ‘μΈμκ° μΌμμ μΌλ‘ μ€μ§λκΈ° λλ¬Έμ μ±λ₯μ μ νκ° λ°μνμ§λ§ μ΅κ·Όμλ κ°λΉμ§ 컬λ ν°μ μ±λ₯μ΄ λ§μ΄ ν₯μλμ΄ μλ‘ λ§λ€μ΄μ§λ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μμ κ°λΉμ§ 컬λ ν°λ₯Ό μ 곡νκ³ μλ€.
Last updated