Process Management 2 - hochan222/Everything-in-JavaScript GitHub Wiki
- Copy-on-write(COW)
- writeκ° λ°μνμλ μλ‘μ΄κ±Έ λ§λ¬. λ΄μ©μ΄ μμλκΈ°μ κΉμ§λ λΆλͺ¨κΊΌ μ¬μ©
νλ‘μΈμ€μ κ΄λ ¨ν μμ€ν μ½
fork() μμ€ν μ½
exec() μμ€ν μ½
wait() μμ€ν μ½
- νλ‘μΈμ€ Aκ° wait() μμ€ν
μ½μ νΈμΆνλ©΄
- 컀λμ childκ° μ’ λ£λ λκΉμ§ νλ‘μΈμ€ Aλ₯Ό sleep μν¨λ€.(block μν)
- Child processκ° μ’ λ£λλ©΄ 컀λμ νλ‘μΈμ€ Aλ₯Ό κΉ¨μ΄λ€. (ready μν)
exit() μμ€ν μ½
- νλ‘μΈμ€λ₯Ό μ’ λ£ μν¬ λ νΈμΆνλ μμ€ν μ½
- μλ°μ μ’
λ£
- λ§μ§λ§ statement μν ν exit() μμ€ν μ½μ ν΅ν΄
- νλ‘κ·Έλ¨μ λͺ μμ μΌλ‘ μ μ΄μ£Όμ§ μμλ main ν¨μκ° λ¦¬ν΄λλ μμΉμ μ»΄νμΌλ¬κ° λ£μ΄μ€
- λΉμλ°μ μ’
λ£
- λΆλͺ¨ νλ‘μΈμ€κ° μμ νλ‘μΈμ€λ₯Ό κ°μ μ’
λ£μν΄
- μμ νλ‘μΈμ€κ° νκ³μΉλ₯Ό λμ΄μλ μμ μμ²
- μμμκ² ν λΉλ νμ€ν¬κ° λ μ΄μ νμνμ§ μμ
- ν€λ³΄λλ‘ kill, breakλ±μ μΉ κ²½μ°
- λΆλͺ¨κ° μ’
λ£νλ κ²½μ°
- λΆλͺ¨ νλ‘μΈμ€κ° μ’ λ£νκΈ° μ μ μμλ€μ΄ λ¨Όμ μ’ λ£λ¨.
- λΆλͺ¨ νλ‘μΈμ€κ° μμ νλ‘μΈμ€λ₯Ό κ°μ μ’
λ£μν΄
νλ‘μΈμ€ κ° νλ ₯
- λ
μ μ νλ‘μΈμ€(Independent process)
- νλ‘μΈμ€λ κ°μμ μ£Όμ 곡κ°μ κ°μ§κ³ μνλλ―λ‘ μμΉμ μΌλ‘ νλμ νλ‘μΈμ€λ λ€λ₯Έ νλ‘μΈμ€μ μνμ μν₯μ λ―ΈμΉμ§ λͺ»ν¨
- νλ ₯ νλ‘μΈμ€(Cooperating process)
- νλ‘μΈμ€ νλ ₯ 맀컀λμ¦μ ν΅ν΄ νλμ νλ‘μΈμ€κ° λ€λ₯Έ νλ‘μΈμ€μ μνμ μν₯μ λ―ΈμΉ μ μμ
- νλ‘μΈμ€ κ° νλ ₯ 맀컀λμ¦(IPC: Interprocess Communication)
- λ©μμ§λ₯Ό μ λ¬νλ λ°©λ²
- message passing: 컀λμ ν΅ν΄ λ©μΈμ§ μ λ¬
- μ£Όμ 곡κ°μ 곡μ νλ λ°©λ²
- shared memory:μλ‘ λ€λ₯Έ νλ‘μΈμ€ κ°μλ μΌλΆ μ£Όμ 곡κ°μ 곡μ νκ² νλ shared memory λ©μ»€λμ¦μ΄ μμ
- λ©μμ§λ₯Ό μ λ¬νλ λ°©λ²
thread: threadλ μ¬μ€μ νλμ νλ‘μΈμ€μ΄λ―λ‘ νλ‘μΈμ€ κ° νλ ₯μΌλ‘ 보기λ μ΄λ ΅μ§λ§ λμΌν processλ₯Ό ꡬμ±νλ threadλ€κ°μλ μ£Όμ 곡κ°μ 곡μ νλ―λ‘ νλ ₯μ΄ κ°λ₯
Message Passing
- Message system
- νλ‘μΈμ€ μ¬μ΄μ 곡μ λ³μ(shared variable)λ₯Ό μΌμ²΄ μ¬μ©νμ§ μκ³ ν΅μ νλ μμ€ν
- Direct Communication
- ν΅μ νλ €λ νλ‘μΈμ€μ μ΄λ¦μ λͺ μμ μΌλ‘ ν μ
- Indirect Communication
- mailbox λλ portλ₯Ό ν΅ν΄ λ©μΈμ§λ₯Ό μ§μ μ λ¬.