프로세스와 스레드는 무엇인가요?

김영석·2023년 5월 21일
0

면접을 준비하면서 애런퐉의 블로그를 발견했는데 여기나오는 질문들의 답변을 작성하면서 나만의 답변을 만들기 위해 작성하였습니다.( https://velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C)

프로세스(Process)란?

실행중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는것을 의미한다. 운영체제로부터 주소공간,파일,메모리 등을 할당받으며 이것들을 총괄하여 프로세스라고 한다.
프로세스는 함수의 매개변수,복귀주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터섹션 포함한다.

운영체제로 부터 시스템 자원을 할당받는 작업의 단위이다.
메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 이며,
Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역이다.

스레드(Thread)란?

스레드는 프로세스의 실행 단위이다.즉, 프로세스가 할당 받은 자원을 이용하는 실행의 단위이다.

스레드는 프로세스 내에서 Stack만 따로 할당 받고 Code, Data, Heap 영역은 공유한다. 한 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 자원들(힙 공간)을 같은 프로세스의 스레드끼리 공유하면서 실행된다.
하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행능력을 향상 시키는것을 멀티 스레딩이라고 한다.

정리

즉, 프로세스는 프로그램을 실행 했을때 CPU로 부터 주소공간,파일,메모리를 할당 받는 독립된 메모리 영역이고, 스레드는 프로세의 실행단위로 프로세스가 할당 받은 자원들이 실행되는 단위이다.

profile
백엔드 개발자

0개의 댓글