1. 프로세스 (Process)
- 정의: 실행 중인 프로그램의 인스턴스. 운영 체제에서 독립된 실행 단위.
- 특징:
- 각 프로세스는 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 가짐.
- 다른 프로세스와 메모리를 공유하지 않음 (IPC, Inter-Process Communication 사용 필요).
- 상대적으로 무겁고 생성/종료 시 오버헤드가 크며, 문맥 교환 비용이 높음.
2. 스레드 (Thread)
- 정의: 프로세스 내에서 실행되는 경량화된 실행 단위.
- 특징:
- 같은 프로세스 내의 스레드는 메모리(코드, 데이터, 힙)를 공유.
- 각 스레드는 독립된 스택과 레지스터를 가짐.
- 상대적으로 가볍고, 생성/종료 시 오버헤드가 적으며, 문맥 교환 비용이 낮음.
장단점
프로세스
- 장점:
- 독립적이어서 하나의 프로세스가 종료되더라도 다른 프로세스에 영향을 미치지 않음.
- 보안성이 높음(메모리를 공유하지 않기 때문).
- 단점:
- 문맥 교환(Context Switching) 비용이 크고, 생성/소멸 속도가 느림.
- 프로세스 간 통신(IPC)이 복잡함.
스레드
- 장점:
- 자원을 공유하므로 효율적임.
- 문맥 교환이 빠르고, 생성/종료 속도가 빠름.
- 단점:
- 하나의 스레드가 문제가 생기면 프로세스 전체가 종료될 위험.
- 동기화 문제가 발생할 가능성이 높음(데드락, 레이스 컨디션).
사용 예시
프로세스 사용 예시
- 웹 브라우저(각 창/탭은 별도의 프로세스).
- 데이터베이스 서버(독립적 프로세스를 통해 클라이언트 처리).
스레드 사용 예시
- 웹 서버(각 클라이언트 요청을 처리하는 스레드).
- 게임(그래픽 렌더링, 사용자 입력, 네트워크 처리 등 각각 스레드 활용).
효과적인 사용 시점
- 프로세스:
- 높은 안정성이 필요하거나, 독립적인 작업 단위로 구분할 필요가 있을 때.
- 서로 다른 애플리케이션 간의 독립성을 보장할 때.
- 스레드:
- 같은 데이터에 대한 여러 작업을 병렬로 수행해야 할 때.
- 실시간 반응이 중요하거나 자원을 공유하는 작업이 많을 때.
오늘은 프로세스와 스레드의 정의, 사용예시, 장단점 등에 대해 알아보았습니다 😊
자주 쓰이는 용어이니 꼭 기억합시다.
'공부 > 개발' 카테고리의 다른 글
Enlightenment Foundation Libraries (EFL): 정의, 목적, 구성요소, 사용처 (1) | 2025.01.15 |
---|---|
NUI App, Web App, Native App 구분, 특징, 장단점 (0) | 2025.01.09 |
Service, daemon이 뭘까 (0) | 2025.01.09 |