IPC
IPC

νλ‘μΈμ€λ λ©λͺ¨λ¦¬ 곡κ°μμ λ 립μ μΌλ‘ μ€νλλ€. κ·Έλ κΈ° λλ¬Έμ, μλ‘ λ€λ₯Έ νλ‘μΈμ€ μμμ μ κ·Όνμ§ λͺ»νλ€. νμ§λ§, νλ‘μΈμ€λ₯Ό μ€ννλ κ³Όμ μμ λ€λ₯Έ νλ‘μΈμ€μ ν΅μ μ΄ νμνλ€λ©΄ μ΄λ»κ² ν΄μΌν κΉ? κ·Έλ¦¬κ³ λ€λ₯Έ νλ‘μΈμ€μ ν΅μ μ΄ νμν μν©μ μΈμ μΌκΉ? κ·Έ μν©μ μλμ κ°λ€.
- μ 보 곡μ : μ¬λ¬ μμ© νλ‘κ·Έλ¨μ΄ λμΌν μ λ³΄κ° νμν μ μλ€.
- κ³μ° κ°μν : νΉμ μμ μ 빨리 μ€ννκ³ μ νλ€λ©΄, μλΈ μμ μΌλ‘ λλμ΄ λ³λ ¬λ‘ μ€νν΄μΌ νλ€.
- λͺ¨λμ± : μμ€ν κΈ°λ₯μ λ³λμ νλ‘μΈμ€λ€ λλ μ€λ λλ€λ‘ λλμ΄ λͺ¨λμ ννλ‘ μμ€ν μ ꡬμ±νλ€.
νλ‘μΈμ€ κ° ν΅μ , μ¦ IPC(Interprocess Communication) κΈ°λ²μ 곡μ λ©λͺ¨λ¦¬μ λ©μμ§ μ λ¬ λͺ¨λΈμ΄ μλ€.
곡μ λ©λͺ¨λ¦¬
곡μ λ©λͺ¨λ¦¬λ λ©λͺ¨λ¦¬ κ³΅κ° μμ νΉμ λ©λͺ¨λ¦¬ 곡κ°μ λ κ°μ΄μμ νλ‘μΈμ€κ° μ κ·Όνμ¬ λ°μ΄ν°λ₯Ό μ½κ³ μ°κ³ μ 보λ₯Ό κ΅ννλ€. μμμ μΈκΈν κ² μ²λΌ, νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€ μμμ μΉ¨λ²ν μ μλ€. λ¨, 곡μ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν νλ‘μΈμ€λ€μ΄ μ΄ μ μ½ μ‘°κ±΄μ μ κ±°νλ κ²μ λμνλ€λ©΄ μ¬μ©ν μ μλ€.
곡μ λ©λͺ¨λ¦¬ λͺ¨λΈμ μμ°μ-μλΉμ μμ μΌλ‘ λ°λΌλ³Έλ€λ©΄, 곡μ λ©λͺ¨λ¦¬μ λ°μ΄ν°λ₯Ό μ μ¬νλ μμ°μμ μ μ¬λ λ°μ΄ν°λ₯Ό μλΉνλ μλΉμκ° μ‘΄μ¬ν κ²μ΄λ€. μ΄λ, λ°μ΄ν°λ₯Ό μλ κ³΅κ° λ²νΌλ λ κ°μ§ μ νμ΄ μλ€.
- 무ν λ²νΌ : μμ°μλ νμ λ°μ΄ν°λ₯Ό μ μ¬ν μ μλ€.
- μ ν λ²νΌ : λ²νΌ ν¬κΈ°κ° κ½ μ°° κ²½μ°, λͺ¨λ μλΉλ λκΉμ§ μμ°μλ λκΈ°ν΄μΌνλ€.
λ κ° μ΄μμ νλ‘μΈμ€κ° λμΌν λ©λͺ¨λ¦¬ μμμ μ κ·ΌνκΈ° λλ¬Έμ, μΆ©λμ΄ λ°μνμ§ μλλ‘ μ κ²½μ¨μΌ νλ€.
λ©μμ§ μ λ¬
νλμ νλ‘μΈμ€κ° λ©μμ§λ₯Ό μ λ¬νλ μμ€ν μ½μ νΈμΆνκ³ , λ©μμ§λ₯Ό λ°λ νλ‘μΈμ€μμ μμ€ν μ½μ νΈμΆνλ©΄ λ©μμ§κ° μ λ¬λλ λ°©μμ΄λ€. ν΄λΉ κ³Όμ μμ μμ€ν μ½μ νΈμΆνκΈ° λλ¬Έμ 컀λμ μ°κ³ μ¨λ€λ μ μ΄ μμ΄, 곡μ λ©λͺ¨λ¦¬μ λΉν΄ λ리λ€. λ€λ§, μΆ©λμ ννΌν νμκ° μκΈ° λλ¬Έμ μ μ μμ λ°μ΄ν°λ₯Ό κ΅ννλ λ° μ μ©νλ€.
λ νλ‘μΈμ€κ° ν΅μ μ μνλ€λ©΄, ν΅μ μ°κ²°μ΄ μ€μ λμ΄μΌ νλ€.
-
μ§μ ν΅μ
- ν΅μ μ μνλ κ° νλ‘μΈμ€λ ν΅μ μ μμ μ λλ μ‘μ μμ μ΄λ¦μ λͺ μνλ€.
send(P, message) - νλ‘μΈμ€ Pμκ² λ©μμ§λ₯Ό μ μ‘ receive(Q, message) - νλ‘μΈμ€ Qλ‘λΆν° λ©μμ§λ₯Ό μμ- λ³νμΌλ‘ μ‘μ μλ§ μ΄λ¦μ λͺ μν μ μλ€.
send(P, message) - λ©μμ§λ₯Ό νλ‘μΈμ€ Pμ μ μ‘νλ€. receive(id, message) - μμμ νλ‘μΈμ€λ‘λΆν° λ©μμ§λ₯Ό μμ νλ€. λ³μ idλ ν΅μ μ λ°μμν¨ νλ‘μΈμ€μ μ΄λ¦μΌλ‘ μ€μ λλ€.- νλ‘μΈμ€μ μ΄λ¦μ λ°κΎΈλ©΄ λͺ¨λ λΆλΆμ μμ μ΄ νμνλ€.
-
κ°μ ν΅μ
-
λ©μΌλ°μ€ λλ ν¬νΈλ‘ λ©μμ§κ° μ‘μ λκ³ , κ·Έκ²μΌλ‘λΆν° μμ λλ€.
- λ©μΌλ°μ€λ μΆμμ μΌλ‘ νλ‘μΈμ€λ€μ μν΄ λ©μμ§κ° λ£μ΄μ§κ³ , λ©μμ§λ€μ΄ μ κ±°λ μ μλ κ°μ²΄μ΄λ€.
- κ° λ©μΌλ°μ€λ κ³ μ μ idλ₯Ό κ°μ§λ€.
send(A, message) - λ©μμ§λ₯Ό λ©μΌλ°μ€ Aλ‘ μ‘μ νλ€. receive(A, message) - λ©μμ§λ₯Ό λ©μΌλ°μ€ Aλ‘λΆν° μμ νλ€.
-
λκΈ°ν
λ©μμ§ μ λ¬μ λκΈ°νκ³Ό λΉλκΈ°ν λ°©μμΌλ‘ μ λ¬λλ€.
- λκΈ°ν 보λ΄κΈ° : μ‘μ νλ νλ‘μΈμ€λ λ©μμ§κ° μμ νλ‘μΈμ€ λλ λ©μΌλ°μ€μ μν΄ μμ λ λκΉμ§ λΈλ‘νΉλλ€.
- λΉλκΈ°ν 보λ΄κΈ° : μμ νλ νλ‘μΈμ€κ° λ©μμ§λ₯Ό 보λ΄κ³ μμ μ μ¬μμνλ€.
- λκΈ°ν λ°κΈ° : λ©μμ§κ° μ΄μ© κ°λ₯ν λκΉμ§ μμ νλ‘μΈμ€κ° λ΄μλλ€.
- λΉλκΈ°ν λ°κΈ° : μ‘μ νλ νλ‘μΈμ€κ° μ ν¨ν λ©μμ§ λλ λμ λ°λλ€.
νμ΄ν
λ νλ‘μΈμ€κ° ν΅μ ν μ μκ² νλ μ λ¬μλ‘μ λμνλ€. νμ΄νλ₯Ό ꡬννκΈ° μν΄μλ λ€μ 4κ°μ§ λ¬Έμ λ₯Ό κ³ λ €ν΄μΌ νλ€.
- νμ΄νλ λ¨λ°©ν₯ or μλ°©ν₯
- μλ°©ν₯ ν΅μ μ΄ λλ€λ©΄ λ°μ΄μ€ λ°©μ or μ μ΄μ€ λ°©μ
- λ νλ‘μΈμ€ κ°μ λΆλͺ¨-μμ κ΄κ³κ° μ‘΄μ¬?
- λ€νΈμν¬λ₯Ό ν΅νμ¬ ν΅μ μ΄ κ°λ₯νκ°
νμ΄νμλ λ κ°μ§ μ νμ΄ μ‘΄μ¬νλ€.
-
μΌλ° νμ΄ν

