본문 바로가기
General

[CS] 프로세스와 스레드의 차이

by Awesome-SH 2021. 10. 5.

 

프로그램 (Program) ~ 프로세스 (Process)

프로세스와 스레드의 차이를 설명하기 앞서 프로그램에 대해 설명하자면 저장장치에 파일이 저장되어 있지만 메모리에 올라가 있지 않은 상태라고 말할 수 있다. 운영체제로 부터 프로그램 실행을 위한 독립적인 공간을 할당해 주지 않은 것이라고 생각하면 된다. 다시 말하면 메모리를 할당해 주지 않으면 코드묶음 정도라고 봐도 무방하다.

 

프로그램을 실행하는 순간 해당 코드묶음이 컴퓨터 메모리에 올라가게 되고 자신만의 독립적인 공간을 할당 받는다.

이 때의 프로그램 상태(동적인 상태)의 프로그램을 프로세스라고 한다. (실행되고 있는 컴퓨터 프로그램)

 

 

프로세스 (Process) ~ 스레드 (Thread)

과거 프로그램은 실행부터 종료까지 하나의 프로세스 만을 사용했지만 프로그램의 고도화로 인해 하나의 프로세스만으로 작업하기 어려운 상황을 만나게 된다. 현재 프로그램은 하나의 작업만 하는 경우는 드물다. 할당된 메모리 안에서 더 작은 단위의 실행작업들이 필요하게 되면서 나온 개념이 스레드다.

 

스레드는 프로세스와 다르게 프로세스 안에서 스레드 간 메모리를 공유하며 작동하게 된다. 프로세스 자원을 공유하며 프로세스 실행 흐름의 일부가 되는 것이고 스레드는 프로세스 코드에 정의된 절차에 따라 실행되는 수행 경로가 되는 것이다.

 

 

정리

프로세스는 Code, Data, Stack, Heap의 형식으로 운영체제로부터 시스템 자원을 할당 받고

스레드는 Stack을 할당받게 되고 프로세스 안에서 Code, Data, Heap 공유자원을 이용하게 된다.

CPU는 작업을 처리할때 스레드를 최소 작업단위로 생각하게 되며, 운영체제에서는 스레드까지 직접 관리하지 않기 때문에

운영체제 관점에서의 최소 작업 단위는 프로세스가 된다.

댓글