개발을 하다 보면 다음과 같은 상황을 자주 마주합니다.
이런 문제를 이해하기 위해 반드시 알아야 할 개념이 바로 Process와 Thread 입니다. 이번 글에서는 Process와 Thread가 무엇인지, 왜 필요한지, 그리고 어떻게 동작하는지를 알아보겠습니다.
Process(프로세스)는 실행 중인 프로그램을 의미합니다. 단순한 프로그램 파일(.exe, .app 등)이 아니라, 메모리에 올라가 CPU 자원을 할당받아 실제로 실행되고 있는 상태를 말합니다.
프로그램 실행 → 운영체제가 메모리에 적재 → 하나의 Process 생성
각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 기본적으로 자원을 공유하지 않습니다.
Thread(스레드)는 프로세스 내에서 실행되는 작업의 흐름 단위입니다. 하나의 프로세스 안에는 여러 개의 스레드가 존재할 수 있으며, 이를 멀티스레딩(Multi-threading)이라고 합니다.
하나의 Process
├─ Thread 1
├─ Thread 2
└─ Thread 3
스레드는 프로세스의 메모리 공간을 공유합니다.
| 구분 | Process | Thread |
|---|---|---|
| 메모리 | 독립적 | 프로세스 내에서 공유 |
| 생성 비용 | 큼 | 상대적으로 작음 |
| 안정성 | 높음 | 한 스레드 오류가 전체 프로세스에 영향 가능 |
| 통신 방식 | IPC 필요 | 메모리 공유 |
Process와 Thread는 단순한 실행 단위의 차이를 넘어, 안정성과 성능 사이의 균형을 결정하는 핵심 개념입니다.
정리하면 Process는 독립성과 안정성을 제공하고, Thread는 자원 공유와 성능 향상에 유리합니다. 하지만 스레드는 동기화 문제(경쟁 상태, 데드락 등)를 유발할 수 있어 추가적인 관리가 필요하다는 단점도 존재합니다.
현대 소프트웨어 개발 환경에서 멀티스레딩은 거의 기본 전제 조건이며, 백엔드·프론트엔드·모바일·게임 개발자 모두가 반드시 이해해야 할 개념입니다.