최대 1 분 소요

프로세스

  • 운영체제로부터 할당 받은 자원을 사용하는 작업의 단위
  • 실행되는 프로그램 자체와 그 주변환경을 뜻함.
    • 사용중인 파일, 데이터, 메모리 주소공간 등
  • 프로세스는 서로 독립적이다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 파이프 통신, 소켓 통신 등을 사용해야 한다.

스레드

  • 프로세스가 할당 받은 자원을 사용하는 실행의 단위
  • 스레드는 프로세스 내에서 stack만 할당 받고, code, data, heap은 공유한다.

멀티 프로세스

  • 하나의 응용 프로그램을 여러개의 프로세스가 작업
  • 장점
    • 서로 독립적이어서 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 오류가 확장되지 않는다.
  • 단점
    • Context Switching에서의 오버헤드
    • 프로세스간 통신 기법이 복잡하다.

멀티 스레드

  • 하나의 프로세스를 여러 개의 스레드가 작업
  • 웹 서버, 윈도우, 리눅스 등
  • 장점
    • 자원의 효율적인 사용
    • 처리 비용 감소
    • 간단한 통신 문제
  • 단점
    • 설계의 복잡성
    • 디버깅이 까다로움
    • 단일 프로세스의 경우 효과 미미
    • 동기화 문제
    • 오류 발생 시 다른 스레드에도 영향
    • 다른 프로세스에서 스레드를 제어할 수 없다.

멀티 스레드를 사용하는 이유?

  • 멀티 프로세스를 사용하게 되면, 프로세스를 생성하며 생기는 시스템 콜이 추가된다.
  • 멀티 스레드를 사용하면 이 시스템 콜을 하지 않아 자원을 절약할 수 있다.
  • 프로세스간의 통신보다 스레드간의 통신이 더 비용이 적기 때문에 부담이 줄어들게 된다.
  • 하지만 프로세스 내부의 자원을 전역 변수로 여러 스레드가 접근하기 때문에 동기화 문제를 신경 써야 한다.

카테고리:

업데이트: