정의 (Definition) 

  프로세스 : 운영체제로부터 자원을 할당받는 (독립적인)작업의 단위
  스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위


프로세스  
 - 운영제제로부터 (독립적인) 주소공간, 파일, 메모리등을 할당받음
 - 각 프로세스는 독립적이며, 자신만의 고유의 영역을 할당받아 사용한다. 
 - 실행중인 프로그램을 의미

스레드 
 - 스레드는 프로세스 안에 존재하며, 여러 스레드가 자원을 공유
 - 스레드는 프로세스내에서 각각의 스택 공간을 제외한 모든 주소공간과 자원을 공유
 

 

프로세스는 실행될 때 운영체제로부터 프로세서, 필요한 주소공간, 메모리등 자원(Resource)을 할당을 받는다. 

스레드는 할 프로세스 내에서 동작되는 여러 실행(Execution)의 흐름으로 프로세스 내의 주소공간이나 자원들을

같은 프로세스내의 스레드끼리 공유하면서 실행된다. 

 

요약하면, 

운영체제(OS)가 시스템의 자원을 어떤 단위로 할당하고, 프로세스와 스레드는 이 자원을 어떻게 사용하느냐를 

결정하는 것이라고 할 수 있다. 

 

여러 프로세스가 할 수 있는 작업들을 스레드로 하는 이유?

운영체제는 시스템 자원을 효율적으로 관리하기 위해서 스레드를 사용한다. 멀티 프로세스로 실행되는 작업을 

멀티 스레드로 싱핼할 경우, 프로세스를 생성하여 자원을 할당하는 시스템콜(System call)이 줄어들어 자원을 

효율적으로 관리할 수 있다. 뿐만 아니라 프로세스 간의 통신보다 스레드 간의 통신비용이 적게들기 때문에 

통신부담이 줄어들게 된다. 

 

https://kldp.org/node/295

 

사용자수준 쓰레드와 커널수준 쓰레드의 차이? | KLDP

사용자 수준 쓰레드와 커널 수준 쓰레드의 차이에 대해서 설명해 주실수 있으시겠습니까? 각각 장단점이 있다고 하는데, 잘 이해가 되질 않네요. 사용자 수준은 문맥교환의 오버해드가 없다, 커널 수준은 사용자 수준 보다 효율적일 수 있다.. 라고 하는데 잘 이해가 가질 않네요.. 그리고 현재 리눅스에서는 두가지 쓰레드 모델이 모두 지원 되나요?

kldp.org

 

 

 

 

'프로그래밍 > 윈도우시스템' 카테고리의 다른 글

세마포어(Semaphore)에 대한 이해  (0) 2019.12.04
뮤텍스 예제  (0) 2019.12.04
뮤텍스에 대한 이해 (Mutex)  (0) 2019.12.04
블로그 이미지

cocoa9518

,