1. fork() μμ€ν
μ½

νμ¬ μ€νμ€μΈ νλ‘μΈμ€μ 볡μ¬λ³Έμ μμ±νλ€. μ΄μ체μ κ° μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±νκ³ μ΄ μλ‘μ΄ νλ‘μΈμ€λ μλ³Έ νλ‘μΈμ€μ λ©λͺ¨λ¦¬ 곡κ°μ 볡μ¬νμ¬ κ°μ§κ² λλ€.
λΆλͺ¨ νλ‘μΈμ€μλ μλ‘ μμ±λ μμ νλ‘μΈμ€μ PIDλ₯Ό λ°ννκ³ , μμ νλ‘μΈμ€μλ 0μ λ°ννλ€. λ°νκ°μ΄ λ€λ₯΄κΈ° λλ¬Έμ λΆλͺ¨, μμ νλ‘μΈμ€κ° μλ‘ λ€λ₯Έ μμ μ νλλ‘ μ½λλ₯Ό μ§€ μ μλ€.
rcμ μ΄λ€ κ°μ΄ 리ν΄λμλμ§ νμΈνλ©΄, νμ¬ μ€νμ€μΈ νλ‘μΈμ€κ° λΆλͺ¨ νλ‘μΈμ€μΈμ§, μμ νλ‘μΈμ€μΈμ§ μ μ μλ€.

CPU Schedulerκ° μ€νν νλ‘μΈμ€λ₯Ό μ ννλλ° μ΄ λ μμ νλ‘μΈμ€κ° λ¨Όμ μ€νλ μ μλ€. νμ λΆλͺ¨ νλ‘μΈμ€κ° λ¨Όμ μ€νλλ κ²μ μλλ€.
2. wait() μμ€ν
μ½

λΆλͺ¨ νλ‘μΈμ€κ° μμ νλ‘μΈμ€κ° μ’ λ£λ λκΉμ§ κΈ°λ€λ¦¬κ² νλ μμ€ν μ½. μ΄ ν¨μλ₯Ό νΈμΆνλ©΄ λΆλͺ¨ νλ‘μΈμ€λ μμ νλ‘μΈμ€κ° μ’ λ£λ λκΉμ§ λΈλ‘λλ€. μμ νλ‘μΈμ€κ° μ’ λ£λλ©΄ μ΄μ 체μ λ λΆλͺ¨ νλ‘μΈμ€μκ² μ μ΄λ₯Ό λ°ννκ³ . μμ νλ‘μΈμ€μ μ’ λ£ μνλ₯Ό λΆλͺ¨ νλ‘μΈμ€μκ² μ λ¬νλ€.

λ κ°μ§ case λͺ¨λ μμ νλ‘μΈμ€κ° λ¨Όμ μΆλ ₯νλ€.
- λΆλͺ¨ νλ‘μΈμ€κ° λ¨Όμ μ€νλλ κ²½μ° -> λ°λ‘
wait()μ νΈμΆ. μ΄ μμ€ν μ½μ μμ νλ‘μΈμ€κ° μ’ λ£λ λκΉμ§ 리ν΄νμ§ μλλ€. -> μμ νλ‘μΈμ€κ° λ¨Όμ μΆλ ₯νλ€. - μμ νλ‘μΈμ€κ° λ¨Όμ μ€νλλ κ²½μ° -> μμ νλ‘μΈμ€κ° λ¨Όμ μΆλ ₯νλ€.
3. exex() μμ€ν
μ½

νμ¬ μ€νμ€μΈ νλ‘μΈμ€μ λ©λͺ¨λ¦¬ 곡κ°μ μλ‘μ΄ νλ‘κ·Έλ¨μΌλ‘ λ체νλ μμ€ν μ½. μ΄ ν¨μλ₯Ό νΈμΆνλ©΄ μ΄μ체μ λ νμ¬ νλ‘μΈμ€μ λ©λͺ¨λ¦¬ 곡κ°μ μΈλ‘μ΄ νλ‘κ·Έλ¨μΌλ‘ λ체νκ³ , μλ‘μ΄ νλ‘κ·Έλ¨μ λ©μΈ ν¨μλ₯Ό μ€ννλ€. μκΈ° μμ μ΄ μλ λ€λ₯Έ νλ‘κ·Έλ¨μ μ€νν΄μΌ ν λ μ¬μ©νλ€. exex() ν¨μκ° μ±κ³΅νλ©΄ κΈ°μ‘΄ νλ‘κ·Έλ¨μ 리ν΄νμ§ μλλ€.

