Intro

프로세스와 스레드는 자주 사용되는 용어이면서 동시에 쉽게 혼동할 수 있는 개념이기 때문에 정확한 개념을 잡을 필요가 있다.

Process

프로세스는 사전적으로 아래와 같이 정의된다.

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

OS 공룡책에서는 프로그램과 프로세스를 비교하며 프로세스의 개념을 설명하고 있다. 프로그램은 명령어 리스트를 내용으로 가지고 있으며 디스크에 저장되어 있는 파일이다. 반면 프로세스는 이 프로그램이 메모리에 올라가서 실행중인 작업을 말한다. 프로그램이 실행되어 메모리에 적재될 때 Code(Text), Data, Stack, Heap 영역을 할당받으며 여기에 프로그램카운터를 포함하여 프로세스라고 한다.

01.png

Threads

스레드는 사전적으로 아래와 같이 정의된다.

프로세스 내에서 실행되는 여러 흐름의 단위

말 그대로 스레드는 프로세스에서 실행되고 있는 여러 흐름의 최소 단위를 말하며 한 프로세스는 최소 1개 이상의 스레드를 갖는다. 스레드의 프로세스 내에서 각각의 stack 만 따로 할당을 받고 code, data, heap은 공유한다.

03.png

참고