본문 바로가기
cs/Operating System

프로세스와 스레드(process and thread)

by 펀구구 2023. 4. 18.

프로세스

  • 의미
    • 메모리에 올라와 실행되고 있는 프로그램 인스턴스
    • 운영체제로 부터 자원을 할당받는 단위
    • 즉 실행된 프로그램을 의미한다.
  • 할당 받는 시스템 자원의 예
    • cpu 시간
    • 운영되기 위해 필요한 주소 공간
    • code, data, stack, heap 구조로 되어 있는 독립된 메모리 영역
  • 특징
    • 기본적으로 프로세스당 최소 하나의 스레드를 가지고 있다.
    • 각 프로세스는 독립된 주소 공간에서 실행되며 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

스레드

  • 의미
    • 프로세스 내에서 실행되는 여러 흐름의 단위
    • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 특징
    • 스레드는 프로세스 내에서 code, data, heap은 공유하며 stack만 따로 할당받는다.
    • 프로세스의 자원을 프로세스 내부의 스레드끼리 공유하면서 실행된다.

멀티 프로세스

  • 의미
    • 하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 담당하도록 하는 것.
  • 장점
    • 하나의 프로세스에 문제가 발생하면 해당 프로세스가 죽는 것 이상으로 문제가 발생하지 않는다.
  • 단점
    • Context Switching에서 큰 overhead가 발생한다.
      • Context Switching과정에서 캐시 메모리 초기화 등 무거운 작업이 많이 진행된다.
      • 프로세스는 독립된 메모리 공간을 할당받기 때문에 Context Switching시 캐시 메모리를 초기화하고 다시 캐시 정보를 불러와야 한다.
    • 각 프로세스는 독립된 공간을 할당받아서 프로세스끼리 변수를 공유할 수 없다.

멀티 스레드

  • 의미
    • 하나의 응용프로그램을 여러 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 한다.
  • 장점
    • 시스템 자원 소모 감소 → 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
    • 스레드 간 데이터를 주고받는 것이 간단하다.
    • Context Switching이 빠르다. → Context Switching시 스레드는 stack 영역만 처리하기 때문
  • 단점
    • 스레드 끼리의 자원공유에서 문제가 발생할 수 있다.
    • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다. → 공유하는 메모리 부분이 망가질 수 있다.

 

 

process와 thread의 차이점

참조 - https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

'cs > Operating System' 카테고리의 다른 글

System Call과 커널  (0) 2023.04.21