Skip to content

Latest commit

 

History

History
72 lines (52 loc) · 3.5 KB

02_프로세스vs스레드.md

File metadata and controls

72 lines (52 loc) · 3.5 KB

프로세스 VS 스레드

프로그램

  • 소프트웨어의 하위 개념으로, 어떠한 작업을 위해 실행할 수 있는 파일
  • 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태



Ⅰ. 프로세스


정의

  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램

  • 운영체제로부터 시스템 자원을 할당받는 작업의 단위

  • 메모리에 할당되어 실행되고 있는 프로그램의 인스턴스


특징

  • 각각 독립된 메모리 영역을 할당받는다
    • 코드 영역 : 작성된 프로그램이 저장되는 영역
    • 데이터 영역 : 실행되면서 사용한 환경이나 파일과 같은 데이터가 모여있는 영역
    • 스택 영역 : 호출한 함수가 종료되면 되돌아올 메모리의 주소나 지역 변수 등이 저장되는 영역
    • 힙 영역 : 동적으로 할당되는 데이터를 위해 존재하는 영역
  • 1개 이상의 스레드를 가지고 있다
  • 각 프로세스는 별도의 주소 공간에서 실행되며 서로의 자원을 공유하지 않는다
  • 다른 프로세스로 접근하려면 프로세스 간 통신(IPC : Inter-process Communication)을 사용해야 한다



Ⅱ. 스레드


정의

  • 프로세스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 최소 실행 단위

특징

  • 프로세스 하나의 자원을 공유하면서 여러 과정을 동시에 실행시킨다
  • 프로세스는 한 개 이상의 스레드를 가진다
  • 프로세스 내에서 필요한 스택만 할당받으며 코드, 데이터, 힙 영역은 각 스레드가 공유한다
  • 프로세스 내의 스레드끼리 자원을 공유하며 실행한다
  • 프로세스보다 크기가 작은 실행 단위의 필요로 출현





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


하나의 프로그램을 여러 프로세스/스레드로 구성하고 각 프로세스/스레드가 하나의 작업을 처리하도록 하는 기법

장단점

종류 멀티프로세스 멀티스레드
장점
  • 하나의 자식 프로세스에 문제가 발생해도 다른 자식 프로세스에 영향을 주지 않음
  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있음
  • 데이터를 주고받는 것이 간단해지고 자원 소모가 적음
  • 스레드 사이 작업량이 적어 문맥 교환이 빠르고 시스템 처리량이 증가함
  • 단점
  • 독립된 메모리 영역을 가지고 있어 작업량이 많을수록 오버헤드가 발생하고 문맥 교환으로 인한 성능 저하를 유발
  • 프로세스 사이의 통신이 복잡함
  • 프로그램 디버깅이 까다로움
  • 하나의 스레드에 문제가 발생하면 전체 프로세스에 영향을 끼침
  • 전역 변수를 이용하기 때문에 동기화 문제가 발생함
  • 단일 프로세스 시스템에서 효과를 기대하기 어려움
  • 멀티스레드를 사용하는 이유

    • 자원의 효율성 증대
      • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어듦
      • 스레드 간 문맥 교환 속도가 빠름
    • 처리비용 감소 및 응답시간 단축
      • 프로세스 간의 통신보다 스레드 간의 통신의 비용이 적어 작업 간의 통신 부담이 줄어든다