운영체제

프로세스와 스레드의 차이 : 쉬운 설명

♠디지털 모험일지♠ 2024. 12. 10. 12:01
728x90
반응형
SMALL

1. 기본 정의

  • 프로세스(Process): 실행 중인 프로그램의 독립적인 단위.
    • 비유: 여러 개의 독립된 공장에서 각자 다른 물건을 생산.
  • 스레드(Thread): 프로세스 안에서 실행되는 작은 작업 단위.
    • 비유: 하나의 공장 안에서 여러 라인이 동시에 물건을 생산.

2. 주요 차이점

   

구분 프로세스 스레드
독립성 프로세스는 독립적. 한 프로세스가 종료되면 다른 프로세스에 영향을 주지 않음. 스레드는 같은 프로세스 안에서 메모리와 자원을 공유함.
메모리 각 프로세스는 독립된 메모리 공간을 사용. 스레드는 프로세스 내에서 메모리를 공유함.
오버헤드 프로세스 간 전환(Context Switching)은 비용이 큼. 스레드 간 전환은 비용이 적음.
통신 방식 프로세스 간 통신(IPC)은 복잡하고 느림. 스레드는 같은 메모리를 공유하므로 통신이 빠름.
실행 단위 프로세스는 독립적으로 실행되는 프로그램. 스레드는 프로세스 안에서 동시에 실행되는 작은 작업.

3. 비유로 쉽게 이해하기

1) 독립성과 공유

  • 프로세스:
    • 여러 개의 공장(프로세스)이 각각 독립적으로 작업을 함.
    • 한 공장이 정전(오류)으로 멈춰도 다른 공장에는 영향이 없음.
  • 스레드:
    • 한 공장 안에서 여러 작업 라인(스레드)이 동시에 작업을 함.
    • 공장 전체(프로세스)에 문제가 생기면 모든 작업 라인(스레드)도 멈춤.

2) 메모리 사용

  • 프로세스:
    • 공장이 별도의 창고(메모리)를 사용함.
    • 다른 공장과 창고를 공유하지 않음.
  • 스레드:
    • 같은 공장의 여러 작업 라인이 하나의 창고를 공유함.
    • 자료를 공유하기 쉽지만, 충돌 문제가 발생할 가능성도 있음.

3) 오버헤드

  • 프로세스 간 전환:
    • 공장에서 다른 공장으로 작업을 옮기려면, 모든 자료를 옮겨야 하기 때문에 시간이 많이 걸림.
  • 스레드 간 전환:
    • 같은 공장 내에서 작업 라인만 바꾸면 되므로 더 빠르고 간단함.

4. 언제 프로세스를 사용하고 언제 스레드를 사용하는가?

  • 프로세스 사용:
    • 독립적인 작업이 필요하고, 작업 간 충돌을 방지해야 할 때.
    • 예: 웹 브라우저(크롬)에서 각 탭을 별도의 프로세스로 실행.
  • 스레드 사용:
    • 같은 작업에서 여러 부분을 동시에 처리해야 할 때.
    • 예: 웹 브라우저에서 한 탭 안에서 이미지 로딩, 텍스트 렌더링 등을 동시에 실행.

용어 정리

프로세스 실행 중인 독립적인 프로그램 (예: 인터넷 창 하나, 워드 프로그램).
스레드 프로세스 안에서 실행되는 작은 작업 단위 (예: 한 인터넷 창에서 텍스트 로딩, 이미지 로딩).
독립성 한 작업(프로세스)이 다른 작업과 영향을 주고받지 않음.
메모리 공유 여러 작업(스레드)이 같은 저장 공간을 함께 사용함.
오버헤드 작업을 바꿀 때 드는 시간과 자원 (비용).
IPC (Inter-Process Communication) 서로 다른 작업(프로세스)들이 정보를 주고받는 방법.
Context Switching 현재 작업을 중단하고 다른 작업으로 전환하는 과정.

쉬운 요약

  1. 프로세스는 독립적인 프로그램(여러 공장)이고, 스레드는 같은 프로그램 안의 작업 단위(공장 안의 작업 라인).
  2. 프로세스는 독립적이라서 안전하지만, 전환 비용이 큼.
  3. 스레드는 메모리를 공유하고 빠르게 동작하지만, 문제가 발생하면 전체 프로세스가 멈출 가능성이 있음.
반응형
SMALL