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 ""