본문 바로가기
Computer Science/운영체제

프로세스(Process)와 쓰레드(Thread)

by sy.cho__ 2017. 10. 4.

프로세스와 쓰레드가 각각 무엇인지, 어떤 차이점이 있는지 알아보겠습니다.


한 문장으로 설명하면 다음과 같습니다.


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


그림으로 나타내면 아래와 같습니다. 

[Process]

프로세스는 운영체제로부터 주소공간, 파일, 메모리 등을 할당 받습니다.

그러므로 각 프로세스는 독립적이며  자신만의 고유 메모리를 할당받아 사용합니다.

그리고 프로세스는 실행중인 프로그램을 의미합니다.


그러므로 프로세스는 프로그램이 될 수 있지만, 프로그램은 프로세스가 될 수 없습니다. 실행중이지 않은 프로그램도 존재하기 때문입니다. 




[Thread]

그러나 쓰레드는 프로세스 안에 존재하며, 여러 쓰레드가 자원을 공유할 수 있습니다. 

쓰레드는 프로세스 내에서 각각의 스택 공간을 제외한 모든 주소공간과 자원들을 대부분 공유합니다. 

그렇기 때문에 메모리 공간은 물론 시스템 자원 소모도 현격히 줄어듭니다. 


멀티쓰레드에 대해 다음과 같은 장,단점이 있습니다. 


장점

  • 시스템의 throughput이 향상

  • 시스템의 자원 소모가 줄어든다

  • 프로그램의 응답 시간이 단축

  • 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 더 간단

통신 방법이 더 간단하다는 말은, 쓰레드끼리 자원을 공유하기 때문에 데이터 세그먼트, 전역변수를 이용하여 간단히 통신을 할 수 있다는 뜻입니다. 

하지만 다음과 같은 단점이 있습니다.

단점
  • 자원을 공유하기 때문에 동기화에 신경써야한다.
  • 다시 말해 설계를 잘해야한다.
  • 프로그램 디버깅이 어렵다
  • 단일 프로세서 시스템에서는 효과를 기대하기 어렵다



본 글은 아래 블로그를 참고하여 작성했습니다.

http://ralf79.tistory.com/34

https://brunch.co.kr/@kd4/3


반응형