개발자가 되고 싶은 준개발자

멀티 프로세스와 멀티 스레드 장단점 정리 본문

IT/운영체제

멀티 프로세스와 멀티 스레드 장단점 정리

준개발자 2021. 4. 12. 20:32

개념

  • 프로세스: 실행 중인 프로그램 (메모리에 올라와 실행되고 있는 프로그램의 인스턴스)
    • dual-core는 2개의 프로세스까지 동시에 돌릴 수 있음!
  • 스레드: 프로세스의 작업 실행 단위
    • "Threads let us define a set of tasks that run concurrently while the code for each task is sequential. Each thread behaves as if it has its own dedicated processor"
    • "A thread is a single execution sequence that represents a separately schedulable task"

실행 방식 비교

  • 프로세스
    • 컨텍스트 스위치: CPU 스케줄러가 인터럽트 발생 시 현재 프로세스의 상태를 PCB(Process Control Block)에 저장하고, 새로운 프로세스의 상태를 레지스터에 저장
      • 인터럽트의 종류: I/O Request, Time Slice Expired, Fork Child
      • 컨텍스트 스위칭 할때 CPU는 아무런 작업을 못 하므로 잦은 컨텍스트 스위치는 성능 저하를 야기함
    • 자원을 공유하지 않기에 서로 간 통신이 멀티 스레드보다 불편
  • 스레드
    • 스레드는 프로세스 내에서 스택만 따로 할당 받고, code, data, heap 영역은 공유 (스택은 함수 호출 정보를 저장하므로 실행 흐름 관리 차원에서 분리)

장단점

  • 멀티 프로세스
    • +
      • 안정적임
        • 메모리 침범에 의한 문제를 OS 차원에서 해결해 줌
        • 하나의 프로세스가 비정상적으로 종료되어도 다른 프로세스가 영향을 받지 않음
    • -
      • 컨텍스트 스위칭 비용이 비쌈
      • 프로세스 간 자원이 공유되지 않으므로 통신이 불편
        • 자원 공유를 위해 별도의 IPC(Inter-Process Communication)을 구현해야 함
  • 멀티 스레드
    • +
      • 스택 영역만 컨텍스트 스위칭이 일어나므로 멀티 프로세스보다 컨텍스트 스위칭 비용이 적음
      • 자원을 공유하므로 메모리 낭비가 적음
    • -
      • 데이터 동기화를 해야 함 (semaphore, lock...)
      • 하나의 스레드가 비정상적으로 종료 시, 다른 스레드도 종료될 수 있음

관련 개념

  • 스레드 풀
    • 스레드를 미리 만들어 둠
    • 작업이 들어올 때마다 작업 큐에 넣고, 작업을 스레드에 매핑 시킴
    • +
      • 스레드 생성 / 제거 비용을 줄일 수 있음
    • -
      • 작업량에 알맞은 개수의 스레드를 만들어야 함 (노는 스레드 생길 수 있음)
      • 스레드 또한 메모리 차지함

참고

blog.daum.net/creazier/15309341

 

[펌] 멀티 프로세스 / 멀티 쓰레드 / 멀티 플렉싱 기법의 장점과 단점

-------------------------------------------------------------------------------------------------- 출처: http://www.gpgstudy.com/forum/viewtopic.php?t=21259 (myevan님 답변) 빗자루네 http://www.myev..

blog.daum.net

mangkyu.tistory.com/88

www.youtube.com/watch?v=iOueE9AXDQQ

velog.io/@hygoogi/기술면접-준비하기