CS/운영체제

[운영체제] ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ

1eehyunji 2023. 8. 28. 00:10

ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ κ°€μ§€ μƒνƒœ 값을 κ°€μ§„λ‹€. 

생성(create)

생성 μƒνƒœλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λœ μƒνƒœλ₯Ό μ˜λ―Έν•˜λ©°, fork() λ˜λŠ” exec() ν•¨μˆ˜λ₯Ό 톡해 μƒμ„±ν•œλ‹€. μ΄λ•Œ PCB(Process Control Block)κ°€ ν• λ‹Ήλœλ‹€.

  • fork()λŠ” λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ μ£Όμ†Œ 곡간을 κ·ΈλŒ€λ‘œ λ³΅μ‚¬ν•˜λ©°, μƒˆλ‘œμš΄ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. μ£Όμ†Œ κ³΅κ°„λ§Œ 볡사할 뿐이고 λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ 비동기 μž‘μ—… 등은 μƒμ†ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • exec()λŠ” μƒˆλ‘­κ²Œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. 

μ€€λΉ„(ready)

μ€€λΉ„ μƒνƒœλŠ” λ©”λͺ¨λ¦¬ 곡간이 μΆ©λΆ„ν•  경우 λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήλ°›κ³ , μ•„λ‹ˆλ©΄ μ•„λ‹Œ μƒνƒœλ‘œ λŒ€κΈ°λ₯Ό ν•˜κ³  μžˆλ‹€κ°€ CPU μŠ€μΌ€μ€„λŸ¬λ‘œλΆ€ν„° CPU μ†Œμœ κΆŒμ΄ λ„˜μ–΄μ˜€κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœμ΄λ‹€. μ΄λ•Œ CPU μ†Œμœ κΆŒμ„ λ°›μ•„ μ‹€ν–‰ μƒνƒœλ‘œ λ“€μ–΄κ°€λŠ” 것을 λ””μŠ€νŒ¨μΉ˜(dispatch)라 ν•œλ‹€.

μ‹€ν–‰(running)

CPU μ†Œμœ κΆŒκ³Ό λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήλ°›κ³  ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰ 쀑인 μƒνƒœλ₯Ό μ˜λ―Έν•œλ‹€. 

λŒ€κΈ°(wait)

μ–΄λ–€ μ΄λ²€νŠΈκ°€ λ°œμƒν•œ 이후 κΈ°λ‹€λ¦¬λ©΄μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ μ°¨λ‹¨λœ μƒνƒœμ΄λ‹€. I/O λ””λ°”μ΄μŠ€μ— μ˜ν•œ μΈν„°λŸ½νŠΈλ‘œ 이런 ν˜„μƒμ΄ 많이 λ°œμƒν•œλ‹€.

μ’…λ£Œ(terminated)

μ’…λ£Œ μƒνƒœλŠ” λ©”λͺ¨λ¦¬μ™€ CPU μ†Œμœ κΆŒμ„ λͺ¨λ‘ 놓고 κ°€λŠ” μƒνƒœλ₯Ό λ§ν•œλ‹€. μ’…λ£ŒλŠ” μžμ—°μŠ€λŸ½κ²Œ μ’…λ£Œλ˜κΈ°λ„ ν•˜μ§€λ§Œ, ν• λ‹Ήλœ μžμ›μ˜ ν•œκ³„μΉ˜λ₯Ό λ„˜μ–΄μ„œκ±°λ‚˜ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜κ±°λ‚˜, μ‚¬μš©μžκ°€ process.kill λ“± μ—¬λŸ¬ λͺ…λ Ήμ–΄λ‘œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œν•  λ•Œ λ°œμƒν•œλ‹€.