✅ 1. 프로세스(Process)란?

  • 정의: 실행 중인 프로그램 (OS에서 독립적으로 관리하는 작업 단위)
  • 특징:
    • 각각 독립된 메모리 공간(코드, 데이터, 힙, 스택)을 가짐
    • 프로세스 간 자원 공유 불가 (IPC 방식으로만 가능)
    • 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있음
  • 예제:
    • 크롬 브라우저의 각 탭 (각각의 탭이 개별 프로세스로 실행)
    • 터미널에서 실행한 Python 스크립트

✅ 2. 쓰레드(Thread)란?

  • 정의: 프로세스 내에서 실행되는 작은 단위 (Lightweight Process)
  • 특징:
    • 동일한 메모리 공간을 공유 (코드, 데이터, 힙은 공유하지만 스택은 개별적)
    • 컨텍스트 스위칭 비용이 프로세스보다 낮음
    • 하나의 프로세스에서 여러 쓰레드를 실행하면 병렬 처리 가능
  • 예제:
    • 크롬 브라우저 내에서 여러 개의 탭이 동시에 실행
    • 게임에서 캐릭터 이동, 배경 음악, 충돌 감지 등이 별도 쓰레드로 동작

✅ 3. 프로세스 vs 쓰레드 비교표

비교 항목 프로세스 (Process) 쓰레드 (Thread)
메모리 공간 독립적 공유 (코드, 데이터, 힙)
실행 단위 개별 실행 프로세스 내의 실행 단위
자원 공유 IPC 필요 (느림) 공유 가능 (빠름)
컨텍스트 스위칭 비용 높음 (OS가 프로세스 간 전환) 낮음 (같은 프로세스 내 전환)
병렬 실행 가능 (멀티 프로세싱) 가능 (멀티 쓰레딩)
예제 브라우저의 여러 창 브라우저의 여러 탭

 


✅ 4. 언제 프로세스를 쓰고, 언제 쓰레드를 쓸까?

 

상황 프로세스 사용 쓰레드 사용
CPU 사용량이 높은 작업
IO 작업(파일, 네트워크)
독립적인 작업 실행 필요
데이터 공유 필요 ❌ (IPC 필요) ✅ (메모리 공유)

✅ 5. 결론

  • 프로세스는 완전히 독립된 실행 단위, 쓰레드는 같은 프로세스 내에서 실행되는 가벼운 실행 단위
  • 병렬 처리가 필요한 경우:
    • CPU 바운드 작업(연산 집중적) → 멀티프로세스
    • IO 바운드 작업(네트워크, 파일 처리) → 멀티쓰레드
  • 자원 공유가 필요하면 쓰레드, 독립성이 필요하면 프로세스 사용

'개발지식' 카테고리의 다른 글

ERD (Entity Relationship Diagram)  (6) 2025.06.15
RAM 영역  (0) 2025.03.04

+ Recent posts