콘텐츠로 건너뛰기

프로세스와 스레드 차이: 운영체제 면접에서 자주 묻는 이유

“프로세스와 스레드의 차이를 설명해보세요.” 운영체제(OS) 면접에서 거의 빠지지 않는 단골 질문입니다. 단순히 용어를 외웠는지 보려는 게 아니라, 메모리 구조·동시성·자원 관리를 한 번에 이해하고 있는지 확인하기 좋은 주제이기 때문이죠. 이 글에서 두 개념의 차이와, 면접에서 왜 자주 묻는지를 정리합니다.

핵심 요약

  • 프로세스는 ‘실행 중인 프로그램’으로, 각자 독립된 메모리 공간을 가집니다.
  • 스레드는 ‘프로세스 안의 실행 흐름’으로, 프로세스의 메모리를 공유합니다.
  • 스레드는 생성·전환 비용이 낮고 데이터 공유가 쉽지만, 동기화 문제(경쟁 상태)가 생길 수 있습니다.
  • 면접에서 자주 묻는 이유는 메모리·동시성·안정성 이해를 한 질문으로 검증할 수 있어서입니다.

프로세스란 무엇인가

프로세스(Process)는 메모리에 올라와 실행되고 있는 프로그램입니다. 운영체제는 각 프로세스에 코드·데이터·힙·스택을 담을 독립된 메모리 공간을 할당합니다. 그래서 한 프로세스는 다른 프로세스의 메모리에 함부로 접근할 수 없고, 서로 격리되어 있습니다. 이 격리 덕분에 한 프로그램이 죽어도 다른 프로그램은 영향을 받지 않습니다.

스레드란 무엇인가

스레드(Thread)는 프로세스 안에서 실제로 일을 수행하는 실행 단위입니다. 한 프로세스는 여러 스레드를 가질 수 있고, 이 스레드들은 프로세스의 코드·데이터·힙을 함께 공유합니다. 다만 각 스레드는 자기만의 스택과 레지스터를 따로 갖습니다. 메모리를 공유하니 스레드끼리 데이터를 주고받기가 쉽지만, 동시에 같은 데이터를 건드리면 문제가 생길 수 있습니다.

핵심 차이 한눈에 보기

항목프로세스스레드
메모리독립된 공간을 가진다프로세스 메모리를 공유(스택만 별도)
생성·전환 비용무겁다가볍다
통신별도 IPC 필요(파이프·소켓 등)메모리 공유로 쉽다
안정성하나가 죽어도 서로 독립하나가 잘못되면 프로세스 전체 위험
동기화덜 필요경쟁 상태 방지가 중요

멀티프로세스 vs 멀티스레드

여러 일을 동시에 처리하는 방법은 크게 둘입니다. 멀티프로세스는 프로세스를 여러 개 띄우는 방식으로 안정적이지만 자원을 많이 쓰고, 멀티스레드는 한 프로세스 안에 스레드를 여러 개 두는 방식으로 가볍지만 공유 자원 관리가 까다롭습니다. 무거운 계산(CPU 바운드)은 멀티프로세스가, 대기가 많은 작업(I/O 바운드)은 멀티스레드가 유리한 경우가 많습니다.

스레드의 동시성 이슈

  • 경쟁 상태(Race Condition): 여러 스레드가 같은 데이터를 동시에 바꾸면 결과가 꼬입니다.
  • 동기화: 락(Lock)·뮤텍스·세마포어로 한 번에 하나만 접근하게 막습니다.
  • 데드락: 서로 상대의 락을 기다리며 멈춰버리는 상황을 조심해야 합니다.
  • 컨텍스트 스위칭: 실행 흐름을 전환하는 비용으로, 스레드가 프로세스보다 가볍습니다.

면접에서 자주 묻는 이유와 취업 관점

  • 한 번에 많은 걸 검증: 이 질문 하나로 메모리 구조·동시성·자원 관리 이해를 모두 확인할 수 있습니다.
  • 실무 연결: 서버가 요청을 어떻게 동시에 처리하는지, 왜 컨테이너가 프로세스 격리인지로 이어집니다. 도커 컨테이너도 결국 격리된 프로세스입니다.
  • 기초의 힘: 프로세스·스레드는 인프라 엔지니어 로드맵의 운영체제 기초 단계에 해당합니다.
  • 답변 팁: “메모리를 공유하느냐 아니냐”를 축으로 차이·장단점·동기화까지 엮어 설명하면 깊이 있게 들립니다.

자주 묻는 질문(FAQ)

프로세스가 스레드보다 안전하다는 게 무슨 뜻인가요?

프로세스는 메모리가 격리되어 있어 하나가 죽어도 다른 프로세스에 영향을 주지 않습니다. 반면 한 프로세스 안의 스레드가 잘못되면 그 프로세스 전체가 함께 죽을 수 있습니다. 그래서 안정성 면에서는 프로세스 격리가 더 강합니다.

파이썬의 GIL 때문에 스레드가 소용없다는데 사실인가요?

절반만 맞습니다. 파이썬의 GIL은 한 번에 하나의 스레드만 파이썬 코드를 실행하게 해, CPU 바운드 작업에서는 멀티스레드의 병렬 효과가 거의 없습니다. 이럴 땐 멀티프로세스를 씁니다. 다만 I/O 바운드 작업에서는 스레드도 충분히 효과가 있습니다.

멀티프로세스는 언제 쓰나요?

무거운 계산을 여러 코어로 진짜 병렬 처리하고 싶을 때, 또는 한 작업이 죽어도 다른 작업이 안전해야 할 때 멀티프로세스가 적합합니다. 대신 프로세스 간 통신과 메모리 비용을 감수해야 합니다.

신입이 프로세스·스레드를 어디까지 알아야 하나요?

메모리 공유 여부라는 핵심 차이, 생성·전환 비용, 경쟁 상태와 동기화(락), 멀티프로세스와 멀티스레드의 선택 기준을 이해하고 예로 설명할 수 있으면 신입 면접에서 충분한 강점이 됩니다.

더 읽어보기

※ 이 글은 운영체제의 프로세스·스레드 개념을 신입·면접 관점에서 정리한 입문 자료입니다. 세부 동작은 운영체제와 언어 런타임에 따라 달라질 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다