본문 바로가기
Computer Science/운영체제

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

by eunnnn 2023. 3. 17.

멀티 프로세스

멀티 프로세스란, 두 개 이상의 프로세스를 동시에 처리하는 것을 말한다. 각 프로세스 간의 메모리 구분이 필요하거나, 독립된 주소 공간을 가져야 할 경우 사용한다.

프로세스 간 통신을 위해서는 IPC를 통해야 한다.

 

장점

  • 한 프로세스가 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 다른 프로세스에 영향이 확산되지 않는다.
  • 구현이 비교적 간단하다.

단점

  • 독립된 메모리 영역을 갖기 때문에 작업량이 많을수록 Context Switching이 자주 일어나서 오버헤드가 발생한다.
    Context switching 과정에서 캐시 메모리 초기화 등  무거운 작업이 진행되고 시간이 소모 되는 등의 오버헤드가 발생한다.
  • 성능저하의 우려가 있다.

 

멀티 스레드

멀티 스레드란 하나의 프로세스에서 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것을 말한다.

일반적으로 멀티스레드르 사용하는 이유는 사용자와 상호작용하는 애플리케이션에서 단일 스레드로 Network 또는 DB 와 같은 긴 작업(Long-running task) 을 수행하는 경우 해당 작업을 처리하는 동안 사용자와 상호작용이 불능인 상태가 될 수 있기 때문이다.

 

장점

  • 멀티 프로세스에 비해 메모리 자원소모가 줄어든다. (비용이 적다)
    프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄기 때문
  • 힙 영역을 통해 스레드 간 통신이 가능하기 때문에 프로세스 간 통신보다 간단하다.
  • 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠르다.
  • 멀티프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다.

단점

  • 하나의 스레드가 비정상적으로 동작하면 다른 스레드도 종료될 수 있다.  (Code/Data/Heap 영역 내용을 공유하기 때문에)
  • 자원을 공유하는 데 있어 동기화 문제가 발생할 수 있다. (병목현상, 데드락 등)
  • 불필요한 부분까지 동기화가 되면 성능 저하가 발생할 수 있어 주의 깊은 설계가 필요하다.
  • 구현 및 테스트, 디버깅이 어렵다.

 

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

종류 장점 단점
멀티 프로세스 하나의 프로세스가 죽어도 다른 프로세스에게는 영향을 끼치지 않는다. 각각 독립된 메모리 영역을 갖고 있어 작업량이 많을 수록 오버헤드가 발생한다.
Context Switching으로 인한 성능 저하를 유발한다.
멀티 스레드 프로세스의 응답시간이 단축되고 시스템의 처리율이 향상된다.
또한 코드영역과 데이터 영역을 공유하기 떄문에 자원 소모가 적다.
스레드 간의 통신 비용이 적게 든다.
프로그램 디버깅이 어렵고 하나의 스레드에 문제가 생기면 전체적인 프로세스에 영향을 끼치게 된다.

 

 

출처

더보기

'Computer Science > 운영체제' 카테고리의 다른 글

캐시 메모리  (0) 2023.03.18
가상 메모리(Virtual Memory)  (0) 2023.03.18
교착상태와 기아상태  (1) 2023.03.18
운영체제란  (0) 2023.03.17
프로세스와 스레드  (0) 2023.03.17