- μμ°μ-μλΉμ ννλ‘ λ νλ‘μΈμ€ κ°μ ν΅μ μ νμ©
- μμ°μλ νμ΄νμ ν μ’ λ¨μμ μ°κ³ , μλΉμλ λ€λ₯Έ μ’ λ¨μμ μ½λλ€.
- λ¨λ°©ν₯ ν΅μ λ§ κ°λ₯νλ©°, μλ°©ν₯ ν΅μ μ νκΈ° μν΄μλ νμ΄νλ₯Ό λ κ° μ¬μ©ν΄μΌνλ€.
- νμ΄νλ₯Ό μμ±ν νλ‘μΈμ€ μ΄μΈμλ μ κ·Όν μ μλ€.
- κ·Έλ κΈ° λλ¬Έμ, λΆλͺ¨ νλ‘μΈμ€κ° μμ νλ‘μΈμ€λ₯Ό λ§λ€κ³ ν΅μ νκΈ° μν΄ μ¬μ©νλ€.
-
μ§λͺ νμ΄ν
- ν΅μ μ μλ°©ν₯μΌλ‘ κ°λ₯νλ©° λΆλͺ¨-μμ κ΄κ³λ νμνμ§ μλλ€.
- μ¬λ¬ νλ‘μΈμ€λ€μ΄ μ΄λ₯Ό μ¬μ©νμ¬ ν΅μ ν μ μλ€.
- λ°μ΄μ€ μ μ‘λ§ κ°λ₯νλ€.
μμΌ

ν΅μ μ κ·Ήμ μ λ»νλ©°, λ νλ‘μΈμ€κ° λ€νΈμν¬μμμ ν΅μ μ νλ €λ©΄ μ νλ‘μΈμ€λ§λ€ νλμ© μ΄ λ κ°μ μμΌμ΄ νμνλ€. κ° μμΌμ IPμ£Όμμ ν¬νΈ λ²νΈλ₯Ό μ ν©ν΄μ ꡬλ³νλ€.
RPC
λ€νΈμν¬μ μ°κ²°λ λ μμ€ν μ¬μ΄μ ν΅μ μ μ¬μ©νκΈ° μνμ¬ νλ‘μμ νΈμΆ κΈ°λ²μ μΆμννλ λ°©λ²μΌλ‘ μ€κ³λμλ€. νλ‘μΈμ€λ€μ΄ μλ‘ λ€λ₯Έ μμ€ν μμμ λμκ°κΈ° λλ¬Έμ μ격 μλΉμ€λ₯Ό μ 곡νκΈ° μν΄μλ λ©μμ§ κΈ°λ° ν΅μ μ ν΄μΌνλ€.