[운영체제] 멀티 프로세스(Multi Process) 대신 멀티 스레드(Multi Thread)를 사용하는 이유?

James·2023년 6월 22일
0

운영체제

목록 보기
4/13
post-thumbnail

멀티 프로세스 대신 멀티 스레드를 사용하는 것의 의미?

쉽게 설명하면, 프로그램을 여러 개 키는 것보다 하나의 프로그램 안에서 여러 작업을 해결하는 것이다.

멀티 스레드 (Multi Thread)


멀티 스레드 장점

  1. 자원의 효율성 증대
    • 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
      - –> 프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐쉬 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문
      - 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다.
  2. 처리 비용 감소 및 응답 시간 단축
    • 또한 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어든다.
      • –> 스레드는 Stack 영역을 제외한 모든 메모리를 공유하기 때문
        프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.
      • –> Context Switching시 스레드는 Stack 영역만 처리하기 때문
      (context switching은 OS의 dispatcher가 한다.)
      

멀티 스레드 단점

1. 동기화 (즉, 안정성) - 하나의 스레드 장애로 전체 스레드가 종료될 위험이 있음

멀티 프로세스(Multi Process)


개념 :

  • 두개 이상 다수의 프로세서(CPU)가 하나 이상의 작업(Task)를 동시에 처리하는 것( 병렬처리 )
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야할 경우 사용

멀티 프로세스 장점

  1. 독립된 구조로 안정성 높음
    • 하나의 프로세스 장애가 전체 영향 x
    • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않는다.
  2. 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴하다.
  3. 멀티 프로세스에 비해 생성 및 Context Switching 비용이 적다.
    • 시스템 콜이 비교적 적기 때문

멀티 프로세스 단점

  1. Context Switching
    • 독립된 메모리 영역이기 때문에 작업량이 많을수록( Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우) 오버헤드가 발생하여 성능저하가 발생 할 수 있다.
    • Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.
  2. 멀티 쓰레드 보다 많은 메모리 공간, cpu시간을 차지함

Context Switching


  • CPU는 한번에 하나의 프로세스만 실행 가능하다.
  • CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다.
  • 구체적으로, 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.
주의할 점!
  • 동기화 문제
  • 스레드 간의 자원 공유는 전역 변수(데이터 세그먼트)를 이용하므로 함께 상용할 때 충돌이 발생할 수 있다.
profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글