컴퓨터 과학

[운영체제] 프로세스와 스레드 - 멀티 프로세스와 멀티 스레드

Data Jun 2025. 11. 27. 21:55

운영체제에서 프로세스(Process)스레드(Thread) 는 프로그램 실행의 핵심 단위입니다.
이번 글에서는 두 개념의 차이를 직관적으로 설명하고, 특히 멀티프로세스(Multi-Process)멀티스레드(Multi-Thread) 의 차이까지 이미지와 함께 정리해보겠습니다.

 

1. 멀티프로세스와 멀티스레드란

1️⃣ 멀티프로세스(Multi-Process)

하나의 프로그램을 여러 개의 독립된 프로세스로 실행하는 방식입니다.

 

2️⃣ 멀티스레드(Multi-Thread)

하나의 프로세스 내부에서 여러 개의 스레드가 동시에 코드를 실행하는 방식입니다.

 

두 방식 모두 병렬 혹은 동시 실행을 위해 사용되지만, 자원을 공유하는 방식에 따라 구조적 차이가 있습니다.

 

2. 멀티프로세스 — 여러 프로세스를 동시에 실행

멀티프로세스는 동시에 여러 프로세스가 실행되는 형태입니다.

 

✔ 1️⃣ 웹 브라우저 탭

  • 크롬에서 탭을 하나 더 열면 → 프로세스도 하나 더 생성
  • 작업 관리자에서 보면 탭 수만큼 프로세스가 존재

✔ 2️⃣ 같은 프로그램을 여러 번 실행

 

예를 들어, hi.txt 파일을 읽고 출력하는 프로그램을
3개의 프로세스로 실행하면…

  • 메모리에 프로그램이 3개 적재
  • 동일 파일을 각각 읽고 화면에 출력
  • 서로 독립적으로 실행됨

3️⃣  특징

  • 프로세스는 서로 메모리, 변수, 파일 핸들 등 자원을 공유하지 않는다
  • 그래서 하나의 프로세스가 죽어도 다른 프로세스에는 영향 없음
  • 하지만 메모리를 많이 소비함(오버헤드 큼)

 

3. 멀티스레드 — 한 프로세스 안에서 여러 스레드 실행

멀티스레드는 한 프로세스 내부에서 여러 흐름(thread) 이 동시에 실행되는 구조입니다.

 

1️⃣스레드는 무엇을 가지고 있을까?

각 스레드는 다음과 같은 실행 정보를 고유하게 가집니다.

  • 스레드 ID
  • 프로그램 카운터(다음 실행 명령의 주소)
  • 레지스터 값
  • 스택(Stack)

2️⃣ 하지만 아래의 자원들은 프로세스 전체가 공유함

  • 코드 영역
  • 데이터 영역
  • 힙 메모리
  • 파일 디스크립터 등

즉, 스레드는 실행 흐름만 분리되어 있을 뿐
같은 집(프로세스)에 살고 있는 여러 명의 작업자라고 보면 됩니다.

4. 멀티프로세스 vs 멀티스레드 — 가장 큰 차이: 자원 공유 여부

1️⃣ 멀티프로세스는?

  • 서로 자원을 공유하지 않음
  • 완전히 독립적으로 실행
  • 한 프로세스의 문제 → 다른 프로세스에게 영향 없음
  • 다만 cost가 큼 (메모리, 문맥교환)

2️⃣ 멀티스레드는?

  • 같은 프로세스의 자원을 공유
  • 협력, 통신이 매우 쉬움 (공유 변수 바로 사용 가능)
  • 하지만 한 스레드 오류 → 프로세스 전체가 죽을 수 있음

 

5. 어떤 상황에서 무엇을 쓰면 좋을까?

 

1️⃣ 멀티프로세스를 사용하면 좋은 경우

  • 안정성이 중요할 때 (한 작업의 오류가 전체에 영향 주면 안 될 때)
  • 보안 분리가 필요한 경우
  • CPU 활용을 극대화하고 싶을 때 (프로세스는 독립적이라 OS가 병렬 처리 최적화 가능)

2️⃣ 멀티스레드가 좋은 경우

  • 데이터 공유가 잦고 빠른 협력이 필요한 경우
  • 메모리 효율이 중요할 때
  • 웹 서버처럼 요청 처리 속도가 중요한 경우

 

정리하면

구분 멀티프로세스 멀티스레드
메모리 공유 없음 있음
안정성 높음(독립적) 낮음(전체 영향 가능)
자원 소모 많음 적음
통신 난이도 높음 (IPC 필요) 낮음 (공유 변수 사용)
사용 예시 웹 브라우저 탭, 서버 다중 프로세스 게임 엔진, 웹서버 워커, 백드라운드 작업

 

프로세스와 스레드는 운영체제를 공부할 때 꼭 이해해야 하는 핵심 개념입니다.
특히, 멀티프로세스(MP)와 멀티스레드(MT)의 차이는 자원을 공유하느냐, 독립적으로 실행하느냐의 차이이며
이를 잘 이해하면 시스템 구조를 설계할 때 더 나은 선택을 할 수 있습니다.