본문 바로가기
전공과목/운영체제

[운영체제] 프로세스(Process) vs 스레드(Thread) 개념과 차이점 완전 정리 (시험 단골 주제)

by 아임코딩 2026. 8. 14.
반응형

컴퓨터공학과 운영체제(OS) 수업이나 전공 면접, 정보처리기사 시험에서 "운영체제의 핵심 개념"을 물어볼 때 무조건 나오는 질문이 있습니다. 바로 프로세스(Process)와 스레드(Thread)의 개념과 차이점입니다.

"둘 다 프로그램 실행 단위인 것 같은데, 정확히 무엇이 다를까?"

궁금하셨던 분들을 위해 메모리 구조 차이부터 멀티프로세스/멀티스레드의 장단점, 시험 핵심 포인트까지 한눈에 보기 쉽게 정리해 드립니다!

1. 프로세스(Process) 란?

프로세스는 '메모리에 올려져 현재 실행 중인 프로그램(Program in Execution)'을 의미합니다.

  • 특징:
    • 운영체제로부터 독립된 메모리 영역(Code, Data, Heap, Stack)을 할당받습니다.
    • 다른 프로세스의 메모리 영역에 직접 접근할 수 없으며, 접근하려면 IPC(Inter-Process Communication, 예: 파이프, 소켓, 공유 메모리 등)라는 별도의 통신 메커니즘을 사용해야 합니다.
    • 한 프로세스가 오류로 강제 종료되어도 다른 프로세스에는 영향을 주지 않습니다.

💡 프로그램 vs 프로세스

  • 프로그램: 하드디스크(SSD)에 저장되어 있는 실행되지 않은 파일 상태 (정적)
  • 프로세스: 프로그램이 메모리에 적재되어 CPU를 할당받고 실행 중인 상태 (동적)

2. 스레드(Thread) 란?

스레드는 '프로세스 내에서 실제로 작업을 수행하는 작은 실행 흐름의 단위'입니다.

  • 특징:
    • 프로세스 하나가 생성되면 최소 하나 이상의 스레드(메인 스레드)를 가집니다.
    • 스레드들은 자신이 속한 프로세스의 Code, Data, Heap 메모리 영역을 서로 공유합니다.
    • 단, 각 스레드는 자신만의 독자적인 Stack 영역과 Register를 할당받아 별도의 함수 호출과 실행 흐름을 유지합니다.
    • 메모리를 공유하기 때문에 스레드 간 통신이 매우 빠르지만, 한 스레드가 오류를 일으키면 프로세스 전체가 종료될 수 있는 위험이 있습니다.

3. 핵심 차이: 메모리 공유 구조 (시험 서술형 1순위)

시험이나 면접에서 가장 중요하게 다루는 부분이 바로 "메모리 공유 방식"입니다.

  • 프로세스 메모리 구조:
    • Code, Data, Heap, Stack 영역 전체가 프로세스마다 독립적으로 존재합니다.
  • 스레드 메모리 구조:
    • Code, Data, Heap 영역은 같은 프로세스 내의 스레드끼리 공유합니다.
    • Stack 영역 및 Register Set만 스레드마다 독립적으로 할당됩니다.

💡 스레드마다 Stack을 독립적으로 가지는 이유는?

Stack은 함수 호출 시 매개변수, 지역변수, 리턴 주소를 저장하는 공간입니다. 각 스레드가 독립적인 함수 호출과 실행 흐름을 가지기 위해 Stack 영역은 개별적으로 유지되어야 합니다.

4. 멀티 프로세스 vs 멀티 스레드 비교

구분 멀티 프로세스 (Multi-Process) 멀티 스레드 (Multi-Thread)
자원 공유 자원을 공유하지 않음 (독립적 메모리) Code, Data, Heap 영역을 모든 스레드가 공유
통신 비용 (IPC) 프로세스 간 통신(IPC) 필요로 비용이 큼 공유 메모리를 통해 매우 빠르고 간단함
컨텍스트 스위칭 캐시 메모리 초기화 등으로 오버헤드가 큼 프로세스보다 오버헤드가 훨씬 적고 빠름
안전성 (신뢰성) 한 프로세스가 죽어도 다른 프로세스에 영향 없음 한 스레드에 문제 발생 시 전체 프로세스 영향
대표적인 예 구글 크롬의 탭(Tab) 관리 웹 브라우저의 다운로드+문서 편집 동시 진행

5. 한눈에 비교하는 차이점 (시험 핵심 요약)

시험 직전 이것만 정리하면 끝나는 요약표입니다!

구분 프로세스 (Process) 스레드 (Thread)
정의 실행 중인 프로그램 (운영체제의 작업 단위) 프로세스 내에서 실행되는 흐름의 단위
메모리 할당 독립된 메모리 공간 (Code/Data/Heap/Stack) Stack만 독립적, 나머지는 프로세스 자원 공유
생성/종료 비용 무겁고 상대적으로 느림 가볍고 상대적으로 빠름
데이터 공유 IPC 통신 메커니즘 이용 전역 변수/힙 영역을 통한 직접 공유

6. 시험 단골 출제 유형 체크

  1. Q. 스레드가 프로세스 내에서 독립적으로 가지는 메모리 영역은 무엇인가?
  2. 👉 Stack 영역 (및 PC Register) 입니다.
  3. Q. 멀티 스레드 환경에서 한 스레드가 예외를 일으켜 비정상 종료되었을 때의 영향은?
  4. 👉 해당 스레드가 속한 프로세스 전체가 영향을 받아 강제 종료될 수 있습니다.
  5. Q. 컨텍스트 스위칭(Context Switching) 오버헤드가 멀티 스레드에서 더 작은 이유는?
  6. 👉 스레드 간에는 메모리 주소 공간(Code, Data, Heap)을 공유하므로, 캐시 메모리를 비우지 않고 레지스터/스택 정보만 교체하면 되기 때문입니다.
반응형