네트워크

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

yj992233 2026. 3. 12. 17:01

✅들어가면서

https://yj992233.tistory.com/8

 

프로세스와 스레드

✅들어가면서나는 컴퓨터로 과제를 하거나 공부를 할 때 노래를 듣기도 하고, 파일을 다운로드하는 등 여러 작업을 동시에 수행하곤 한다. 이처럼 지금은 너무 당연하게 여러 작업을 동시에 수

yj992233.tistory.com

멀티 프로세스와 멀티 스레드에 대해 살펴보기 전에 먼저 프로세스와 스레드에 대한 글을 보고 오는 것을 추천한다.


⭐멀티 프로세스(Multi Process)란?

멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술을 말한다. 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다.

멀티 프로세스

 

멀티 프로세스 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로서 다중 프로세스를 구성하는 구조이다. 다른 프로세스를 생성하는 프로세스를 부모 프로세스(Parent Process)라 하고, 다른 프로세스에 의해 생성ㅇ된 프로세스를 자식 프로세스(Child Process)라 한다.

 

부모 프로세스와 자식 프로세스는 각각 고유한 PID(Process ID)를 가지고 있다. 부모 프로세스는 자식 프로세스의 PID를 알고 있으며, 이를 통해 자식 프로세스를 제어할 수 있다. 또한, 자식 프로세스는 부모 프로세스의 PID와 PPID(Parent Process ID)를 알고 있어, 이를 통해 부모 프로세스와의 통신이 가능하다.

 

다만, 통신이 가능할 뿐이지, 부모 프로세스와 자식 프로세스는 엄연히 서로 다른 프로세스로 독립적으로 실행되며, 독립적인 메모리 공간을 가지고 있어 서로 다른 작업을 수행한다. 대표적인 예로 웹 브라우저의 상단 탭(Tab)이나 새 창을 들 수 있다. 각 브라우저 탭은 같은 브라우저 프로그램 실행이지만, 각기 다른 사이트 실행을 행하기 때문이다.

웹 브라우저의 상단 탭(Tab)


⭐멀티 프로세스의 장점

  1. 프로그램 안전성
    • 멀티 프로세스는 각 프로세스가 독립적인 메모리 공간을 가지므로, 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 주지 않는다. 그래서 프로그램 전체의 안전성을 확보할 수 있다는 장점이 있다.
  2. 프로그램 병렬성
    • 멀티 프로세스와 여러 개의 CPU 코어를 활용하여 둘의 시너지를 합쳐, 다중 CPU 시스템에서 각 프로세스를 병렬적으로 실행하여 성능을 향상 시킬 수 있다. 예를 들어 이미지 처리나 비디오 인코딩과 같은 작업을 여러 개의 코어나 CPU에 분산시켜 빠르게 처리할 수 있다.
  3. 시스템 확장성
    • 멀티 프로세스는 각 프로세스가 독립적이므로, 새로운 기능이나 모듈을 추가하거나 수정할 때 다른 프로세스에 영향을 주지 않는다. 그래서 시스템의 규모를 쉽게 확장할 수 있다.

⭐멀티 프로세스의 단

  1. 컨텍스트 스위칭 오버헤드(Context Switching Overhead)
    • 멀티 태스킹을 구성하는데 핵심 기술인 컨텍스트 스위칭 과정에서 성능 저하가 올 수 있다. 특히 프로세스를 컨텍스트 스위칭하면, CPU는 다음 프로세스의 정보를 불러오기 위해 메모리를 검색하고, CPU 캐시 메모리를 초기화하며, 프로세스 상태를 저장하고, 불러올 데이터를 준비해야 하기 때문에, 이로 인한 빈번한 컨텍스트 스위칭 작업으로 인해 비용 오버헤드가 발생할 수 있게 된다. 반면 스레드를 컨텍스트 스위칭하면 프로세스 스위칭보다 가벼워 훨씬 빠르다.
  2. 자원 공유 비효율성
    • 멀티 프로세스는 각 프로세스가 독립적인 메모리 공간을 가지므로, 결과적으로 메모리 사용량이 증가하게 된다. 만일 각 프로세스 간에 자원 공유가 필요할 경우 프로세스 사이의 어렵고 복잡한 통신 기법인 IPC(Inter-Process Communication)을 사용하여야 한다.
IPC란 운영체제 상에서 실행 중인 프로세스 간에 정보를 주고받는 메커니즘을 말한다.

⭐멀티 스레드(Multi Thread)란?

스레드는 하나의 프로세스 내에 있는 실행 흐름이다. 그리고 멀티 스레드는 하나의 프로세스 안에 여러 개의 스레드가 있는 것을 말한다. 따라서 하나의 프로그램에서 두 가지 이상의 동작을 동시에 처리하도록 하는 행위가 가능해진다.

 

