[운영체제] 멀티 프로세스 대신 멀티 스레드를 사용하는 이유

Narcoker·2023년 6월 12일
0

운영체제

목록 보기
3/13

멀티 프로세스

여러개의 CPU, 또는 CPU의 여러 코어들이 여러 독립적인 프로세스를 동시에 처리하는 방식

높은 처리 성능과 강력한 병럴처리 능력을 제공한다.

장점

  • 전체 시스템 성능 향상
  • 각 프로세스는 독립적인 주소공간을 가져서 하나의 프로세스에서 오류를 발생시켜도 영향을 끼치지 않는다.

단점

  • 각 프로세스가 독립적인 주소공간을 가지기 때문에 많은 프로세스를 생성하면 시스템 리소스가 과도하게 사용
  • IPC(프로세스 간 통신) 비용이 비교적 오버헤드가 크므로 프로세스들이 많은 데이터를 공유하는 경우 효율성 저하

결론

동시 처리 능력이 중요한 애플리케이션에서는 유용하지만,
프로세스간 데이터 공유가 많거나 리소스 사용이 고려되어야 하는 애플리케이션에서는 주의해야한다.

멀티 스레드

한 개의 프로세스 안에서 여러 개의 스레드를 동시에 수행하는 방식

각 스레드는 독립적인 흐름을 가지지만,
같은 프로세스 내에 있는 스레드들은 메모리와 자원을 공유한다.

장점

  • 같은 프로세스 내부에서 자원을 공유해서 IPC 통신이 간단하고 빠르다.
  • 멀티 프로세스에 비해 생성 및 Context Switching 비용이 적다.
    • 시스템 콜이 비교적 적기 때문

단점

  • 같은 프로세스 내부에서 자원을 공유하기 때문에 동기화 메커니즘이 필요하다.
  • 코드 실행 순서를 예측하기 어려워서 디버깅이 복잡하다.
  • 메모리를 공유하기 때문에 발생한 오류전체 프로세스에 영향을 끼칠 수 있다.

결론

멀티 스레드는 자원을 효율적으로 활용하고 응답성을 개선하고자하는 경우 유용하지만
동기화와 디버깅, 오류 관리에 주의가 필요하다.

그래서 왜 멀티 스레드를 이용하는가?

자원의 효율성 증대

멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우,
프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

프로세스 간의 Context Switching
단순히 CPU 레지스터 교체 뿐만 아니라
RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문

스레드는 프로세스 내의 메모리를 공유하기 때문에
독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고
시스템 자원 소모가 줄어들게 된다.

처리 비용 감소 및 응답 시간 단축

프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용이 적으므로
작업들 간의 통신의 부담이 줄어든다.

스레드는 Stack 영역을 제외한 모든 메모리를 공유하기 때문이다.

프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.
Context Switching시 스레드는 Stack 영역만 처리하기 때문

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글