멀티 프로세스와 멀티 스레드

hoo00nn·2020년 12월 22일
0
post-thumbnail

멀티 프로세스와 멀티 스레드

멀티 프로세스

장점

  • 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음
  • 멀티 스레드처럼 동기화 작업이 별도로 필요하지 않음

단점

  • 자원 소모, 메모리 낭비, 문맥 교환으로 인한 비효율성
  • IPC 통신으로 인한 비용

멀티 스레드

장점

  • 문맥 교환에 소비되는 시간을 줄일 수 있음(스택 영역만 문맥교환이 일어남)
  • 자원을 공유하기 때문에 메모리 낭비를 줄임

단점

  • 여러 개의 스레드는 프로세스 내부의 자원을 공유하기 때문에 하나의 스레드가 자신의 데이터 공간을 망가뜨린다면 해당 프로세스의 데이터를 공유하고 있는 모든 스레드의 치명적인 문제를 발생시킨다.
  • 여러 개의 스레드를 이용하는 경우, 미묘한 시간차나 잘못된 변수를 공유함으로써 오류 발생 가능
    • 따라서 스레드 간에 통신할 경우에는 충돌 문제가 발생하지 않도록 동기화 문제를 해결해야 합니다.

멀티 프로세스보다 멀티 스레드를 지향하는 이유

  • 스레드는 프로세스 보다 더 경량이여서 프로세스보다 생성과 제거가 쉽다.
  • 스레드는 Stack을 제외한 메모리를 공유하기 때문에 멀티 프로세스에서 데이터를 공유하기 위해 사용하는 IPC 통신의 비용부담이 감소한다.
  • 컨텍스트 스위칭 시 자원의 손실이 줄어든다.
    • 프로세스 간의 컨텍스트 스위칭시 단순히 CPU 레지스터 교체 뿐만이 아니라 RAM과 CPU사이의 캐쉬메모리에 대한 데이터 까지 초기화 되므로 상당한 부담이 발생한다.

멀티 프로세스와 멀티 스레드의 적절한 상황

1) 멀티 프로세스

  • 브라우저의 각 탭(크롬)
  • 한 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음
  • 자원을 공유할 필요가 없음

2) 멀티 스레드

  • 워드 프로세스와 같은 응용 소프트웨어
  • 여러가지 기능과 메모리를 공유
profile
😀 신기술에 관심이 많고, 함께 성장하고 함께 개발하고 싶은 개발자가 되고 싶습니다. 😀

0개의 댓글