둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (225)
    • 프로그래머스 (1)
      • 해시 (1)
    • BOJ (176)
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (31)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (14)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
      • 누적합 (5)
      • 유니온 파인드 (1)
      • 분할 정복 (2)
    • 자료구조 (15)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (2)
      • 힙 (1)
      • 정렬 (1)
    • C++ (11)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (6)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • STL C++
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

OS

쓰레드와 프로세스 (Thread & Process)

2025. 6. 24. 19:56

프로세스(Process)란?

프로세스는 실행 중인 프로그램으로, 운영체제로부터 자원을 독립적으로 할당받는 실행 단위이다.
하나의 프로세스는 고유한 메모리 공간을 가지며, CPU, 메모리, 파일, 입출력 자원 등을 할당받아 독립적으로 실행된다.

특징

  • 코드, 데이터, 힙, 스택 등 고유의 메모리 공간을 가진다
  • 다른 프로세스와 메모리를 공유하지 않음
  • 프로세스 간 통신은 별도의 메커니즘(IPC, 파이프, 소켓 등)을 사용해야 하므로 통신 비용이 크다
  • 하나의 프로세스가 오류로 종료되더라도 다른 프로세스에는 영향을 주지 않음

쓰레드(Thread)란?

쓰레드는 프로세스 내에서 실행 흐름을 분리한 최소 실행 단위이다.
한 프로세스 내에서 여러 쓰레드가 동시에 실행될 수 있으며, 메모리 공간을 공유하면서 작업을 나누어 수행한다.

특징

  • 같은 프로세스 내의 쓰레드끼리는 코드, 데이터, 힙 영역을 공유
  • 단, 스택은 각 쓰레드가 독립적으로 소유
  • 공유 메모리를 통해 통신이 가능하므로 프로세스보다 통신 비용이 낮고 빠르다
  • 하지만 동기화 문제와 경쟁 조건이 발생할 수 있어 주의가 필요하다
  • 하나의 쓰레드가 예외로 종료되면 전체 프로세스에 영향을 줄 수 있다

프로세스와 쓰레드의 차이

항목 프로세스 쓰레드
정의 운영체제로부터 자원을 독립적으로 할당받은 실행 단위 프로세스 내에서 실행되는 실행 흐름 단위
메모리 공간 코드, 데이터, 힙, 스택 모두 독립 코드, 데이터, 힙은 공유, 스택은 독립
통신 방식 별도 IPC 필요, 느림 메모리 공유로 빠름
안정성 독립적이므로 다른 프로세스에 영향 없음 한 쓰레드 오류 시 전체 프로세스에 영향 가능
생성 비용 비교적 무겁고 느림 상대적으로 가볍고 빠름
사용 예 별개의 앱 실행, 독립적 서버 프로세스 게임 내 AI, 병렬 다운로드, UI 처리 등
저작자표시 (새창열림)

'OS' 카테고리의 다른 글

멀티쓰레드 환경에서 생길 수 있는 문제들  (0) 2025.06.24
다양한 OS 스케줄링 기법  (0) 2025.06.24
경쟁 조건(Race Condition)이란?  (0) 2025.06.24
파편화 (Fragmentation)  (0) 2025.06.24
동기화 객체란?  (0) 2025.06.23
    'OS' 카테고리의 다른 글
    • 멀티쓰레드 환경에서 생길 수 있는 문제들
    • 다양한 OS 스케줄링 기법
    • 경쟁 조건(Race Condition)이란?
    • 파편화 (Fragmentation)
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바