💻 [운영체제] 프로세스 vs 스레드 차이 정리
2025. 4. 23. 23:45

📌 개념 요약

  • 프로세스(Process)
    • 운영체제로부터 자원을 할당받아 실행 중인 프로그램 단위
    • 독립된 메모리 영역을 가짐 (코드, 데이터, 힙, 스택 전부 별도)
    • 다른 프로세스와 메모리 공유 불가 → 통신 위해 IPC 사용
  • 스레드(Thread)
    • 하나의 프로세스 내에서 실행되는 작은 단위의 작업 흐름
    • 힙/데이터 영역 공유, 스택은 독립적으로 사용
    • 컨텍스트 스위칭 비용이 낮아 빠른 전환 가능

📊 차이점 요약

항목 프로세스 스레드
메모리 구조 완전 독립 힙/데이터 공유, 스택은 개별
생성/종료 비용 큼 (무겁다) 작음 (가볍다)
통신 방식 IPC 사용 공유 자원 접근
안정성 하나 죽어도 영향 없음 하나 죽으면 전체 영향

💡 실무에서의 예시

  • Java 웹 서버 (예: Tomcat)
    • 하나의 프로세스가 실행됨
    • 각 사용자 요청마다 새로운 스레드가 할당됨
    • 성능 최적화를 위해 스레드 풀(Thread Pool) 사용

🧠 내가 이해한 방식

프로세스는 도시, 스레드는 도시 안의 사람들

  • 각 도시는 완전히 독립된 행정 체계 = 프로세스
  • 사람들은 도시 내 자원을 함께 사용 = 스레드
  • 도시 간 협업은 절차 복잡 (IPC), 사람들끼리 협업은 빠름 (공유 메모리)

✍️ 회고

  • 프로세스와 스레드는 운영체제 구조의 기본 중 기본
  • Java 백엔드 개발자로서 스레드 풀 구조 이해가 실무에 크게 연결됨
  • 블로그에 정리하면서 정확히 이해하려고 노력하니 훨씬 오래 기억에 남음