π 01. νλ‘μΈμ€ μμ± (Process Creation)
- νλ‘μΈμ€ μ΄λ»κ² λ§λ€μ΄μ§λκ°?
-> νλ‘μΈμ€μ μμ±μ λκ°λ§λλκ°?
-> λΆλͺ¨ νλ‘μΈμ€κ° λ§λ λ€.
-> μμ±νλ λ°©λ²μ λ³΄ν΅ λ³΅μ μμ±μ νκ² λλ€.
-> νλ‘μΈμ€λ λΆλͺ¨κ° μμμ λ§λλλ° μ¬λΏμ λ§λ€ μ μλ€.
-> νλ‘μΈμ€μ κ³μΈ΅λλ νΈλ¦¬ννλ‘ νμ±λλ€.
-> νλ‘μΈμ€κ° μ€νμ΄ λλ €λ©΄ μμμ΄ νμνκ³ μ΄μ체μ λ‘λΆν° λ°λλ€. λΆλͺ¨μ μμμ 곡μ ν λλ μκ³ μλ λλ μλ€
-> μμΉμ μΌλ‘λ μμμ 곡μ νμ§λ μλλ€. CPUλ₯Ό μ»μΌλ €κ³ κ²½μμ ν¨
-> νλ‘μΈμ€κ° μ€νμ΄ λ λ λΆλͺ¨μ μμμ΄ κ³΅μ‘΄νλ©° μνλλ κ²½μ°κ° μκ³ μμμ νλ μμ±ν λ€μ μμμ΄ μ’
λ£λ λκΉμ§ λΆλͺ¨κ° κΈ°λ€λ¦¬λ κ·Έλ° λͺ¨λΈμ΄ μλ€.
-
νλ‘μΈμ€μ μμ±μ λΆλͺ¨κ° μμμ μμ±νλ€.
-> μ΄λ»κ² μμ±μ νλκ°? 볡μ μμ±
-> μμμ λΆλͺ¨μ μ£Όμ곡κ°μ 볡μ¬ν¨, μ΄μ체μ μ μλ PCBλΌλμ§ μμμ 볡μ¬νλ€.
-> 볡μ μμ±μ νκ² λλ©΄ μ»΄ν¨ν°μμ μ‘΄μ¬νλ λͺ¨λ νλ‘μΈμ€λ λͺ¨λ κ°μ μΌμ ν΄μΌνλ€
-> νμ§λ§ κ·Έλ κ² νμ§μκ³ κ·Έ 곡κ°μ μλ‘μ΄ νλ‘κ·Έλ¨μ μ¬λ¦΄ μ μλ€.
-> 볡μ λΌλκ²μ΄ fork()λΌλ μμ€ν
μ½
-> λ€λ₯Έ νλ‘κ·Έλ¨μΌλ‘ μ¬λ¦¬λ κ²μ΄ exec() μμ€ν
μ½μ΄λ€.
-
μ¬μ©μ νλ‘μΈμ€κ° μ§μ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μμ±νλ κ²μ΄ μλλΌ μ΄μ체μ λ₯Ό ν΅ν΄μλ§ μμ±μ΄ κ°λ₯νλ€.
-> μμ€ν
μ½μ΄κΈ° λλ¬Έμ μ΄μ체μ κ° λμ ν΄μ£Όλ κ²μ΄λ€.
π 02. νλ‘μΈμ€ μ’
λ£ (Process Termination)
- 보ν΅μ νλ‘μΈμ€κ° μ’
λ£ λ λ exit()μ΄λΌλ μμ€ν
μ½μ νλ©΄ νλ‘μΈμ€κ° μ’
λ£κ° λλ€.
- cμΈμ΄μμ ν¨μ λ§μ§λ§μ ' } 'λ₯Ό νκ² λλ©΄ μ»΄νμΌλ¬κ° μμμ exit()μ νΈμΆν΄μ€λ€.
-> λλ λͺ
μμ μΌλ‘ exit()μμ€ν
μ½μ λΆλ¬μ μ’
λ£ μν¬ μ μλ€.
- μ΄λ κ² νλ‘μΈμ€κ° μ’
λ£κ° λ λ μμμ΄ λΆλͺ¨μκ² λ°μ΄ν°λ₯Ό 보λ΄κ² λλ€.
-> νλ‘μΈμ€μ μΈκ³μμλ λΆλͺ¨ νλ‘μΈμ€ λ³΄λ€ μμ νλ‘μΈμ€κ° λ¨Όμ μ£½μ΄μΌ νλ€. wait()μμ€ν
μ½μ ν΅ν΄μ μ λ¬μ΄ λλ€.
- μλ°μ μΌλ‘ μμ€ν
μ΄ μ’
λ£λλ©΄ exitμ νλ©΄λκ³
λΉμλ°μ μΌλ‘ μμ€ν
μ μ’
λ£μν€λ €λ©΄ abortλ₯Ό νλ©΄ λλ€ (κ°μ μ’
λ£)
-> μ΄λ€ μμμ νκ³μΉλ₯Ό λμ΄μλ©΄ κ°μ μ’
λ£ μν΄
-> μμμκ² μΌμ μν€λ €κ³ μμ±μμΌ°λλ° ν λΉλ μΌμ΄ μμΌλ©΄ μ£½μ
-> λΆλͺ¨ νλ‘μΈμ€κ° μ’
λ£λλ κ²½μ° μμ νλ‘μΈμ€κ° μ’
λ£λλ€. (μ΄ μΈκ³μμ μμμ΄ λ¨Όμ μ£½μ΄μΌ νλ€.)
[μΆμ²] λ°ν¨κ²½ κ΅μλ κ°μ