Seongtae Kim
githubinstagrammail

Process, Thread

Process

  • 운영체제에서 자원을 할당 받아 실행되는 프로그램 작업 단위
  • 최소 1개의 스레드를 가지고 있다. (메인 스레드)

Thread

  • 프로세스에서 자원을 할당 받아 실행되는 흐름 단위
  • 프로세스의 코드, 데이터, 힙 영역을 공유받고, 개별 스택 영역을 가진다.

Multi Process

  • 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 한다.

장점

  • 여러 자식 프로세스 중 하나에 문제가 발생하면 그 프로세스만 죽고 다른 영향을 끼치지 않는다.

단점

  • 대신 공유하는 메모리가 없기 때문에 프로세스 간 변수를 공유할 수 없고 Context Switching 중 캐시 메모리 초기화 등 오버헤드가 크다.
    • Context Switching: CPU가 여러 프로세스를 돌아가면서 작업을 처리하는 것 (context 보관, 복구 반복)

Multi Thread

  • 하나의 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 한다.
    • 웹 서버가 대표적인 멀티 스레드 응용 프로그램이다.

장점

  • 공유하는 자원이 있기 때문에 자원 효율성이 증가한다.
  • 스레드 사이의 작업량이 적기 때문에 Context Switching이 빠르다.
  • 스택 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.

단점

  • 설계, 디버깅이 어렵다.
  • 단일 프로세스인 경우, 효과가 미미하다.
  • 다른 프로세스에서 스레드를 제어할 수 없다.
  • 자원을 공유할 때 동기화 문제가 발생한다.
  • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.
back