프로세스와 스레드
프로세스는 운영체제로부터 자원을 할당받아 진행되는 작업을 의미하며 흔히 작업관리자를 통해서 봐왔을 것이다. 스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름을 말하며 4코어 8스레드 등으로 CPU를 구매할때 익히 봤을 단어일 것이다. 두 개념은 운영체제(OS)에 대해서 공부할 때 필수적으로 공부해야하는 개념이다 그렇기에 오늘은 이 둘에 대해서 알아보도록 하자
프로그램과 프로세스
프로그램(Program)은 흔히 윈도우 환경에서 볼 수 있는 .exe와 같은 확장자를 갖고있는 컴퓨터에서 실행할 수 있는 파일을 총칭한다. 단 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program)이라 부른다. 이러한 프로그램은 우리가 배워온 C언어나 JAVA와 같은 언어를 이용하여 코드를 작성하며 완성되어진다. 즉 코드 덩어리
프로세스(Process)는 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가는 상태를 의미한다. 즉 실질적인 프로그램의 작업이라고 보면 되며 앞에서도 말했듯 작업관리자에서 자주보던 그것이다. 이러한 프로세스는 실행하기 위한 메모리 공간을 운영체제로부터 할당받아야 하며 그렇기에 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게되어 그 공간을 프로세스가 받아 작업을 하게 된다.
스레드
과거에는 프로그램을 실행할 떄 프로세스 하나만을 이용했다고 한다. 하지만 기술이 발전됨에 따라 프로그램이 복잡해지고 다채로워짐으로서 프로세스를 하나만 사용하기에는 여러모로 한계에 봉착하게 되었다. 당장 우리의 작업관리자를 켜보자 첫 부팅후 아무런 프로그램을 실행하지 않아도 기본 프로세스들이 수십가지에서 많게는 수백가지가 실행되고 있는 모습을 볼 수 있다. 이러한것을 가능하게 해주는 것이 바로 스레드(Thread)이다.
스레드란, 하나의 프로세스 내에서 동시에 진행되는 작업 갈래를 말한다. 예컨데 인터넷 브라우저를 켰다고 생각해보자 실시간으로 데이터를 받아야할 것이고 또 받은 데이터를 처리해야 할 것이고 그리고 결과물을 화면에 띄워야할 것이고 영상이라도 보고있다면 소리도 출력해야하고 그 외에도 여러 작업을 한 프로세스에서 동시에 진행되는데 이러한 일련의 작업 흐름을 스레드라고 하며 스레드가 여러개가 있다면 멀티(다중) 스레드라고 부른다.
일반적으로 프로그램은 하나 이상의 프로세스를 가지고 있고 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다. 그리고 하나의 프로세스는 반드시 하나 이상의 스레드 즉 main 스레드를 갖게되고 2개 3개의 스레드 부터는 프로그램을 개발한 개발자가 직접 프로그래밍하여 위치시켜야 한다.
프로세스와 스레드의 메모리
프로세스는 운영체제로부터 메모리를 할당받는다고 말했다. 각 프로세스마다 힙, 스택, 데이터, 텍스트로 이루어진 메모리 공간을 할당 받고 각각의 스레드는 그중에서 스택만을 할당 받아 사용하고 나머지 힙과 데이터 텍스트는 스레드 끼리 공유하며 사용하게 된다. 즉 스레드는 별도의 스택을 가지고 있지만 힙 메모리를 공유하면서 사용하기에 서로 다른 스레드에서 가져와 읽고 쓸 수 있게된다.
참고 : 👩💻 완전히 정복하는 프로세스 vs 스레드 개념
👩💻 완전히 정복하는 프로세스 vs 스레드 개념
한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아
inpa.tistory.com
'unreal 5기' 카테고리의 다른 글
| 251001 언리얼엔진 본캠프 41일차 프로세스와 스레드(3) (0) | 2025.10.01 |
|---|---|
| 250929 언리얼엔진 본캠프 39일차 프로세스와 스레드(2) (0) | 2025.09.29 |
| 250923 언리얼엔진 본캠프 35일차 unordered_map (0) | 2025.09.23 |
| 250918 언리얼엔진 본캠프 33일차 list (0) | 2025.09.18 |
| 250917 언리얼엔진 본캠프 32일차 push_back과 emplace_back (0) | 2025.09.17 |