Computer Science/Operating System

Process 와 Thread μ£Όμ†Œκ³΅κ°„ 차이와 μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ 차이

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2024. 7. 27.

ν”„λ‘œμ„ΈμŠ€(Process)와 μŠ€λ ˆλ“œ(Thread)λŠ” μš΄μ˜μ²΄μ œμ—μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κΈ°λ³Έ λ‹¨μœ„μ΄λ‹€. 

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

ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μ˜λ―Έν•œλ‹€. 각각의 ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ λ©”λͺ¨λ¦¬ 곡간을 가지고 있으며, μžμ‹ μ˜ μžμ›(λ©”λͺ¨λ¦¬, 파일 ν•Έλ“€ λ“±)을 가지고 μžˆλ‹€. μ‹€ν–‰λ˜κΈ° μ „ μ‹€ν–‰ν•  수 μžˆλŠ” νŒŒμΌμ„ ν”„λ‘œκ·Έλž¨μ΄λΌκ³  ν•˜κ³  ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œμΌœ 정적인 ν”„λ‘œκ·Έλž¨μ΄ λ™μ μœΌλ‘œ λ³€ν•˜μ—¬ μ‹€ν–‰λ˜λŠ” μƒνƒœλ₯Ό λ§ν•œλ‹€.

이미지 좜처: https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

 

λ©”λͺ¨λ¦¬ 곡간

각각의 ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ μ£Όμ†Œ 곡간을 가지며, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬μ— 직접 μ ‘κ·Όν•  μˆ˜λŠ” μ—†λ‹€.

1. ν…μŠ€νŠΈ(μ½”λ“œ) μ˜μ—­

  • μ‹€ν–‰ν•  ν”„λ‘œκ·Έλž¨ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” μ˜μ—­
  • 보톡 읽기 μ „μš©μœΌλ‘œ μ„€μ •λ˜λ©°, μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€μ—μ„œ κ³΅μœ ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, λ™μΌν•œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” μ—¬λŸ¬ μΈμŠ€ν„΄μŠ€λŠ” λ™μΌν•œ μ½”λ“œ μ˜μ—­μ„ κ³΅μœ ν•  수 μžˆλ‹€.

2. 데이터 μ˜μ—­

  • 정적 데이터 μ„Ήμ…˜: μ΄ˆκΈ°ν™”λœ μ „μ—­ λ³€μˆ˜ 및 정적 λ³€μˆ˜κ°€ μ €μž₯
  • BSS(Block Started by Symbol) μ„Ήμ…˜: μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ μ „μ—­ λ³€μˆ˜μ™€ 정적 λ³€μˆ˜κ°€ μ €μž₯
  • ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œ ν• λ‹Ήλ˜λ©°, ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μ‘΄μž¬ν•œλ‹€.

3. νž™(Heap) μ˜μ—­

  • λ™μ μœΌλ‘œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬κ°€ μ €μž₯λ˜λŠ” μ˜μ—­
  • λŸ°νƒ€μž„ μ‹œ λ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³  ν•΄μ œν•  수 μžˆλ‹€. λ©”λͺ¨λ¦¬ κ΄€λ¦¬μ˜ μ±…μž„μ€ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ μžˆλ‹€. 예λ₯Ό λ“€μ–΄, mallocμ΄λ‚˜ newλ₯Ό μ‚¬μš©ν•˜μ—¬ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³  freeλ‚˜ deleteλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄μ œν•œλ‹€.

4. μŠ€νƒ(Stack) μ˜μ—­

  • ν•¨μˆ˜ 호좜 μ‹œ μƒμ„±λ˜λŠ” 지역 λ³€μˆ˜, ν•¨μˆ˜ 인수, 리턴 μ£Όμ†Œ 등이 μ €μž₯λœλ‹€.
  • ν•¨μˆ˜ 호좜 μ‹œ μŠ€νƒ ν”„λ ˆμž„μ΄ μƒμ„±λ˜κ³ , ν•¨μˆ˜κ°€ μ’…λ£Œλ˜λ©΄ ν•΄λ‹Ή μŠ€νƒ ν”„λ ˆμž„μ΄ μ œκ±°λœλ‹€. LIFO(Last In First Out) λ°©μ‹μœΌλ‘œ κ΄€λ¦¬λœλ‹€.

μ½”λ“œ μ˜μ—­κ³Ό 데이터 μ˜μ—­μ€ μ„ μ–Έν•  λ•Œ κ·Έ 크기가 κ²°μ •λ˜λŠ” 정적 μ˜μ—­μ΄μ§€λ§Œ, μŠ€νƒ μ˜μ—­κ³Ό νž™ μ˜μ—­μ€ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ 크기가 λŠ˜μ–΄λ‚¬λ‹€ 쀄어듀기도 ν•˜λŠ” 동적 μ˜μ—­μ΄λ‹€.

 

μŠ€λ ˆλ“œ(Thread)

μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ€ μ‹€ν–‰ λ‹¨μœ„μ΄λ‹€. 같은 ν”„λ‘œμ„ΈμŠ€ 내에 μŠ€λ ˆλ“œλŠ” λ™μΌν•œ λ©”λͺ¨λ¦¬ 곡간을 κ³΅μœ ν•˜λ©°, ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•  수 μžˆλ‹€.

 

이미지 좜처: https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

 

λ©”λͺ¨λ¦¬ 곡간

μŠ€λ ˆλ“œλŠ” 같은 ν”„λ‘œμ„ΈμŠ€ 내에 μ½”λ“œ(ν…μŠ€νŠΈ) μ˜μ—­, 데이터 μ˜μ—­, νž™ μ˜μ—­μ„ κ³΅μœ ν•΄μ„œ μ‚¬μš©ν•˜κ³ , 각각의 μŠ€νƒκ³Ό μž‘μ€ λ ˆμ§€μŠ€ν„° κ³΅κ°„λ§Œ ν• λ‹Ή λ°›λŠ”λ‹€.

μŠ€λ ˆλ“œλŠ” λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 흐름이닀. 독립적인 μŠ€νƒμ„ μ‚¬μš©ν•¨μœΌλ‘œμ¨ μŠ€λ ˆλ“œλŠ” λ‹€λ₯Έ μŠ€λ ˆλ“œμ˜ ν•¨μˆ˜ ν˜ΈμΆœμ΄λ‚˜ 지역 λ³€μˆ˜μ— 영ν–₯을 주지 μ•Šκ³ , μžμ‹ λ§Œμ˜ 독립적인 μ‹€ν–‰ 흐름을 μœ μ§€ν•  수 μžˆλ‹€.

 

λ©€ν‹° ν”„λ‘œμ„Έμ‹±, λ©€ν‹° μŠ€λ ˆλ”© ν™˜κ²½μ‹œ, ν”„λ‘œμ„ΈμŠ€ λ¬Έλ§₯ μ „ν™˜κ³Ό μŠ€λ ˆλ“œ λ¬Έλ§₯ μ „ν™˜ 비ꡐ

  1. μ£Όμ†Œ 곡간 곡유
    • ν”„λ‘œμ„ΈμŠ€: μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λŠ” 독립적인 μ£Όμ†Œ 곡간을 κ°€μ§€λ―€λ‘œ, νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ„ λ³€κ²½ν•΄μ•Ό ν•œλ‹€. λ©”λͺ¨λ¦¬ 맀핑 정보λ₯Ό λ¬΄νš¨ν™”ν•˜κ³  λ‹€μ‹œ λ‘œλ“œν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λΉ„μš©μ΄ 많이 λ“ λ‹€.
    • μŠ€λ ˆλ“œ: λ™μΌν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μŠ€λ ˆλ“œλŠ” 같은 μ£Όμ†Œ 곡간을 κ³΅μœ ν•˜λ―€λ‘œ, νŽ˜μ΄μ§€ ν…Œμ΄λΈ”μ„ λ³€κ²½ν•  ν•„μš”κ°€ μ—†λ‹€. λ”°λΌμ„œ λ©”λͺ¨λ¦¬ 맀핑 정보λ₯Ό λ¬΄νš¨ν™”ν•  ν•„μš”κ°€ μ—†κ³ , 이둜 인해 λΉ„μš©μ΄ μ ˆκ°λœλ‹€.
  2. μΊμ‹œ λ¬΄νš¨ν™”
    • ν”„λ‘œμ„ΈμŠ€: ν”„λ‘œμ„ΈμŠ€ κ°„ μ „ν™˜ μ‹œ, CPU μΊμ‹œ(λͺ…λ Ήμ–΄ μΊμ‹œ, 데이터 μΊμ‹œ)λ₯Ό λ¬΄νš¨ν™”ν•˜κ³  λ‹€μ‹œ λ‘œλ“œν•΄μ•Ό ν•œλ‹€.
    • μŠ€λ ˆλ“œ: λ™μΌν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μŠ€λ ˆλ“œλŠ” 같은 μ£Όμ†Œ 곡간을 κ³΅μœ ν•˜λ―€λ‘œ, μΊμ‹œ λ¬΄νš¨ν™”κ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€.
  3. 데이터 경쀑
    • ν”„λ‘œμ„ΈμŠ€: PCBμ—λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ λ©”λͺ¨λ¦¬ 관리 정보, μ—΄λ¦° 파일 λͺ©λ‘ λ“± 더 λ§Žμ€ 정보λ₯Ό μ €μž₯ν•˜λ―€λ‘œ μƒλŒ€μ μœΌλ‘œ 무겁고, κ·ΈλŸ¬λ―€λ‘œ 볡원해야할 양도 λ§Žμ•„μ§„λ‹€.
    • μŠ€λ ˆλ“œ: TCBλŠ” μŠ€λ ˆλ“œμ˜ λ ˆμ§€μŠ€ν„° μƒνƒœ, μŠ€νƒ 포인터 λ“±μ˜ 정보λ₯Ό μ €μž₯ν•˜κΈ°μ— μƒλŒ€μ μœΌλ‘œ 가볍닀.

λŒ“κΈ€