본문 바로가기

개발 이야기

프로세스와 스레드의 차이

728x90

 

프로세서는 운영체제의 자원 할당의 단위이고

스레드는 프로세스내의 실행의 단위 입니다.

 

참고할 만 한 링크는 아래에 있습니다.

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

 

 

 

프로세스(process)란

 

프로세스란 간단히 말해 '실행 중인 프로그램(program)'이다. 프로그램을 실행하면 OS로 부터 실행에 필요한 자원(메모리)을 할당 받아 프로세스가 된다. 즉) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말하며, 종종 스케줄링의 대상이 되는 작업(task)라는 용어와 거의 같은 의미로 쓰인다. 

 

프로세스 = 프로그램 + 프로세스제어블록이며 프로세스는 각각 독립된 메모리 영역 (Code, Data, Stack , Heap의 구조)을 할당받는다.

 

 

 

스레드(thread)란

 

쓰레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.  즉 쓰레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다. 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)과 같은 프로세스 내에 스레드끼리 공유하면서 실행된다. 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다. 

 

하나의 프로세스는 하나 이상의 스레드를 갖는다. 즉) 프로세스 내에서도 처리 흐름이 여러개가 될 수도 있다. 

 

 

 

스레드는 빠른 프로세스를 생성할 수 있고, 적은 메모리를 사용하며 정보 공유가 쉽다는 장점이 있다. 그러나 교착 상태에 빠질 수 있다는 단점도 있다. 

 

 

 

(추가1)

위 내용의 출처는 아래에 있습니다.

https://wonisdaily.tistory.com/86

 

 

 

(추가2)

추가로 더 깊이있게 알고 싶다면 아래 링크를 참고하세요.

https://kldp.org/node/295

 

 

 

 

 

그럼,

    공유합니다.

 

728x90