Post

Process vs Thread

스터디 Stacked-Book에서 실습과 그림으로 배우는 리눅스 구조 책을 참고하여 학습 후 정리한 글입니다.

Process vs Thread

Process와 Thread 란?

Process

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • 운영체제로부터 시스템 자원을 할당 받는 작업의 단위
    • 할당 받는 시스템 자원은 CPU 시간, 운영에 필요한 주소 공간, Code,Data,Heap 구조로 되어있는 독립된 메모리 영역 등이 있다.

Thread

  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 실행의 단위

Multi Process와 Multi Thread

Multi Process and Muilti Thread

Multi Process

  • 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(태스크)을 처리하도록 하는 것이다.

장점

  • 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않는다.

단점

  • 컨텍스트 스위칭에서 오버헤드
    • 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 프로세스 사이에서 공유하는 메모리가 없어 프로세스 간의 Context Switching 시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐쉬 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크다.
  • 프로세스 사이의 통신이 복잡하고 어렵다.
    • 파이프,파일,소켓 등을 이용해 다른 프로세스의 자원에 접근해야 한다. (IPC, inter-process communication)

Multi Thread

  • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.

    장점

  • (프로세스를 생성하며 자원을 할당하는) 시스템 자원 소모 감소 (자원의 효율성)
  • 둘 이상의 작업을 병렬로 처리 할 수 있기때문에 속도적인 이점이 있다 (시스템 처리량 증가)
  • 간단한 통신 방법으로 인해 프로그램 응답 시간 단축

단점

  • 다른 프로세스에서 스레드를 제어할 수 없다.
  • 멀티 스레드의 경우 자원 공유의 문제가 발생한다.
  • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

Multi Process와 Multi Thread가 사용되는 예시

  • 예전 익스플로어에서 여러 개의 탭을 쓰다가 멈춘 경험이 있을 것이다. 그럴 때 중간에 작동이 중단이 되고 모든 프로세스가 종료 된다. 즉 하나의 쓰레드(하나의 탭)이 문제가 생기면 전체 프로세스에 영향이 가게 된다.
  • 반면 크롬은 멀티 프로세스를 이용하기 때문에 멀티탭 간의 영향을 주지 않는다.

정리

  1. 프로세스는 프로그램이 실행된 것이다.
  2. 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이다.
  3. 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식 (멀티 프로세스, 멀티 스레드)이 있다.
  4. 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할로 cpu를 점유하여 context switching을 한다.
  5. 멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유한다. 각각의 장단점이 있다.
  6. 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.
This post is licensed under CC BY 4.0 by the author.