Program vs Process vs Thread 차이점

ASHAPPYASIKNOW·2022년 11월 5일
1

PROCESS, THREAD

목록 보기
1/5
post-thumbnail

컴퓨터공학 (Computer Science Engineering)을 전공한 사람들에게 프로그램과 프로세스 그리고 스레드는 매우 친숙한 개념이다. 하지만 비전공자 개발자로 시작하는 사람들에게는 다소 추상적이고 혼란스러운 개념이 될 수 있다. 이러한 이유로 설명할 때 사전적 의미 보다는 보다 직관적인 관점에서 설명하려고 노력하였다.

1. 프로그램 VS 프로세스와 스레드 차이점?

프로그램 vs 프로세스 스레드 구성요소

프로그램은 실행이 가능한 상태지만 실행하고 있는 상태는 아니다. 다시 말하자면 컴퓨터에 실행되기 위해서는 하드디스크 이외에도 메모리(RAM)자원을 더 할당받아야 한다.

  • 프로그램은 실행 가능한 파일 형태로 하드디스크에 저장된 상태를 말한다.
  • 프로세스와 스레드는 프로그램이 메모리 자원을 할당받아 컴퓨터에서 실행되고 있는 상태를 말한다.

2. 프로세스 vs 스레드 차이점?

프로세스는 자원을 할당받는다. 스레드는 프로세스가 할당받은 자원을 공유해서 사용한다.

프로세스 메모리 구조

위의 그림은 프로세스의 메모리 구조를 간략하게 나타낸 것이다. 리소스는 스레드 단위가 아니라 프로세스 단위로 독립적으로 할당받게 된다.

  • Stack: 지역 변수
  • Heap: 동적 메모리 할당 영역
  • Data: 전역변수 영역
  • Code: 프로세스의 바이너리 이미지 영역 (프로그램 코드)

스레드 메모리 구조

프로세스는 자원을 할당받고 스레드는 자원을 사용한다. 스레드를 unit of execution이라고 부르기도 하는데 이는 스레드가 실행의 주체이기 때문이다.

위의 그림에서 가장 주의 깊게 봐야 하는 부분은 멀티 스레드 부분이다. 힙과 데이터 그리고 코드 영역은 공유하고 스택 부분만 별도로 할당받아서 사용한다. 그렇기 때문에 프로세스에 비해서 상대적으로 문맥 전환(Context switching)에 유리하고 빠르다.

SUMMARY

  • 프로그램은 하드디스크에 실행할 수 있는 파일이 저장된 것을 의미한다.
  • 프로세스는 프로그램을 실행할 수 있게 가상메모리(RAM + 하드디스크)를 할당받은 상태를 의미한다.
  • 프로세서는 자원을 독립적으로 할당 받고 스레드는 이 자원을 사용한다.

REFERENCES

Differences Between Program Vs Process vs Threads
In-Memory Layout of a Program (Process)

profile
36.9 It's good time to start something new

1개의 댓글

comment-user-thumbnail
2022년 11월 8일

봐도봐도 헷갈리는데 쉽게 이해할 수 있는 설명 감사합니다!

답글 달기