전체 목록
운영체제Easy#194

프로세스와 스레드의 차이를 설명해주세요.

#운영체제#Process#Thread#동시성

답변 포인트

메모리 독립성과 공유 상태를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

프로세스는 독립적인 메모리 공간을 가진 실행 단위이고, 스레드는 같은 프로세스 안에서 메모리를 공유하는 실행 흐름입니다. 스레드는 가볍지만 동기화 문제가 생길 수 있습니다.

프로세스는 실행 중인 프로그램의 독립적인 자원 단위이고, 스레드는 프로세스 안에서 실행되는 작업 흐름 단위입니다. 프로세스는 메모리 공간이 분리되어 안정성이 높고, 스레드는 같은 메모리를 공유해 통신은 쉽지만 동기화 문제가 생기기 쉽습니다.

핵심 개념

  • 프로세스는 각자 가상 주소 공간, 파일 디스크립터, 권한 등을 가집니다.
  • 스레드는 같은 프로세스의 heap, 전역 변수, 열린 파일 등을 공유하고 stack은 각자 가집니다.
  • 프로세스 간 통신은 IPC가 필요하지만, 스레드 간 통신은 공유 메모리로 빠르게 할 수 있습니다.

동작 방식 또는 판단 기준

이 주제를 이해할 때는 다음 순서로 보면 실무 적용이 쉬워집니다.

  1. 무엇을 해결하려는가: 성능, 표현력, 안정성, 접근성 중 어떤 문제를 줄이려는지 확인합니다.
  2. 전제 조건은 무엇인가: 정렬 여부, 브라우저 지원, 네트워크 특성, 동시성 조건처럼 성립해야 하는 조건을 점검합니다.
  3. 비용은 어디서 발생하는가: 시간 복잡도, 메모리, 캐시, 재시도, 렌더링 비용처럼 병목 지점을 나눠 봅니다.
  4. 실패 시 어떤 문제가 생기는가: 잘못 적용했을 때의 버그나 운영 리스크를 함께 고려합니다.

실제 예시

Text
 
- /           
-      , , I/O  

 
- Node.js cluster:   CPU  
- Java server:     worker thread 

실무에서 주의할 점

  • 스레드는 공유 상태 때문에 race condition, deadlock 같은 동시성 버그가 발생할 수 있습니다.
  • 프로세스는 격리성이 좋지만 생성/전환 비용과 IPC 비용이 스레드보다 큽니다.
  • 언어 런타임에 따라 스레드가 OS thread인지 green thread인지, GIL 같은 제한이 있는지 다릅니다.

실무 적용 가이드

  • 장애 격리와 보안이 중요하면 프로세스 분리를 고려합니다.
  • 공유 메모리 기반 병렬 처리가 필요하면 스레드를 쓰되 동기화 원칙을 세웁니다.
  • CPU-bound와 I/O-bound 작업을 구분해 적절한 concurrency 모델을 선택합니다.

함께 연결해서 보면 좋은 키워드

Process, Thread, Memory, Concurrency, IPC

정리

프로세스는 실행 중인 프로그램의 독립적인 자원 단위이고, 스레드는 프로세스 안에서 실행되는 작업 흐름 단위입니다. 다만 개념 자체보다 중요한 것은 적용 조건과 한계를 함께 이해하는 것입니다. 작은 예제에서는 단순해 보여도 실제 서비스에서는 성능, 보안, 유지보수성, 접근성 요구사항이 함께 얽히므로, 문제의 성격을 먼저 파악한 뒤 적절한 도구로 선택하는 것이 좋습니다.

관련 질문

같은 카테고리/태그 기준