카테고리 없음

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

kyoulho 2024. 3. 9. 14:15

프로그램의 성능을 향상시키는 방법 중 하나는 여러 작업을 동시에 처리하는 것이다. 이를 위해 멀티 프로세스와 멀티 쓰레드라는 두 가지 기술이 사용된다.

프로세스와 쓰레드란 무엇일까?


프로세스

  • 운영 체제에 의해 관리되는 실행 단위.
  • 자체 메모리 공간, CPU 시간, 시스템 자원을 가지고 독립적으로 실행된다.
  • 프로그램 실행, 파일 시스템 접근, 네트워킹 등 다양한 작업을 수행한다.

쓰레드

  • 하나의 프로세스 내에서 실행되는 흐름 단위.
  • 공유된 메모리 공간을 사용하고 CPU 시간을 번갈아 사용하며, 운영 체제에 의해 스케줄링된다.
  • 여러 작업을 동시에 처리하여 프로그램의 성능을 향상시킬 수 있다.

정리하면 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.

 

멀티 프로세스와 멀티 쓰레드의 비교


구분 멀티 프로세스 멀티 쓰레드
실행 방식 여러 프로세스 동시 실행 하나의 프로세스 내에서 여러 쓰레드 동시 실행
메모리 공간 각 프로세스 별 독립적인 메모리 공간 공유된 메모리 공간
CPU 시간 각 프로세스 별 독립적인 CPU 시간 번갈아 가면서 CPU 시간 사용
시스템 자원 각 프로세스 별 독립적인 시스템 자원 공유된 시스템 자원
장점 높은 처리 능력, 안정성 향상 낮은 오버헤드, 빠른 컨텍스트 스위칭
단점 높은 오버헤드, 메모리 사용량 증가, 프로세스 관리 복잡 동기화 문제 발생 가능성, 안정성 감소

 

 

 

멀티 프로세스와 멀티 쓰레드의 작동 방식


멀티 프로세스

  • 각 프로세스는 자체 메모리 공간, CPU 시간, 시스템 자원을 가지고 독립적으로 실행된다.
  • 운영 체제는 여러 프로세스를 스케줄링하여 CPU 시간을 할당한다.
  • 프로세스 간 통신은 IPC(Inter-Process Communication) 메커니즘을 사용한다.

멀티 쓰레드

  • 여러 쓰레드는 공유된 메모리 공간을 사용하고 CPU 시간을 번갈아 사용한다.
  • 운영 체제는 스케줄러를 사용하여 쓰레드를 실행한다.
  • 쓰레드 간 통신은 공유 메모리, 동기화 메커니즘 등을 사용한다.

 

언제 사용해야 할까?


멀티 프로세스

상황 이유
CPU 집약적인 작업을 수행할 때 여러 프로세스가 동시에 실행되어 CPU를 최대한 활용할 수 있다.
리소스 격리가 필요 할 때 각 프로세스는 자체 메모리를 가지고 있기 때문에 다른 프로세스의 영향을 받지 않는다.
안정성 중요 할 때 한 프로세스가 충돌해도 다른 프로세스는 영향을 받지 않아 안정성을 높일 수 있다.
  • 웹 브라우저의 각 탭은 별도의 프로세스로 실행되어 웹 페이지 로딩 속도를 높이고 안정성을 향상 시킨다.

멀티 쓰레드

상황 이유
I/O 집약적인 작업을 수행할 때 여러 쓰레드가 동시에 I/O 작업을 수행하여 응답 시간을 단축할 수 있다.
빠른 응답 시간이 필요할 때 컨텍스트 스위칭 오버헤드가 적기 때문에 빠르게 응답할 수 있다.
낮은 오버헤드가 중요 프로세스 생성/종료보다 오버헤드가 낮다.

 

  • I/O 작업은 블로킹 작업이 많기 때문에 여러 쓰레드를 사용하여 병렬 처리할 수 있다.
728x90