Process와 Thread

홍찬기
2 min readJan 12, 2023

프로세스와 스레드

  • 프로그램(Program)
    - 프로그램이란 어떠한 작업을 실행할 수 있는 파일을 말한다.
  • 프로세스(Process)
    -
    운영체제로부터 자원을 할당 받는 작업의 단위이다.
    - 프로세스는 각각 독립된 메모리영역을 가지고 있다. (Code, Data, Heap, Stack)
    - 한 프로세스는 최소 1개의 스레드를 가지고 있다.
  • 스레드(Thread)
    - 프로세스가 운영체제로부터 할당받은 자원을 사용하는 여러 작업 흐름을 말한다.
    - 프로세스는 여러개의 스레드를 가질 수 있다.
    - 스레드는 프로세스내에서 각각 Stack을 따로 할당받고 Code, Data, Heap는 공유한다.
  • 멀티프로세스(MultiProcess)
    - 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(태스크)을 처리하도록 하는 것이다.
    1. 장점
    - 독립된 메모리주소를 가지고있어서 안정적이다.
    - 하나의 프로세스가 문제가 발생해도 해당 프로세스만 죽고 나머지 프로세스에 영향을 끼치지 않는다.
    2. 단점
    - 컨텍스트 스위칭과정에서 캐시 메모리 초기화등 무거운 작업이 진행되고 많은 시간이 소모되는 등 오버헤드가 발생한다.
  • 멀티스레드(MultiThread)
    - 하나의 프로세스는 여러개의 스레드가 자원을 공유하며 작업을 나누어 수행하는것이다.
    1. 장점
    - 프로세스를 생성하여 자원을 할당하는 시스템콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
    - 스레드 사이 작업량이 적어 컨텍스트 스위칭이 빠르다.
    - 프로세스내에 Stack영역을 제외한 메모리를 공유하기 때문에 스레드간 통신비용이 적다.
    2. 단점
    - 자원을 공유하기때문에 동기화 문제가 발생한다.
    - 하나의 스레드가 잘못되면 전체 프로세스가 영향을 받는다.
    - 디버깅이 까다롭다.

--

--