Process와 Thread

신동훈·2023년 4월 13일
0

Back-end

목록 보기
4/5

0. 목표

Process와 Thread에 대해 알기
Process와 Thread의 차이를 알기

1. Process란?

  • 운영체제로부터 시스템 자원을 할당받은 작업의 단위
  • CPU 시간, 메모리 등을 할당받아 실행되는 프로그램
    • Process <= 메모리 (Code + Data + Heap + Stack) 할당
  • 어플리케이션, 프로그램 하나를 프로세스라 할 수 있다.
  • 하나 이상의 Thread를 가지고 있다.
  • Process마다 별도의 메모리 영역을 가지고 있기에 다른 프로세스와 데이터 공유를 위해서는 다른 메커니즘이 필요하다. (성능 저하)
    • IPC(Inter-Process Communication)

2. Thread란?

  • Process 내에서 할당 받은 자원을 이용하는 실행의 단위
  • 고유한 Stack을 가진다. Thread와 Code, Data, Heap은 공유한다.
  • Process 내 여러 Thread가 있을 수 있어 서로의 데이터 공유에 유리하지만, 하나의 Thread가 비정상이라면 전체 Process가 영향을 받는다.

3. Multi Process와 Multi Thread

Multi Process

  • 하나의 프로그램에서 여러개의 Process를 구성 => 각 Process마다 하나의 작업을 처리
    • 장점: Process 별로 독립되어 있기에 문제가 발생해도 다른 Process에 영향을 주지 않음
    • 단점:
      • Context Switching 오버헤드 (성능 저하)
      • Process 사이에 캐쉬를 공유할 수 없음

Multi Thread

  • 하나의 프로그렘에 여러개의 Thread를 구성 => 각 Thread마다 하나의 작업을 처리
    • 장점:
      • 성능 향상 및 자원 소모 감소
      • Thread 간 자원을 공유함
    • 단점:
      • 디버깅이 어려움
      • 하나의 Thread에 문제가 발생하면 프로그램 전체에 영향을 줌
      • 동기화 이슈
profile
독학 정리

0개의 댓글