Computer Science/Programming

Process & Thread

Donghwan 2023. 2. 7. 01:11

Process

  • Process란 메모리를 할당받아 컴퓨터에서 연속적으로 실행중인 Program이라고 할 수 있습니다.
  • OS(Operating System)로부터 시스템 자원을 할당 받습니다.
  • Process는 독립된 메모리 영역에 Code, Data, Stack, Heap 구조를 가지고 있습니다.
  • Process는 최소 1개의 Thread를 가지고 있습니다. (Main Thread)
  • Process가 다른 Process의 자원에 접근하려면 IPC와 같은 통신을 이용할 수 있습니다.

 

Thread

  • Process 내에서 실행되는 흐름의 단위를 의미합니다.
  • Process로부터 자원을 할당 받습니다.
  • Process 내에서 Stack만을 따로 할당받고 Code, Data, Heap 영역은 공유합니다.
  • 공유 자원이 존재하기 때문에 동시성 이슈가 발생할 수 있습니다.
    • A가 변경한 공유자원이 B에 영향을 끼칠 수 있습니다.
  • 개별 Thread는 별도의 Register와 Stack을 가지고 Heap은 서로 읽고 쓸 수 있습니다.

 

Process vs Thread

  • 자원을 부여하는 주체가 각자 다릅니다.
    • OS로부터 자원을 할당받는 Process
    • 그런 Process로부터 자원을 할당받는 Thread
  • 데이터의 공유 여부
    • Process 끼리는 다른 Process의 메모리 구조에 접근할 수 없습니다.
    • Thread는 Stack을 제외한 다른 공유영역에 대해서는 다른 Thread도 접근이 가능합니다.

 

Multi Process

  • 여러개의 Process가 협력적으로 일을 처리하는 것을 의미합니다.
  • 여러개의 Process가 작업을 병렬적으로 처리하는 것 입니다.
  • 각 Process 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 때 사용합니다.
  • 독립된 구조로 안정성이 높습니다.
  • 여러 Process가 같이 작업하기 때문에 하나의 Process가 동작하지 못하더라도 느려질 수 있지만 문제가 확산되지 않습니다.
  • Mutli Thread 환경보다 많은 메모리 공간과 CPU를 차지합니다.
  • 독립된 메모리 영역이기 때문에 주소 공간의 공유를 위해 Context Switching이 잦을 경우 오버헤드가 발생하여 성능 저하가 발생할 수 있습니다.

 

Mutli Thread

  • Process에서 여러 Thread를 이용해 작업을 처리하는 방법을 말합니다.
  • 시스템 자원 소모가 감소하여 자원의 효율성이 상승합니다.
  • Thread간 데이터를 주고받는 것이 간단해지기 때문에 자원 소모가 줄어듭니다.
  • Cache Memory를 비울 필요가 없기 때문에 Context Switching이 빠릅니다.
  • 공유 영역을 이용하기에 데이터의 전달이 빠릅니다.
  • 자원을 공유하기에 병목현상 또는 데드락과 같은 문제가 발생할 수 있습니다.
  • 하나의 Thread가 문제가 발생하면 전체 Process에 영향을 미칩니다.
  • 디버깅이 어렵습니다.

 

Multi Process vs Multi Thread

  • Multi Thread는 Multi Process보다 작은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만 동기화와 안정성에서는 단점을 가지고 있습니다.
  • Multi Process 하나의 Process가 죽더라도 전체에 영향을 주지 않아 안정성이 높지만, Multi Thread보다 많은 메모리 공간과 CPU시간을 차지하는 단점이 있습니다.
  • 두 방법은 동시에 여러 작업을 수행하는 부분은 동일하지만 장점과 단점을 잘 비교하여 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 합니다.
728x90
반응형