λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Computer Science/Operating System

4 Process Outline (+Kernel Space)

by Dowon Kang 2023. 12. 23.

ν”„λ‘œμ„ΈμŠ€λŠ” μ»΄ν“¨ν„° κ³Όν•™μ—μ„œ μ€‘μš”ν•œ κ°œλ…μœΌλ‘œ, μ‹€ν–‰ μ€‘인 ν”„λ‘œκ·Έλž¨μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λŠ” μš΄μ˜ μ²΄μ œμ—μ„œ κ΄€λ¦¬λ˜λ©°, κ°κ° λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€λΌκ³  μƒκ°ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. 

λ‹€μ–‘ν•œ μš΄μ˜ μ²΄μ œμ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±, κ΄€λ¦¬, μŠ€μΌ€μ€„λ§ν•˜κ³  μžμ›μ„ ν• λ‹Ήν•˜λŠ”데 μ‚¬μš©λ˜λŠ” μ—¬λŸ¬ λ©”μ»€λ‹ˆμ¦˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

 

ν¬κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€ (Foreground Process)

ν¬κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€λŠ” ν˜„μž¬ μ‚¬μš©μžμ™€ 직접 μƒν˜Έ μž‘μš©ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ‹€ν–‰ν•œ ν”„λ‘œκ·Έλž¨μ΄λ‚˜ λͺ…령이 ν¬κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜λ©΄ ν•΄λ‹Ή μž‘업이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ μ œμ–΄λ₯Ό κ³„속 μœ μ§€ν•˜λ©°, μ‚¬μš©μžλŠ” κ·Έ μ§„ν–‰ μƒν™©μ„ λ³Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
주둜 ν„°λ―Έλ„ μ°½μ—μ„œ μ‹€ν–‰λœ ν”„λ‘œμ„ΈμŠ€κ°€ ν¬κ·ΈλΌμš΄λ“œμ—μ„œ λ™μž‘ν•©λ‹ˆλ‹€.

 

일반 μ‘μš© ν”„λ‘œκ·Έλž¨λ“€μ΄ λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€λ©΄ 'ν”„λ‘œμ„ΈμŠ€'라 λΆˆλ¦½λ‹ˆλ‹€.

λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€ (Background Process)

λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€λŠ” μ‚¬μš©μžμ™€μ˜ 직접적인 μƒν˜Έ μž‘μš© 없이 μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ±°λ‚˜ λ‘œκ·Έμ•„μ›ƒν•΄λ„ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€λŠ” κ³„μ†ν•΄μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λ₯Ό λ°±κ·ΈλΌμš΄λ“œλ‘œ λ³΄λ‚΄λŠ” 방법은 보톡 λͺ…λ Ήμ–΄ 뒀에 "&"λ₯Ό λΆ™μ΄λŠ” κ²ƒμž…λ‹ˆλ‹€. 

 

 


 

ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝 (Process Control Block, PCB)

PCBλŠ” 운영 μ²΄μ œκ°€ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€. 각 ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ ν•˜λ‚˜μ˜ PCBκ°€ ν• λ‹Ήλ˜λ©°, ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ, λ ˆμ§€μŠ€ν„° κ°’, μŠ€μΌ€μ€„링 μ •λ³΄, λ©”λͺ¨λ¦¬ κ΄€λ¦¬ μ •λ³΄ λ“±κ³Ό κ°™μ€ μ€‘μš”ν•œ μ •λ³΄λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

