π νλ‘μΈμ€ νλ ₯μ νμ©νλ μ΄μ
λͺ¨λν λ° νμ€ν¬λ₯Ό λΆν νμ¬ λ³λ ¬λ‘ μ€ννμ¬ κ³μ°μλμ ν₯μκ³Ό λͺ¨λμ±μ μ 곡νκΈ° μν΄μ
μ 보λ₯Ό λ³νμ μΌλ‘ μ κ·Ό κ°λ₯ν μ 보 곡μ μ νκ²½μ μ 곡ν΄μΌνλ€.
π νλ‘μΈμ€ κ° ν΅μ λͺ¨λΈ
- 곡μ λ©λͺ¨λ¦¬(shared memory): μ΄κΈ° κ΅¬μ± λ¨κ³μμλ§ μμ€ν μ½μ μ¬μ©νκΈ° λλ¬Έμ λΉ λ₯΄λ€. κ΅¬μΆ μ΄νμλ μΌλ°μ μΈ λ©λͺ¨λ¦¬ μ κ·ΌμΌλ‘ μ·¨κΈλμ΄ μ»€λμ λμμ΄ νμνμ§ μλ€.
- λ©μμ§ μ λ¬(message passing): μΆ©λμ ννΌν νμκ° μκ³ κ΅¬νμ΄ μ©μ΄νμ§λ§ 곡μ λ©λͺ¨λ¦¬μ λΉν΄ μ€λ²ν€λκ° ν¬λ€.
π 곡μ λ©λͺ¨λ¦¬ κΈ°λ³Έκ°λ
μΌλ°μ μΌλ‘ μ΄μ체μ λ ν νλ‘μΈμ€κ° ν νλ‘μΈμ€μ λ©λͺ¨λ¦¬μ μ κ·Όνλ κ²μ κΈμ§νλ€.
λ μ΄μμ νλ‘μΈμ€κ° μ΄ μ μ½μ‘°κ±΄μ μ κ±°νλ―λ‘μ¨ κ³΅μ λ©λͺ¨λ¦¬κ° μμ±λλ€.
π 곡μ λ©λͺ¨λ¦¬μ μλΉμ-μμ°μ λ¬Έμ
μμ°μμ μλΉμ νλ‘μΈμ€λ€μ΄ λ³νμΌλ‘ μ€νλλλ‘ νλ €λ©΄, μμ°μκ° μ 보λ₯Ό μ±μ λ£κ³ μλΉμλ λ²νΌλ₯Ό μ¬μ©ν μ μμ΄μΌ νλ€.
무νλ²νΌ
- λ²νΌκ° λΉμ΄μμΌλ©΄ μλΉμλ κΈ°λ€λ €μΌνλ€.
μ νλ²νΌ
- μμ°μλ λ²νΌκ° κ°λ μ°¨ μμΌλ©΄ κΈ°λ€λ €μΌλ§ νλ€.
- λ²νΌκ° λΉμ΄μμΌλ©΄ μλΉμλ κΈ°λ€λ €μΌνλ€.
π λ©μμ§ μ λ¬ μμ€ν
μ§μ ν΅μ π
λμΉμ
μ‘μ μμ μμ μ λͺ¨λ μλ‘μ μ΄λ¦μ νμλ‘ νλ κ²½μ°
λΉλμΉμ
μ‘μ μλ§ μμ μμ μ΄λ¦μ νμλ‘ νλ κ²½μ°νμ§λ§ μ»΄νμΌμκ°μ μ΄λ¦μ μ μ μκ³ , μλλ°© μ΄λ¦μ΄ λ¬λΌμ§λ©΄ μ¬μ©ν μ μλ€λ λ¨μ μΌλ‘ κ°μ ν΅μ μ λ©μΌλ°μ€λ₯Ό ν΄κ²°μ± μΌλ‘μ μ¬μ©νλ€.
κ°μ ν΅μ π©
λ©μΌλ°μ€
- νλ‘μΈμ€λ€μ μν΄ λ©μμ§λ€μ΄ μμ±λκ³ μ κ±°λλ κ°μ²΄
- κ° λ©μΌλ°μ€λ κ³ μ ν IDλ₯Ό κ°μ§λ€ (POSIX μμλ μ μκ° μ¬μ©)
- κ° μ°κ²°μ νλμ λ©μΌλ°μ€μ λμνλ©°, λ€μμ μλ‘ λ€λ₯Έ μ°κ²°μ΄ μ‘΄μ¬ν μ μλ€.
μ¬μ©μμ
λ¬Έμ μ
- νλ‘μΈμ€ μΈκ°κ° λͺ¨λ νκ°μ λ©μΌλ°μ€λ₯Ό 곡μ ν κ²½μ° μ΄λ νλ‘μΈμ€κ° λ©μμ§λ₯Ό μμ νλκ°?
ν΄κ²°μ±
- νλμ λ§ν¬λ μ΅λ λκ°μ νλ‘μΈμ€μ μ°κ΄λκ² νλ€.
- μμ μ λΆν νμ¬ ν μκ°μ μ΅λλ‘ νλμ νλ‘μΈμ€λ§ receive() μ€ννλλ‘ νμ©νλ€.
- μμ€ν μ΄ μμλ‘ μ€μ νλ€.
κΈ°ν
λκΈ°μ μ μ‘(Blocking, λ΄μν)
- λ΄μν 보λ΄κΈ° - μμ λ°μλκΉμ§ μ‘μ λΆκ°
- λ΄μν λ°κΈ° - λ©μμ§κ° μ΄μ© κ°λ₯ν λκΉμ§ μμ λΆκ°
λΉλκΈ°μ μ μ‘(Non-blocking, λ΄μν)
- λΉλ΄μν 보λ΄κΈ°
- λΉλ΄μν λ°κΈ°
λ©μμ§ ν ꡬν λ°©μ
- 무 μ©λ - μ‘μ μλ μμ μκ° λ©μμ§λ₯Ό μμ ν λκΉμ§ κΈ°λ€λ €μΌ ν¨. (Rendezvous)
- μ ν μ©λ - μ‘μ μλ λ§ν¬κ° λ§μμ΄λ©΄ λ°λμ λ΄μλμ΄μΌ ν¨.
- 무ν μ©λ - μ‘μ μλ κ²°μ½ λ΄μλμ§ μμ
ν¬νΈ(Port)
- ν¬νΈλ₯Ό μ΄μ©ν μ λ¬λ κ°μ ν΅μ μ ν΄λΉνλ€.