Process vs Thread

7/27 발표

목차

  • 프로세스란?
  • 프로세스 구조
  • 쓰레드란?
  • 쓰레드 구조
  • 쓰레드의 장단점
  • Process vs Thread

프로세스란?

  • 실행중인 프로그램은 프로세스라고 한다.
    • 프로세스: 메모리에 올려져서 실행중인 프로그램
    • 코드 이미지(바이너리 코드 or 바이너리 파일): 실행 파일
    프로세스라는 용어는 작업,task,job이라는 용어와 혼용
  • 잠시 생각해볼게 있습니다! (응용프로그램 = 프로세스)?
    • 응용프로그램 ≠ 프로세스
    • 응용 프로그램은 여러개의 프로세스로 이루어질 수 있음
    • 하나의 응용 프로그램은 여러개의 프로세스가 상호작용하면서 실행될 수도 있습니다.
    간단한 C/C++ 프로그램 → 하나의 프로세스여기 보시는 것처럼 간단한 프로그램은 하나의 프로세스로 이루어질때도 있고, 여러 프로그램을 만들어서 서로 통신하면서 프로그램 작성할 수도 있음
  • 여러 프로그램을 만들어서, 서로 통신하면서 프로그램을 작성할 수도 있음(IPC 기법)

프로세스 구조

  • 프로세스는 일반적으로 어떻게 구성되어 있을까?
    • text(CODE): 코드
    • data: 변수/초기화된 데이터
    • stack: 임시 데이터(함수 호출, 로컬 변수등)
    • heap: 코드에서 동적으로 만들어지는 데이터

쓰레드(Thread)란?

  • Light weight Process라고도 함
  • 프로세스
    • 프로세스 간에는 각 프로세스의 데이터 접근이 불가
  • 쓰레드
    • 하나의 프로세스에 여러개의 쓰레드 생성 가능
    • 쓰레드들은 동시 실행 가능
    • 프로세스 안에 있으므로, 프로세스의 모든 데이터에 접근 가능

 

쓰레드 구조

그래서 어떻게 동작하는 걸까?

 

멀티쓰레드(Multi Thread)

소프트웨어 병행 작업처리를 위해 Multi Thread를 사용함

 

쓰레드(Thread)의 장점

  • 사용자에 대한 응답성 향상
  • 두번째는 자원 공유 효율
  • 작업이 분리되어 코드가 간결 사실은 작성하기 나름

쓰레드(Thread)의 단점

  • 쓰레드가 프로세스 안에서 움직이기 때문에 하나의 쓰레드만 문제가 생겨도 전체 프로세스가 영향을 받습니다.
  • 쓰레드가 과도하게 많이 생성되면 복잡도가 올라가기때문에 성능저하를 일으킨다.

Process Vs Thread

  • 프로세스는 독립적, 쓰레드는 프로세스의 서브셋(subset)
  • 프로세스는 각각 독립적인 자원을 가짐, 쓰레드는 프로세스 자원 공유
  • 프로세스는 자신만의 주소영역을 가지고 쓰레드는 주소영역공유
  • 프로세스는 IPC라는 기법으로 통신해야함 쓰레드는 필요없음

 

 

 

 

+ Recent posts