Program : μ–΄λ–€ μž‘μ—…μ„ μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” 파일
Process : μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μžμ›μ„ 할당받은 μž‘μ—…μ˜ λ‹¨μœ„
Thread : ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰ νλ¦„μ˜ λ‹¨μœ„

 

ν”„λ‘œκ·Έλž¨μ΄λž€ 파일이 μ €μž₯μž₯μΉ˜μ— μ €μž₯λ˜μ–΄ μžˆμ§€λ§Œ λ©”λͺ¨λ¦¬μ—λŠ” μ˜¬λΌκ°€ μžˆμ§€ μ•Šμ€ 정적인 μƒνƒœ

 

 

ν”„λ‘œμ„ΈμŠ€ Process

  • λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€ ( 독립적인 개체 )
  • μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήλ°›λŠ” μž‘μ—…μ˜ λ‹¨μœ„
  • 즉, 동적인 κ°œλ…μœΌλ‘œλŠ” μ‹€ν–‰λœ ν”„λ‘œκ·Έλž¨μ„ μ˜λ―Έν•œλ‹€

 

 

  • ν”„λ‘œμ„ΈμŠ€λŠ” 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­(Code, Data, Stack, Heap의 ꡬ쑰)을 ν• λ‹Ήλ°›λŠ”λ‹€.
  • 기본적으둜 ν”„λ‘œμ„ΈμŠ€λ‹Ή μ΅œμ†Œ 1개의 μŠ€λ ˆλ“œ(메인 μŠ€λ ˆλ“œ)λ₯Ό 가지고 μžˆλ‹€.
  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜λ©°, ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ³€μˆ˜λ‚˜ μžλ£Œκ΅¬μ‘°μ— μ ‘κ·Όν•  수 μ—†λ‹€.
  • ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•˜λ €λ©΄ ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신(IPC, inter-process communication)을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. ( Ex. νŒŒμ΄ν”„, 파일, μ†ŒμΌ“ 등을 μ΄μš©ν•œ 톡신 방법 이용 )

 

 

 

μŠ€λ ˆλ“œ Thread

ν”„λ‘œκ·Έλž¨μ΄ λ³΅μž‘ν•΄μ§€κ³  ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜λ§Œμ„ μ‚¬μš©ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κΈ°μ—λŠ” λ²…μ°¨λ‹€. 
ν•œ ν”„λ‘œκ·Έλž¨μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ—¬λŸ¬κ°œ λ§Œλ“œλŠ” 것은 μ•ˆμ •μ„±μ„ μœ„ν•΄ μžμ‹ μ—κ²Œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬ λ‚΄μ˜ μ •λ³΄λ§Œ μ ‘κ·Όν•˜λ„λ‘ μœ λ„ν•˜λŠ” μ œμ•½λ•Œλ¬Έμ— λΆˆκ°€λŠ₯ν•˜λ‹€.
λ”°λΌμ„œ ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ 더 μž‘μ€ μ‹€ν–‰ λ‹¨μœ„μ˜ κ°œλ…μ΄ λ“±μž₯ν•œλ‹€.
  • ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ λ‹¨μœ„
  • ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ •ν•œ μˆ˜ν–‰ 경둜
  • ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„

 

  • μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ 각각 Stack만 λ”°λ‘œ ν• λ‹Ήλ°›κ³  Code, Data, Heap μ˜μ—­μ€ κ³΅μœ ν•œλ‹€.
  • μŠ€λ ˆλ“œλŠ” ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ™μž‘λ˜λŠ” μ—¬λŸ¬ μ‹€ν–‰μ˜ νλ¦„μœΌλ‘œ, ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μ£Όμ†Œ κ³΅κ°„μ΄λ‚˜ μžμ›λ“€(νž™ 곡간 λ“±)을 같은 ν”„λ‘œμ„ΈμŠ€ 내에 μŠ€λ ˆλ“œλΌλ¦¬ κ³΅μœ ν•˜λ©΄μ„œ μ‹€ν–‰λœλ‹€.
  • 같은 ν”„λ‘œμ„ΈμŠ€ μ•ˆμ— μžˆλŠ” μ—¬λŸ¬ μŠ€λ ˆλ“œλ“€μ€ 같은 νž™ 곡간을 κ³΅μœ ν•œλ‹€. λ°˜λ©΄μ— ν”„λ‘œμ„ΈμŠ€λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬μ— 직접 μ ‘κ·Όν•  수 μ—†λ‹€.
  • 각각의 μŠ€λ ˆλ“œλŠ” λ³„λ„μ˜ λ ˆμ§€μŠ€ν„°μ™€ μŠ€νƒμ„ κ°–κ³  μžˆμ§€λ§Œ, νž™ λ©”λͺ¨λ¦¬λŠ” μ„œλ‘œ 읽고 μ“Έ 수 μžˆλ‹€.
  • ν•œ μŠ€λ ˆλ“œκ°€ ν”„λ‘œμ„ΈμŠ€ μžμ›μ„ λ³€κ²½ν•˜λ©΄, λ‹€λ₯Έ μ΄μ›ƒ μŠ€λ ˆλ“œ(sibling thread)도 κ·Έ λ³€κ²½ κ²°κ³Όλ₯Ό μ¦‰μ‹œ λ³Ό μˆ˜ μžˆλ‹€.

 


ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ μž‘λ™λ°©μ‹ 차이

ν”„λ‘œμ„ΈμŠ€κ°€ λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήλ°›λŠ”λ‹€κ³  μ–ΈκΈ‰ν–ˆμ—ˆλ‹€. 이 λ•Œ μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„, Code/Data/Stack/Heap의 ν˜•μ‹μœΌλ‘œ ν• λ‹Ήν•΄ μ€€λ‹€. 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήν•΄ μ£ΌκΈ° λ•Œλ¬Έμ— ν”„λ‘œμ„ΈμŠ€λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ³€μˆ˜λ‚˜ μžλ£Œμ— μ ‘κ·Όν•  수 μ—†λ‹€.

 

 

 

이와 λ‹€λ₯΄κ²Œ μŠ€λ ˆλ“œλŠ” λ©”λͺ¨λ¦¬λ₯Ό μ„œλ‘œ κ³΅μœ ν•  수 μžˆλ‹€κ³  μ–ΈκΈ‰ν–ˆμ—ˆλ‹€. 이에 λŒ€ν•΄ 더 μžμ„Ένžˆ μ„€λͺ…ν•˜μžλ©΄, ν”„λ‘œμ„ΈμŠ€κ°€ 할당받은 λ©”λͺ¨λ¦¬ μ˜μ—­ λ‚΄μ—μ„œ Stack ν˜•μ‹μœΌλ‘œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬ μ˜μ—­μ€ λ”°λ‘œ ν• λ‹Ήλ°›κ³ , λ‚˜λ¨Έμ§€ Code/Data/Heap ν˜•μ‹μœΌλ‘œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ κ³΅μœ ν•œλ‹€. λ”°λΌμ„œ 각각의 μŠ€λ ˆλ“œλŠ” λ³„λ„μ˜ μŠ€νƒμ„ 가지고 μžˆμ§€λ§Œ νž™ λ©”λͺ¨λ¦¬λŠ” μ„œλ‘œ 읽고 μ“Έ 수 있게 λœλ‹€.

 

 

μ—¬κΈ°μ„œ ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œμ˜ μ€‘μš”ν•œ 차이λ₯Ό ν•˜λ‚˜ 더 μ•Œ 수 있게 λœλ‹€. λ§Œμ•½ ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λ‹€κ°€ 였λ₯˜κ°€ λ°œμƒν•΄μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ κ°•μ œλ‘œ μ’…λ£Œλœλ‹€λ©΄, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ μ–΄λ–€ 영ν–₯이 μžˆμ„κΉŒ? κ³΅μœ ν•˜κ³  μžˆλŠ” νŒŒμΌμ„ μ†μƒμ‹œν‚€λŠ” κ²½μš°κ°€ μ•„λ‹ˆλΌλ©΄ μ•„λ¬΄λŸ° 영ν–₯을 주지 μ•ŠλŠ”λ‹€.

 

그런데 μŠ€λ ˆλ“œμ˜ κ²½μš°λŠ” λ‹€λ₯΄λ‹€. μŠ€λ ˆλ“œλŠ” Code/Data/Heap λ©”λͺ¨λ¦¬ μ˜μ—­μ˜ λ‚΄μš©μ„ κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— μ–΄λ–€ μŠ€λ ˆλ“œ ν•˜λ‚˜μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•œλ‹€λ©΄ 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λ‹€λ₯Έ μŠ€λ ˆλ“œ λͺ¨λ‘κ°€ κ°•μ œλ‘œ μ’…λ£Œλœλ‹€.

 

 

μ™œ 이런 λ°©μ‹μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν• κΉŒ?

μŠ€λ ˆλ“œλŠ” "νλ¦„μ˜ λ‹¨μœ„"라고 λ§ν–ˆλŠ”λ°, μ •ν™•νžˆλŠ” CPU μž…μž₯μ—μ„œμ˜ μ΅œμ†Œ μž‘μ—… λ‹¨μœ„κ°€ λœλ‹€. CPUλŠ” μž‘μ—…μ„ μ²˜λ¦¬ν•  λ•Œ μŠ€λ ˆλ“œλ₯Ό μ΅œμ†Œ λ‹¨μœ„λ‘œ μ‚Όκ³  μž‘μ—…μ„ ν•œλ‹€. 반면 μš΄μ˜μ²΄μ œλŠ” μ΄λ ‡κ²Œ μž‘μ€ λ‹¨μœ„κΉŒμ§€ 직접 μž‘μ—…ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œ κ΄€μ μ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ΅œμ†Œ μž‘μ—… λ‹¨μœ„κ°€ λœλ‹€.
μ—¬κΈ°μ„œ μ€‘μš”ν•œ 점은 ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό κ°€μ§„λ‹€λŠ” 점이닀. λ”°λΌμ„œ 운영체제 κ΄€μ μ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ΅œμ†Œ μž‘μ—… λ‹¨μœ„μΈλ°, 이 λ•Œλ¬Έμ— 같은 ν”„λ‘œμ„ΈμŠ€ μ†Œμ†μ˜ μŠ€λ ˆλ“œλΌλ¦¬ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•˜μ§€ μ•Šμ„ 수 μ—†λ‹€.

 


Reference.

μ°Έκ³ 

μ°Έκ³ 2

+ Recent posts