PCB에 λ“€μ–΄κ°€λŠ” 정보

  • ν”„λ‘œμ„ΈμŠ€ ID (=PID) : νŠΉμ • ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ λΆ€μ—¬ν•˜λŠ” κ³ μœ ν•œ 번호 
  • ν”„λ‘œμ„ΈμŠ€ μƒνƒœ (Process State): ν”„λ‘œμ„ΈμŠ€κ°€ ν˜„μž¬ μ–΄λ–€ μƒνƒœμ— μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ£Όμš” μƒνƒœλ‘œλŠ” μ‹€ν–‰ 쀑, μ€€λΉ„ 쀑, λŒ€κΈ° 쀑 등이 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° (Program Counter): λ‹€μŒμ— μ‹€ν–‰ν•  λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œλ₯Ό κ°€λ¦¬ν‚€λŠ” λ ˆμ§€μŠ€ν„° κ°’μž…λ‹ˆλ‹€.
  • λ ˆμ§€μŠ€ν„° μƒνƒœ 및 κ°’: ν”„λ‘œμ„ΈμŠ€μ˜ λ ˆμ§€μŠ€ν„° 값듀을 μ €μž₯ν•©λ‹ˆλ‹€. (μžμ‹ μ˜ μ°¨λ‘€κ°€ 왔을 λ•Œ, μ΄μ „κΉŒμ§€ μ‚¬μš©ν•œ λ ˆμ§€μŠ€ν„° 쀑간 값을 λͺ¨λ‘ λ³΅μ›ν•˜κΈ° μœ„ν•΄μ„œ) 
  • CPU μŠ€μΌ€μ€„λ§ 정보: ν”„λ‘œμ„ΈμŠ€μ˜ μš°μ„ μˆœμœ„, μŠ€μΌ€μ€„λ§ 큐에 λŒ€ν•œ 정보 등을 ν¬ν•¨ν•©λ‹ˆλ‹€.
  • λ©”λͺ¨λ¦¬ 관리 정보: ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬ ν• λ‹Ήκ³Ό μ‚¬μš©μ— λŒ€ν•œ 정보λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. (νŽ˜μ΄μ§€ ν…Œμ΄λΈ” 정보) 
  • μž…μΆœλ ₯ μƒνƒœ 정보: ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€κ°€ μž…μΆœλ ₯ μž‘μ—…μ„ μˆ˜ν–‰ 쀑인 경우, ν•΄λ‹Ή μƒνƒœμ™€ κ΄€λ ¨λœ 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. 

μ΄λŸ¬ν•œ μ •λ³΄λ“€μ€ PCBλ₯Ό ν†΅ν•΄ μš΄μ˜ μ²΄μ œκ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κ³ , ν”„λ‘œμ„ΈμŠ€ κ°„ μ „ν™˜μ΄λ‚˜ μƒνƒœ λ³€ν™”에 λŒ€μ‘ν•  μˆ˜ μžˆλ„둝 ν•©λ‹ˆλ‹€. PCBλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰μ΄ μΌμ‹œ μ€‘λ‹¨λ˜κ±°λ‚˜ μ „ν™˜λ  λ•Œ ν•„μš”ν•œ λͺ¨λ“  μ •λ³΄λ₯Ό λ³΄μœ ν•˜κ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

 

 

 


 

 

 

1번 ν”„λ‘œμ„ΈμŠ€μ˜ μ°¨λ‘€κ°€ λλ‚˜κ³  2번 μ°¨λ‘€μ˜ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μ‹€ν–‰ μˆœμ„œκ°€ 왔을 λ•Œ, 컴퓨터 λ‚΄λΆ€μ—μ„œ μΌμ–΄λ‚˜λŠ” 과정을 μ‚΄νŽ΄λ΄…μ‹œλ‹€. 1번 ν”„λ‘œμ„ΈμŠ€λŠ” μš°μ„  μ§€κΈˆκΉŒμ§€μ˜ 정보듀을 λ°±μ—…ν•©λ‹ˆλ‹€. 이 정보λ₯Ό λ¬Έλ§₯(Context)라고 λΆ€λ¦…λ‹ˆλ‹€. μ΄λ ‡κ²Œ λ¬Έλ§₯을 백업해두면 μ–Έμ œλ“ μ§€ ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ˜ 싀행을 μž¬κ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

 

λ¬Έλ§₯ κ΅ν™˜(Context Switching)은 μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ λŠμž„μ—†μ΄ λ²ˆκ°ˆμ•„κ°€λ©° μ‹€ν–‰λ˜λŠ” μ›λ¦¬μž…λ‹ˆλ‹€. μ΄λŠ” 운영 μ²΄μ œκ°€ 닀쀑 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§€μ›ν•˜κ³ , 각 ν”„λ‘œμ„ΈμŠ€μ— κ³΅ν‰ν•˜κ²Œ CPU μ‹œκ°„μ„ ν• λ‹Ήν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μž‘μ—…μž…λ‹ˆλ‹€. λ¬Έλ§₯ κ΅ν™˜μ€ ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , λŒ€κΈ° 쀑인 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό λ³΅μ›ν•˜μ—¬ 이전 μƒνƒœμ—μ„œ 계속 싀행될 수 μžˆλ„λ‘ ν•˜λŠ” 과정을 ν¬ν•¨ν•©λ‹ˆλ‹€.

 

