Related to: Operating System

멀티 프로세스(Multi Process)와 멀티 스레드(Multi Thread)

프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
https://wooody92.github.io/os/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C/

설명

  • Multi-process
    • 두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것
    • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용
    • 장점
      • 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높음
        • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않음
        • 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴
    • 단점
      • 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지
      • Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생
  • Multi-thread
    • 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것
    • 장점
      • 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠름
        • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리
        • 프로세스 내 작업이므로, 캐시 메모리를 비울 필요가 없음
        • 프로세스 간의 통신보다 스레드 간의 통신 비용이 적음
    • 단점
      • 하나의 스레드 장애로 전체 스레드가 종료 될 위험
      • 자원을 공유하기에 동기화 문제가 발생할 수 있음
        • 병목현상
        • 데드락
      • 주의 깊은 설계가 필요, 디버깅의 어려움
  • Context Switching
    • CPU는 한번에 하나의 프로세스만 실행 가능
    • CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데, 이 과정이 Context Switching
    • 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업