프로세스와 스레드... 나는 그것의 차이를 물어봤을 때 제대로 대답하지 못했다. 개인적으로 운영체제나 여러 수업을 들었을 때 어렴풋이 알고 있다고 생각했는데 전혀 알고 있는 상태가 아니였다. 머리속으로 대충 개념은 있으나 그저 대충일뿐 알지 못하는 상태였던 것이다. 그렇기 때문에 정리해서 기억해두고 싶었다.
프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위이자 실행중인 프로그램의 인스턴스이다.
스레드 : 프로세스가 할당받은 자원을 이용하는 작업 흐름의 작은 단위이다. 하나의 프로세스는 여러 스레드를 가질 수가 있다.
그럼 이 둘은 어떤 차이가 있을까? 물론 스레드 자체가 프로세스 안에 있다는 점 말고도 말이다.
일단 프로세스는 독립된 메모리 공간을 가진다. 따라서 운영체제는 PCB(Process Control Block) 과 메모리 공간을 할당하고 초기화 시키는 과정을 거친다. 하지만 이런 점 때문에 한 프로세스가 다른 프로세스의 영역을 들여다볼 수가 없다. 따라서 프로세스끼리 정보를 주고 받으려면 IPC(Inter-Process Communication) 를 활용하거나 공유 메모리를 만들어서 데이터를 주고받아야 한다. 하지만 이런 점 덕분에 한 프로세스가 오류가 나서 비정상적으로 종류되더라도 다른 프로세스에는 영향이 거의 없다.
스레드는 각자 할당받은 스택은 있으나 자신이 소속된 프로세스의 메모리 영역을 공유한다. 그렇기 때문에 같은 메모리 영역에서 빠르고 쉽게 정보 교환이 가능하다. 하지만 스레드 하나가 잘못된 연산등의 문제로 비정상적으로 종료된다면 다른 스레드에도 영향을 미친다. 그렇기 때문에 동기화(뮤텍스, 세마포어) 에 주의해야한다.
이렇게 간단하게나마 스레드와 프로세스 그리고 그 둘의 차이에 대해 알아봤다. 완벽한 내용일지는 모르지만 그래도 다시 이해하는데 도움이 된 것 같다.
'TIL' 카테고리의 다른 글
2025. 05. 01 (0) | 2025.05.01 |
---|---|
2025. 03. 10 (0) | 2025.03.10 |
2025. 03. 08 (0) | 2025.03.08 |
2025. 03. 02 (0) | 2025.03.02 |
2025. 02. 16 (1) | 2025.02.16 |