λ¬Έλ§₯ κ΅ν™˜μ˜ μ£Όμš” 단계

  1. ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ μ €μž₯: ν˜„μž¬ μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€μ˜ λ ˆμ§€μŠ€ν„° κ°’, ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°, ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 등을 PCB(ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ 블둝)에 μ €μž₯ν•©λ‹ˆλ‹€ 이 정보듀은 λ‚˜μ€‘μ— 이 ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€μ‹œ 싀행될 λ•Œ 이전 μƒνƒœλ‘œ λ³΅μ›ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  2. λ‹€μŒ μ‹€ν–‰ν•  ν”„λ‘œμ„ΈμŠ€ 선택: μŠ€μΌ€μ€„λŸ¬λŠ” λŒ€κΈ° 쀑인 ν”„λ‘œμ„ΈμŠ€ μ€‘μ—μ„œ λ‹€μŒμ— μ‹€ν–‰ν•  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„ νƒν•©λ‹ˆλ‹€. 이 선택은 μš°μ„ μˆœμœ„, λΌμš΄λ“œ 둜빈 μŠ€μΌ€μ€„λ§ λ“± λ‹€μ–‘ν•œ μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜μ— 따라 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
  3. μ„ νƒν•œ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ 볡원: μ„ νƒν•œ ν”„λ‘œμ„ΈμŠ€μ˜ PCBμ—μ„œ μ €μž₯된 정보λ₯Ό 읽어와 ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό λ³΅μ›ν•©λ‹ˆλ‹€. λ ˆμ§€μŠ€ν„° κ°’, ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° 등을 이전에 μ €μž₯된 κ°’μœΌλ‘œ μ„€μ •ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€κ°€ 이전에 μΌμ‹œ μ€‘λ‹¨λœ μ‹œμ μ—μ„œ 계속 싀행될 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
  4. λ‹€μŒ ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰: λ¬Έλ§₯ κ΅ν™˜ ν›„, μ„ νƒλœ ν”„λ‘œμ„ΈμŠ€κ°€ μ΄μ–΄μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€λŠ” μΌμ‹œ μ€‘λ‹¨λ˜κ³ , μ„ νƒλœ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰ μ€‘μœΌλ‘œ μ „ν™˜λ©λ‹ˆλ‹€.

λ¬Έλ§₯ κ΅ν™˜μ€ μžμ› μ†Œλͺ¨κ°€ 큰 μž‘μ—… 쀑 ν•˜λ‚˜μ΄λ©°, μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 효율적인 λ¬Έλ§₯ κ΅ν™˜μ€ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯에 μ€‘μš”ν•œ 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. 쒋은 μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜κ³Ό λ¬Έλ§₯ κ΅ν™˜μ˜ μ΅œμ†Œν™”λŠ” 닀쀑 ν”„λ‘œμ„ΈμŠ€ μ‹œμŠ€ν…œμ˜ νš¨μœ¨μ„±μ„ ν–₯μƒμ‹œν‚€λŠ” 데 κΈ°μ—¬ν•©λ‹ˆλ‹€. PCB(ν”„λ‘œμ„ΈμŠ€ μ œμ–΄ λΈ”둝)와 λ¬Έλ§₯ κ΅ν™˜(Context Switching)은 μ£Όλ‘œ μš΄μ˜μ²΄μ œμ˜ μ»€λ„ μ˜μ—­μ—μ„œ κ΄€λ¦¬λ©λ‹ˆλ‹€.

 

 


Process: A program in execution, representing an instance of a running application or task.

 

Foreground Process: Actively interacts with the user, typically executing tasks in the foreground, allowing user engagement.


Background Process: Operates independently of user interaction, executing tasks in the background without requiring direct user input.


Process Control Block (PCB): A data structure containing essential information about a process, including its state, program counter, and register values.


Context Switch: The process of saving and restoring a process's state, enabling seamless transition between multiple processes in a multitasking environment.


λŒ“κΈ€