웹 서버는 대표적인 멀티 스레드 응용 프로그램이다. 사용자가 서버 데이터베이스에 자료를 요청하는 동안 브라우저의 다른 기능을 이용할 수 있는 이유도 바로 멀티 스레드 기능 덕분인 것이다.

 

즉, 하나의 스레드가 지연되더라도, 다른 스레드는 작업을 지속할 수 있게 된다.

멀티 스레드

 

멀티 스레드는 웹 브라우저의 단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리하는데 사용된다고 보면된다.


⭐멀티 스레의 장점

  1. 스레드는 프로세스보다 가볍다
    • 일단 스레드는 프로세스보다 용량이 가볍다. 스레드는 프로세스 내에서 생성되기 때문에 스레드의 실행 환경을 설정하는작업이 매우 간단하여 생성 및 종료가 빠르다. 또한 스레드는 프로세스와 달리, 코드, 데이터, 스택 영역을 제외한 나머지 자원을 서로 공유하기 때문에 기본적으로 내장되어 있는 데이터 용량이 프로세스보다 당연히 적다. 그래서 스레드를 생성하고 제거할 때, 프로세스 내부의 자원만을 관리하면 되기 때문에 프로세스 생성, 제거보다 훨씬 빠른 것이다.
  2. 자원의 효율성
    • 멀티 스레드는 하나의 프로세스 내에서 여러 개의 스레드를 생성되기 때문에, heap 영역과 같은 공유 메모리에 대해 스레드 간에 자원을 공유가 가능하다. 이를 통해, 프로세스 간 통신(IPC)을 사용하지 않고도 데이터를 공유할 수 있기 때문에, 자원의 효율적인 활용이 가능해 시스템 자원 소모가 줄어든다.
  3. Context Switching 비용 감소
    • 스레드에도 컨텍스트 스위칭 오버헤드가 존재한다. 하지만 상대적으로 프로세스 컨텍스트 스위칭 오버헤드보다 훨씬 낮아 비용이 낮다는 장점이 있다. 스레드 컨텍스트 스위칭 비용은 스위칭할 때 스레드 간에 공유하는 자원을 제외한 스레드 정보(stack, register)만을 교체하면 되므로 프로세스 컨텍스트 스위칭 비용보다 상대적으로 낮은 것이다.
  4. 응답 시간 단축
    • 앞의 멀티 스레드의 장점을 종합해보자면, 멀티 스레드는 스레드 간의 통신이나 자원 공유가 더욱 용이하며, 프로세스보다 가벼워 컨텍스트 스위칭 오버헤드도 작다. 따라서 멀티 프로세스보다 응답 시간이 빠르다.

⭐멀티 프로세스의 단

  1. 안정성 문제
    • 멀티 프로세스 모델에서는 각 프로세스가 독립적으로 동작하므로 하나의 프로세스에서 문제가 발생해도 다른 프로세스들은 영향을 받지 않기 때문에 프로그램이 죽지 않고 계속 동작할 수 있다. 그러나 멀티 스레드 모델에선는 기본적으로 하나의 스레드에서 문제가 발생하면 다른 스레드들도 영향을 받아 전체 프로그램이 종료될 수 있다.
  2. 동기화로 인한 성능 저하
    • 멀티 스레드 모델은 여러 개의 스레드가 공유 자원에 동시에 접근할 수 있기 때문에, 동기화 문제가 발생할 수 있다. 예를들어 여러 스레드가 동시에 한 자원을 변경해 버린다면 의도되지 않은 엉뚱한 값을 읽어 서비스에 치명적인 버그가 생길 수 있다. 따라서 스레드 간 동기화는 데이터 접근을 제어하기 위한 필수적인 기술이다.
  3. 데드락(교착 상태)
    • Deadlock이란, 다수의 프로세스나 스레드가 서로 자원을 점유하고, 다른 프로세스나 스레드가 점유한 자원을 기다리는 상황에서 발생하는 교착 상태를 말한다. 여러 개의 스레드가 서로 대기하면서 무한정 기다리게 되는 무한 루프와 같은 증상이라고 보면된다.
    • 이러한 현상은 스레드의 특징인 공유 자원에 대한 동시 엑세스로 인한 문제로, 이를 방지하기 위한 상호배제, 점유와 대기, 비선점, 순환 대기 등의 알고리즘을 통해 극복해야 한다.

'네트워크' 카테고리의 다른 글

동기/비동기 & 블로킹/논블로킹  (0) 2026.03.13
멀티 스레딩과 성능  (0) 2026.03.13
프로세스와 스레드  (1) 2026.03.12