[OS] 멀티프로세스 대신 멀티쓰레드 사용이유

2021. 11. 6. 17:48·OS
728x90

멀티 프로세스 대신 멀티 스레드를 사용하는 이유

  • 자원의 효율성 증대
  • 처리 비용 감소 및 응답 시간 단축 

자원의 효율성 증대

  • 멀티 프로세스로 실행되는 작업을 멀티스레드 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음 (프로세스 간의 Context Switching시 단순히 CPU 레지스터 교체 뿐만 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화되므로 오버헤드가 크기 때문)
  • 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 됨

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

  • 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어듬 (스레드는 Stack영역을 제외한 모든 메모리를 공유하기 때문에)
  • 프로세스 간의 전환속도보다 스레드 간의 전환속도가 빠름 (Context Switching시 스레드는 Stack 영역만 처리하기 때문) 

멀티쓰레드 주의할 점

  • 동기화 문제
  • Context Switching시 스레드는 Stack 영역만 처리하기 때문
저작자표시

'OS' 카테고리의 다른 글

[OS] 외부 단편화 / 내부 단편화  (0) 2021.11.07
[OS] 동기화 객체의 종류  (0) 2021.11.07
[OS] Thread Safe  (0) 2021.11.06
[OS] 데드락  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
'OS' 카테고리의 다른 글
  • [OS] 외부 단편화 / 내부 단편화
  • [OS] 동기화 객체의 종류
  • [OS] Thread Safe
  • [OS] 데드락
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    Kafka
    자바
    ElasticSearch
    cleancode
    프로그래머스
    Elk
    splunk
    클린코드
    JPA
    go
    java
    SQL
    IntelliJ
    이펙티브코틀린
    코틀린
    docker
    엘라스틱서치
    Spring
    이펙티브 코틀린
    AWS
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[OS] 멀티프로세스 대신 멀티쓰레드 사용이유
상단으로

티스토리툴바