execvp() μμ€ν
μ½μ νΈμΆνλ©΄, μμ νλ‘μΈμ€μ λ©λͺ¨λ¦¬ 곡κ°μ΄ μλ‘μ΄ νλ‘κ·Έλ¨μΈ wcλ‘ λ체λκ³ , μλ μμ νλ‘μΈμ€λ 리ν΄λμ§ μλλ€.
4. μ μ΄λ° APIλ₯Ό?
UNIXμ μμ ꡬννκΈ° μν΄μλ fork()μ exec()μ λΆλ¦¬ν΄μΌ νλ€. κ·ΈλμΌλ§ μμ΄ fork() λ₯Ό νΈμΆνκ³ exec()λ₯Ό νΈμΆνκΈ° μ μ μ½λλ₯Ό μ€νν μ μλ€.
μμ ν둬ννΈλ₯Ό νμνκ³ μ¬μ©μκ° λ¬΄μΈκ° μ
λ ₯νκΈ°λ₯Ό κΈ°λ€λ¦°λ€. κ·Έλ¦¬κ³ λͺ
λ Ήμ΄λ₯Ό μ
λ ₯νλ€. λλΆλΆμ μμ νμΌ μμ€ν
μμ μ€ν νμΌμ μμΉλ₯Ό μ°Ύκ³ λͺ
λ Ήμ΄λ₯Ό μ€ννκΈ° μνμ¬ fork()λ₯Ό νΈμΆνμ¬ μλ‘μ΄ μμ νλ‘μΈμ€λ₯Ό λ§λ λ€. κ·Έλ° ν exec()μ λ³ν μ€ νλλ₯Ό νΈμΆνμ¬ νλ‘κ·Έλ¨μ μ€νμν¨ ν wait()μ νΈμΆνμ¬ λͺ
λ Ήμ΄κ° λλκΈ°λ₯Ό κΈ°λ€λ¦°λ€. μμ νλ‘μΈμ€κ° μ’
λ£λλ©΄ μμ wait()μΌλ‘λΆν° 리ν΄νκ³ λ€μ ν둬ννΈλ₯Ό μΆλ ₯νκ³ λ€μ λͺ
λ Ήμ΄λ₯Ό κΈ°λ€λ¦°λ€.


p4λ₯Ό μ€ννλ©΄ νλ©΄μ μλ¬΄λ° μΌλ μΌμ΄λμ§ μλλ€.
κ·Έλ¬λ μ€μ λ‘λ λ€μκ³Ό κ°μ μΌμ΄ λ°μνμλ€.
p4λfork()λ₯Ό νΈμΆνμ¬ μλ‘μ΄ μμ νλ‘μΈμ€λ₯Ό μμ±νλ€.- 그리κ³
wait()νΈμΆ ν λκΈ°νλ€. - μμ νλ‘μΈμ€λ μΆλ ₯μ μ¬μ§μ νλ€. (2λ², 3λ² μ΄λ€ μΌμ΄ λ¨Όμ λ°μνλμ§ μ μ μμ)
execvp()λ₯Ό νΈμΆνμ¬wcνλ‘κ·Έλ¨μ μ€νμν¨λ€.
UNIX νμ΄νκ° μ΄μ μ μ¬ν λ°©μμΌλ‘ ꡬνλμ§λ§, pipe() μμ€ν
μ½μ ν΅ν΄ μμ±λλ€. ν νλ‘μΈμ€μ μΆλ ₯κ³Ό λ€λ₯Έ νλ‘μΈμ€μ μ
λ ₯μ΄ λμΌν νμ΄νμ μ°κ²°λλ€. ν νλ‘μΈμ€μ μΆλ ₯μ μμ°μ€λ½κ² λ€μ νλ‘μΈμ€μ μ
λ ₯μΌλ‘ μ¬μ©λκ³ , λͺ
λ Ήμ΄ μ²΄μΈμΌλ‘ μ¬μ©λλ€.
5. κΈ°ν API
kill()μμ€ν μ½μ νλ‘μΈμ€μκ² μκ·Έλμ 보λΈλ€. μκ·Έλμ νλ‘μΈμ€μ μ€λ¨, μμ λ±μ μμ μ μ¬μ©λλ€. μκ·Έλμ΄λΌλ λ©μ»€λμ¦μ μΈλΆ μ¬κ±΄μ νλ‘μΈμ€μκ² μ λ¬νλ ν λμ΄λ€.psλͺ λ Ήμ΄λ μ΄λ€ νλ‘μΈμ€κ° μ€νμ€μΈμ§ μμ보기 μν΄ μ¬μ©λλ€.topμμ μμ€ν μ μ‘΄μ¬νλ νλ‘μΈμ€μ κ·Έ νλ‘μΈμ€κ° cpu λ° λ€λ₯Έ μμλ€μ μΌλ§λ μ¬μ©νκ³ μλμ§λ₯Ό 보μ¬μ€λ€.
μ°Έκ³ : OSTEP κ΅μ¬