“프로세스와 스레드의 차이를 설명해보세요.” 운영체제(OS) 면접에서 거의 빠지지 않는 단골 질문입니다. 단순히 용어를 외웠는지 보려는 게 아니라, 메모리 구조·동시성·자원 관리를 한 번에 이해하고 있는지 확인하기 좋은 주제이기 때문이죠. 이 글에서 두 개념의 차이와, 면접에서 왜 자주 묻는지를 정리합니다.
핵심 요약
- 프로세스는 ‘실행 중인 프로그램’으로, 각자 독립된 메모리 공간을 가집니다.
- 스레드는 ‘프로세스 안의 실행 흐름’으로, 프로세스의 메모리를 공유합니다.
- 스레드는 생성·전환 비용이 낮고 데이터 공유가 쉽지만, 동기화 문제(경쟁 상태)가 생길 수 있습니다.
- 면접에서 자주 묻는 이유는 메모리·동시성·안정성 이해를 한 질문으로 검증할 수 있어서입니다.
프로세스란 무엇인가
프로세스(Process)는 메모리에 올라와 실행되고 있는 프로그램입니다. 운영체제는 각 프로세스에 코드·데이터·힙·스택을 담을 독립된 메모리 공간을 할당합니다. 그래서 한 프로세스는 다른 프로세스의 메모리에 함부로 접근할 수 없고, 서로 격리되어 있습니다. 이 격리 덕분에 한 프로그램이 죽어도 다른 프로그램은 영향을 받지 않습니다.
스레드란 무엇인가
스레드(Thread)는 프로세스 안에서 실제로 일을 수행하는 실행 단위입니다. 한 프로세스는 여러 스레드를 가질 수 있고, 이 스레드들은 프로세스의 코드·데이터·힙을 함께 공유합니다. 다만 각 스레드는 자기만의 스택과 레지스터를 따로 갖습니다. 메모리를 공유하니 스레드끼리 데이터를 주고받기가 쉽지만, 동시에 같은 데이터를 건드리면 문제가 생길 수 있습니다.
핵심 차이 한눈에 보기
| 항목 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립된 공간을 가진다 | 프로세스 메모리를 공유(스택만 별도) |
| 생성·전환 비용 | 무겁다 | 가볍다 |
| 통신 | 별도 IPC 필요(파이프·소켓 등) | 메모리 공유로 쉽다 |
| 안정성 | 하나가 죽어도 서로 독립 | 하나가 잘못되면 프로세스 전체 위험 |
| 동기화 | 덜 필요 | 경쟁 상태 방지가 중요 |
멀티프로세스 vs 멀티스레드
여러 일을 동시에 처리하는 방법은 크게 둘입니다. 멀티프로세스는 프로세스를 여러 개 띄우는 방식으로 안정적이지만 자원을 많이 쓰고, 멀티스레드는 한 프로세스 안에 스레드를 여러 개 두는 방식으로 가볍지만 공유 자원 관리가 까다롭습니다. 무거운 계산(CPU 바운드)은 멀티프로세스가, 대기가 많은 작업(I/O 바운드)은 멀티스레드가 유리한 경우가 많습니다.
스레드의 동시성 이슈
- 경쟁 상태(Race Condition): 여러 스레드가 같은 데이터를 동시에 바꾸면 결과가 꼬입니다.
- 동기화: 락(Lock)·뮤텍스·세마포어로 한 번에 하나만 접근하게 막습니다.
- 데드락: 서로 상대의 락을 기다리며 멈춰버리는 상황을 조심해야 합니다.
- 컨텍스트 스위칭: 실행 흐름을 전환하는 비용으로, 스레드가 프로세스보다 가볍습니다.
면접에서 자주 묻는 이유와 취업 관점
- 한 번에 많은 걸 검증: 이 질문 하나로 메모리 구조·동시성·자원 관리 이해를 모두 확인할 수 있습니다.
- 실무 연결: 서버가 요청을 어떻게 동시에 처리하는지, 왜 컨테이너가 프로세스 격리인지로 이어집니다. 도커 컨테이너도 결국 격리된 프로세스입니다.
- 기초의 힘: 프로세스·스레드는 인프라 엔지니어 로드맵의 운영체제 기초 단계에 해당합니다.
- 답변 팁: “메모리를 공유하느냐 아니냐”를 축으로 차이·장단점·동기화까지 엮어 설명하면 깊이 있게 들립니다.
자주 묻는 질문(FAQ)
프로세스가 스레드보다 안전하다는 게 무슨 뜻인가요?
프로세스는 메모리가 격리되어 있어 하나가 죽어도 다른 프로세스에 영향을 주지 않습니다. 반면 한 프로세스 안의 스레드가 잘못되면 그 프로세스 전체가 함께 죽을 수 있습니다. 그래서 안정성 면에서는 프로세스 격리가 더 강합니다.
파이썬의 GIL 때문에 스레드가 소용없다는데 사실인가요?
절반만 맞습니다. 파이썬의 GIL은 한 번에 하나의 스레드만 파이썬 코드를 실행하게 해, CPU 바운드 작업에서는 멀티스레드의 병렬 효과가 거의 없습니다. 이럴 땐 멀티프로세스를 씁니다. 다만 I/O 바운드 작업에서는 스레드도 충분히 효과가 있습니다.
멀티프로세스는 언제 쓰나요?
무거운 계산을 여러 코어로 진짜 병렬 처리하고 싶을 때, 또는 한 작업이 죽어도 다른 작업이 안전해야 할 때 멀티프로세스가 적합합니다. 대신 프로세스 간 통신과 메모리 비용을 감수해야 합니다.
신입이 프로세스·스레드를 어디까지 알아야 하나요?
메모리 공유 여부라는 핵심 차이, 생성·전환 비용, 경쟁 상태와 동기화(락), 멀티프로세스와 멀티스레드의 선택 기준을 이해하고 예로 설명할 수 있으면 신입 면접에서 충분한 강점이 됩니다.
더 읽어보기
- 신입 인프라 엔지니어 공부 순서: 리눅스·네트워크·도커·클라우드 로드맵
- 리눅스 권한 755는 무슨 뜻일까? chmod·chown을 한 번에 이해하기
- 컨테이너·도커 완벽 가이드: AI 배포의 기본기
- 쿠버네티스로 AI 워크로드 운영하기: GPU 스케줄링과 오토스케일링
※ 이 글은 운영체제의 프로세스·스레드 개념을 신입·면접 관점에서 정리한 입문 자료입니다. 세부 동작은 운영체제와 언어 런타임에 따라 달라질 수 있습니다.