개발 공부/CS

프로세스와 스레드

yong_DD 2023. 8. 21. 18:54

프로세스 (Process)

운영체제로부터 자원을 할당받은 작업의 단위

 

스레드(Thread)

프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

 


프로세스와 스레드를 이해하려면 먼저 프로그램과 프로세스의 차이를 이해해야한다.

프로그램과 프로세스

프로그램 (Program)

 

어떤 문제를 해결하기 위하여 그 처리 방법과 순서를 기술하여 컴퓨터에 주어지는 일련의 명령문 집합체

즉, 운영체제(OS)가 아직 파일을 메모리에 올리지 않은(실행하지 않은) 정적 상태

ex) 엑셀, 크롬, 카카오톡 등

 코드로만 이루어진 실행하지 않은 파일

 

 

프로세스(Process)

 

운영체제로부터 자원을 할당받은 작업의 단위

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

종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰임

→ 프로그램이 메모리에 올라가 실행되고 있는 컴퓨터 프로그램

 


스레드

프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위,

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

프로그램은 하나의 프로세스를 가지고 있고, 하나 이상의 스레드를 가지고 있다.

복잡한 프로그램을 프로세스 한 개로는 실행시키기 어렵기 때문에 더 작은 실행 단위가 필요했고 그것이 바로 스레드이다.

운영체제(OS)가 프로세스 마다 Code, Data, Stack, Heap 형식으로 각각 메모리 영역을 할당해주고,

독립적으로 할당해주기 때문에 Process마다 다른 Process의 자료나 변수 등에 접근할 수 없다. 

(IPC 등을 사용하면 통신이 가능하기는 하나 기본적으로는 접근할 수 없다.)

 

하나의 프로세스를 각각 register와 Stack을 할당받아 다수의 스레드로 나뉘고 자원(Code, Data, Heap)을 공유하여 서로 다른 스레드에서 읽고 쓸 수가 있게 된다.

그래서 스레드 하나에서 오류가 발생한다면 같은 프로세스 내의 다른 스레드들도 종료된다.

 

 

정리

프로세스는 프로그램을 실행시킨 것이며,

스레드는 프로세스보다 더 작은 실행단위로 프로세스에서 register와 stack을 할당받아 실행하는 흐름의 단위이다

 


 

참고자료

 

👩‍💻 ‍완전히 정복하는 프로세스 vs 스레드 개념

한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아

inpa.tistory.com

 

 

프로세스와 스레드의 차이

프로세스와 스레드의 차이는 프로세스와 스레드, 그리고 프로그램이 작동하는 방식에 대해서 잘 이해하고 있는지 확인하기 위해 기술면접에서 단골 질문 사항으로 나온다.

velog.io

 

[OS] Process vs. Thread - Shumin Blog

1. Process Process란 disk에 있는 program이 memory로 올라온 상태의 것을 의미한다. Process별로 code, data, stack, heap memory 영역을 가지며 하나의 CPU를 점유하여 수행하게 된다. Process간 context switching을 하기

shumin.co.kr

 

 

'개발 공부 > CS' 카테고리의 다른 글

[메모리] Heap과 Stack (with Kotlin)  (0) 2023.08.24