CS

[OS] 멀티 프로세스와 멀티스레드의 장단점

KJihun 2023. 10. 5. 17:42
728x90

 

- 프로세스(process): 프로세서(처리기, CPU)에 의해 처리되는 프로그램(실행중인 프로그램)을 의미

 

- 스레드(Thread) : 프로세스 내의 작업단위, 여러 자원을 할당받아 실행하는 프로그램의 단위

 

 

 

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

 

멀티 스레드: 하나의 프로세스 안에서 여러개의 스레드를 병렬적으로 사용하는 것.

  • 장점
  • 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠르다.
  • 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
  • 프로세스 간의 통신보다 스레드 간의 통신 비용이 적으므로 작업들 간 통신의 부담이 줄어든다. (처리비용 감소. 프로세스는 독립구조이기 때문)
  • 단점
  • 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있다.
  • 스레드를 활용하면 자원의 효율성이 증가하기도 하지만, 스레드 간의 자원 공유는 전역 변수를 이용하므로 동기화 문제가 발생 할 수 있으므로 프로그래머의 주의가 필요하다.

 

멀티 프로세스

두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것(병렬처리)

각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용

 

  • 장점
  • 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높다
  • 독립된 구조로 안전성이 높은 장점이 있다.
  • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않는다.
  • 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴하다.
  • 단점
  • 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지하는 단점이 있다.
  • 독립된 메모리 영역이기 때문에 작업량이 많을수록(Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우) 오버헤드가 발생하여 성능저하가 발생 할 수 있다.
  • Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.

 

 

두 방법은 동시에 여러 작업을 수행하는 점에서 동일하지만,

각각의 장단이 있으므로 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 한다.

 

 

 

 

  •  

'CS' 카테고리의 다른 글

[OS] 블로킹 논블로킹(Blocking / Non-Blocking), 동기 비동기( Sync / Async)  (0) 2023.10.05
[OS] Context Switching  (0) 2023.10.05
[Network] 웹 통신의 큰 흐름  (0) 2023.10.05
Java Sort Algorithm  (0) 2023.09.30
[Network] TCP/UDP  (0) 2023.08.04