Process Management 1 - hochan222/Everything-in-JavaScript GitHub Wiki

ν”„λ‘œμ„ΈμŠ€ 생성 (Process Creation)

  • λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성
  • ν”„λ‘œμ„ΈμŠ€μ˜ 트리(계측ꡬ쑰) 생성
  • ν”„λ‘œμ„ΈμŠ€λŠ” μžμ›μ„ ν•„μš”λ‘œ 함
    • μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° λ°›λŠ”λ‹€
    • λΆ€λͺ¨μ™€ κ³΅μœ ν•œλ‹€
  • μžμ›μ˜ 곡유
    • λΆ€λͺ¨μ™€ μžμ‹μ΄ λͺ¨λ“  μžμ›μ„ κ³΅μœ ν•˜λŠ” λͺ¨λΈ
    • 일뢀λ₯Ό κ³΅μœ ν•˜λŠ” λͺ¨λΈ
    • μ „ν˜€ κ³΅μœ ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈ
  • μˆ˜ν–‰(Execution)
    • λΆ€λͺ¨μ™€ μžμ‹μ€ κ³΅μ‘΄ν•˜λ©° μˆ˜ν–‰λ˜λŠ” λͺ¨λΈ
    • μžμ‹μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ λΆ€λͺ¨κ°€ κΈ°λ‹€λ¦¬λŠ” λͺ¨λΈ
  • μ£Όμ†Œ 곡간
    • μžμ‹μ€ λΆ€λͺ¨μ˜ 곡간을 볡사함
    • μžμ‹μ€ κ·Έ 곡간에 μƒˆλ‘œμš΄ ν”„λ‘œκ·Έλž¨μ„ 올림
  • μœ λ‹‰μŠ€ 예
    • fork() μ‹œμŠ€ν…œ 콜이 μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성
      • λΆ€λͺ¨λ₯Ό κ·ΈλŒ€λ‘œ 볡사
      • μ£Όμ†Œ 곡간 ν• λ‹Ή
    • fork λ‹€μŒμ— μ΄μ–΄μ§€λŠ” exec() μ‹œμŠ€ν…œ μ½œμ„ 톡해 μƒˆλ‘œμš΄ ν”„λ‘œκ·Έλž¨μ„ λ©”λͺ¨λ¦¬μ— 올림

ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ

  • ν”„λ‘œμ„ΈμŠ€κ°€ λ§ˆμ§€λ§‰ λͺ…령을 μˆ˜ν–‰ν•œ ν›„ μš΄μ˜μ²΄μ œμ—κ²Œ 이λ₯Ό μ•Œλ €μ€Œ (exit)
    • μžμ‹μ΄ λΆ€λͺ¨μ—κ²Œ output dataλ₯Ό 보냄 (via wait)
    • ν”„λ‘œμ„ΈμŠ€μ˜ 각쒅 μžμ›λ“€μ΄ μš΄μ˜μ²΄μ œμ—κ²Œ λ°˜λ‚©λ¨
  • λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μžμ‹μ˜ μˆ˜ν–‰μ„ μ’…λ£Œμ‹œν‚΄ (abort)
    • μžμ‹μ΄ ν• λ‹Ή μžμ›μ˜ ν•œκ³„μΉ˜λ₯Ό λ„˜μ–΄μ„¬
    • μžμ‹μ—κ²Œ ν• λ‹Ήλœ νƒœμŠ€ν¬κ°€ 더 이상 ν•„μš”ν•˜μ§€ μ•ŠμŒ
    • λΆ€λͺ¨κ°€ μ’…λ£Œν•˜λŠ” 경우
      • μš΄μ˜μ²΄μ œλŠ” λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜λŠ” 경우 μžμ‹μ΄ 더이상 μˆ˜ν–‰λ˜λ„λ‘ 두지 μ•ŠλŠ”λ‹€
      • 단계적인 μ’…λ£Œ