2026-02-08

프로세스와 스레드

프로세스(Process)

실행 중인 프로그램의 독립적인 단위

운영체제로부터 자원을 할당받은 작업의 단위

image.png

  • 프로그램(.exe, .app)을 실행하면 → 프로세스 생성
  • OS로부터 자원을 독립적으로 할당받음

⇒ 프로세스는 자원과 메모리를 독립적으로 소유한다.

자원 구조

  • 코드(Code/Text)
  • 데이터(Data)
  • 힙(Heap)
  • 스택(Stack)
  • 독립된 메모리 공간

스레드(Thread)

프로세스 내부에서 실행되는 작업 흐름의 단위

프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

image.png

  • 하나의 프로세스는 하나 이상의 스레드를 갖는다.
  • 스레드들은 자원을 공유
  • 여러 작업을 동시에 처리 가능
  • 같은 프로세스의 메모리 공유

스레드가 가지는 것

  • 스택(Stack)
  • 프로그램 카운터(PC)
  • 레지스터

공유하는 것

  • 코드 영역
  • 힙
  • 데이터 영역

프로세스 vs 스레드

프로세스는 안정성, 스레드는 성능에 유리하다.

구분 프로세스 스레드
메모리 독립 공유
안정성 높음 낮음
생성 비용 큼 작음
컨텍스트 스위칭 느림 빠름
통신 IPC 필요 공유 메모리로 가능
  • 스레드를 쓰는 이유
    • 메모리 낭비 줄임
    • 작업 병렬 처리
    • 속도 향상
  • 프로세스를 여러개 쓰는 이유
    • 각 작업을 격리시켜 안정성 확보
    • 한 프로세스가 장애 나도 전체 영향 줄어듬

멀티프로세스 / 멀티스레드

  • 멀티프로세스
    • 여러 프로세스를 동시에 실행
    • 하나 죽어도 다른 프로세스 영향 없음
    • 메모리 사용량 큼
    • 예 ) 브라우저의 탭 구조
  • 멀티스레드
    • 하나의 프로세스 안에서 여러 스레드 실행
    • 자원 공유 → 성능 좋음
    • 동기화 문제 발생 가능
    • 예) 웹 서버 요청 처리, 게임 루프

컨텍스트 스위칭(Context Switching)

CPU가 실행 중인 작업을 멈추고 다른 작업으로 전환하는 과정

발생 위치

  • 프로세스 ↔ 프로세스
  • 스레드 ↔ 스레드

비용

  • 프로세스 전환 > 스레드 전환
  • 컨텍스트 스위칭 비용은 자원 범위가 클수록 증가한다.

스레드의 문제점: 동기화

  • 여러 스레드가 공유 자원에 동시에 접근
  • 데이터 불일치 발생
  • 멀티스레드는 성능 이점이 있지만 동기화 비용과 복잡도가 따른다.

해결

  • Mutex
  • Semaphore
  • Lock

참고

⇒ 백엔드는 프로세스 / 스레드 구조를 직접 설계

⇒ 프론트엔드는 브라우저가 관리

요약

  • 프로세스: 실행중인 프로그램
  • 스레드: 프로세스 내부의 실행 흐름 단위
  • 프로세스는 자원과 메모리를 분리해 안정성을 확보하고,
  • 스레드는 자원을 공유해 성능을 높인다

참고자료

  • 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
  • https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
  • https://jaehyuuk.tistory.com/213

results matching ""

    No results matching ""