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

수영·2022년 5월 9일
0
post-custom-banner

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

  • 멀티 프로세스 : 하나의 운영체제 안에서 여러 프로세스가 동시에 실행되는 것
  • 멀티 스레드 : 하나의 프로세스 안에서 여러 스레드를 사용하여 동시에 처리하는 것

참고 : 동시에 처리하는 것은 사실 빠르게 Context-Switching하는 것이고, 그 속도가 빠르기에 사용자는 동시에 여러 일을 처리한다고 느낀다. ( CPU는 한번에 하나의 프로세스만 실행 가능하다.)

동시성과 병렬성

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

  1. 메모리 측면 : 자원을 효율적으로 사용하기 위해

    멀티 프로세스의 경우 프로세스를 생성하여 자원을 할당하는 시스템 콜을 할 때마다 오버헤드가 크지만, 멀티 스레드는 메모리 영역을 공유하기 때문에 시스템 자원을 효율적으로 사용할 수 있다.

  2. 속도 측면 : Context-Switching 비용을 줄이고 응답 속도를 빠르게 하기 위해

    메모리 영역을 공유하기 때문에 Context-Switching과 스레드 간의 통신 시 Stack 영역만 처리하기에 통신 비용이 적고 응답속도가 빠르다.

멀티스레드

  • 장점
    1. 공유하고 있는 메모리만큼의 메모리 자원을 아낄 수 있다.
    2. 스레드 간 통신 비용이 적고 응답 시간이 빠르다.
  • 단점
    1. 스레드 하나가 프로세스 내 자원을 망쳐버린다면 모든 프로세스가 종료될 수 있다.
    2. 자원을 공유하기 때문에 필연적으로 동기화 문제가 발생할 수 있다.

용어 정리

  • 멀티 프로그래밍 : 프로세서가 한 프로세스의 처리를 대기 중일 때, 효율성을 위해서 프로세서를 idle 상태로 두지 않고 다른 프로세스를 처리하는 방식 - 프로세서의 자원낭비를 막기 위함
  • 멀티 태스킹 : 하나의 운영체제 안에서 여러 테스크를 병렬 처리하는 방식
    (테스크는 프로세스보다 확장된 개념으로, OS의 작업 단위를 뜻한다)
  • 멀티 프로세싱 : 여러 프로세서(CPU)가 일을 처리하는 방식(CPU가 여러개)

용어 정리

profile
🎵🎵🎵🎶🎵
post-custom-banner

0개의 댓글