
운영체제를 공부하면서 프로세스(Process)와 스레드(Thread)는 개념을 자주 접하게 되었습니다.
이 둘은 프로그램이 어떻게 실행되고 동작하는지 설명하는 기본적인 단위인데요, 헷갈리기 쉬운 이 개념을 간단히 정리해보겠습니다.

프로세스란 무엇인가?
프로세스는 실행 중인 프로그램을 의미합니다.
- 프로그램은 단순히 저장된 코드일 뿐이고, 프로세스는 메모리에서 실행되는 프로그램의 실체입니다.
- 프로세스는 독립적인 실행 단위로, 운영체제는 프로세스마다 고유한 메모리 공간과 자원을 할당합니다.
프로세스의 특징:
- 독립적인 메모리 공간:
- 프로세스마다 Code, Data, Heap, Stack 영역이 독립적으로 존재합니다.
- 한 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없습니다.
- 운영체제의 스케줄링 대상:
- CPU가 프로세스를 번갈아 실행하며, 운영체제는 각 프로세스의 상태를 관리합니다.
예시:
- 웹 브라우저, 텍스트 편집기 등은 각각 하나의 프로세스로 실행됩니다.
스레드란 무엇인가?
스레드는 프로세스 내에서 실행되는 작은 실행 단위입니다.
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다.
- 스레드는 프로세스가 가진 자원을 공유하며, 프로세스의 작업을 분리해서 병렬로 실행합니다.
스레드의 특징:
- 공유 메모리:
- 스레드들은 동일한 프로세스 내의 메모리(Code, Data, Heap)를 공유합니다.
- 하지만 각 스레드는 독립적인 Stack을 가집니다(함수 호출과 지역 변수 관리를 위해).
- 경량 프로세스:
- 스레드는 프로세스를 구성하는 작은 단위로, 문맥 전환(context switching) 비용이 적습니다.
- 자원을 제어:
- 스레드는 프로세스 내 자원을 효율적으로 사용하며, 작업을 분리해서 동시에 실행할 수 있도록 돕습니다.
예시:
- 웹 브라우저의 여러 탭은 하나의 프로세스 안에서 각각의 스레드로 실행됩니다.
- 게임에서는 하나의 스레드가 그래픽을 처리하고, 다른 스레드는 사용자 입력을 처리하는 방식으로 동작합니다.
프로세스와 스레드의 차이
구분 | 프로세스(Process) | 스레드(Thread) |
정의 | 실행 중인 프로그램 | 프로세스 내의 실행 단위 |
메모리 | 각각 독립적인 메모리 공간 할당 | 프로세스 내의 메모리(Code, Data, Heap)를 공유 |
속도 | 문맥 전환 비용이 큼 | 문맥 전환 비용이 적음 |
의존성 | 독립적 | 같은 프로세스 내에서 다른 스레드와 의존적 |
사용 사례 | 여러 애플리케이션 실행 | 한 애플리케이션의 여러 작업을 병렬로 실행 |
프로세스와 스레드의 관계
"하나의 프로세스 안에 여러 개의 스레드가 존재한다"는 점이 가장 중요합니다.
- 프로세스는 기본적인 실행 단위로, 메모리와 자원을 제공합니다.
- 스레드는 프로세스의 자원을 제어하고 병렬 작업을 수행하는 역할을 합니다.
- 따라서 스레드는 혼자서는 실행될 수 없으며, 반드시 프로세스 내에 존재해야 합니다.
자원 제어의 예시:
- 게임 애플리케이션:
- 하나의 스레드는 그래픽 렌더링을 담당
- 다른 스레드는 사용자 입력(키보드, 마우스)을 처리
- 또 다른 스레드는 네트워크 통신(서버와 데이터 교환)을 담당
- 웹 브라우저:
- 하나의 스레드는 웹페이지를 렌더링
- 다른 스레드는 사용자 입력(스크롤, 클릭) 처리
멀티스레드와 단일 스레드
1. 단일 스레드:
- 하나의 작업만 순차적으로 처리합니다.
- 예: 오래된 프로그램들이 대부분 단일 스레드 방식.
2. 멀티스레드:
- 여러 스레드가 동시에 작업을 처리합니다.
- 프로세스 내 자원을 공유하면서 병렬 작업을 수행해 효율을 극대화합니다.
- 예: 멀티탭 브라우저, 게임 애플리케이션 등.
정리
- 프로세스: 실행 중인 프로그램으로, 독립된 메모리와 자원을 가짐.
- 스레드: 프로세스 내에서 실행되는 작은 단위로, 프로세스의 자원을 제어하고 병렬로 작업을 수행.
- 관계: 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드는 프로세스 없이는 존재할 수 없음.
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System & Concurrency] 프로세서, 프로세스, 스레드, 코루틴의 개념과 관계 정리 (0) | 2025.03.06 |
---|---|
[Operating System] 프로세서, 코어, 프로세스, 스레드를 쉽게 이해하기: 공장 비유로 살펴보기 (0) | 2025.02.26 |
프로세스 상태 전이 다이어그램(Process State Transition Diagram) (0) | 2025.01.24 |
운영체제란 무엇인가? (0) | 2025.01.24 |