- 프로세스의 실행 가능한 가장 작은 단위를 말한다.
- 프로세스는 여러 스레드를 가질 수 있다.
- ex. 웹 브라우저의 프로세스 ⇒ 화면 출력 스레드 + 입력 스레드 + 검색 스레드
코드
,데이터
,힙
,스택
을 각각 생성하는 프로세스와는 달리- 스레드는
코드
,데이터
,힙
은 스레드끼리 서로 공유하고, 그 외 영역은 각각 생성된다.
- 스레드는
현재는 CPU에게 전달할 때 프로세스 단위가 아니라 스레드 단위로 처리할 작업을 보내는 경우가 많다고 한다.
실행에 필요한 최소한의 정보를 가지고 있다.
- 스레드 ID / 프로그램 카운터를 비롯한 레지스터 값 / 스택 등
- 여러 개의 ‘프로세스’, 즉 멀티프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다.
- 장점
- 하나 이상의 일을 병렬로 처리할 수 있다.
- 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해서 처리할 수 있으므로 신뢰성이 높다.
- 단점
- 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다
- 예시
- 웹 브라우저는 멀티프로세스 구조를 가지고 있다.
- 브라우저 프로세스: 주소 표시줄, 북마크 막대, 뒤로 가기 버튼, 앞으로 가기 버튼 등을 담당하며 네트워크 요청이나 파일 접근 같은 권한을 담당한다.
- 렌더러 프로세스: 웹 사이트에서 사용하는 플러그인을 제어합니다.
- GPU 프로세스: GPU를 이용해서 화면을 그리는 부분을 제어합니다.
- 웹 브라우저는 멀티프로세스 구조를 가지고 있다.
- 프로세스 내 작업을 여러 개의 ‘스레드’, 멀티스레드로 처리하는 기법이다.
- 장점
- 스택 영역만 독립된 공간을 할당받고 Code, Data, Heap 영역은 서로 공유하고 있기 때문에 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥교환이 빠르다.
- 동시성에도 큰 장점이 있다. *동시성? 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것을 말한다.
- 단점
- 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있다.
- 예시
- 웹 브라우저의 렌더러 프로세스
- 메인 스레드, 워커 스레드, 컴포지터 스레드, 레스트 스레드가 존재
- 웹 브라우저의 렌더러 프로세스
- 프로세스끼리는 자원을 공유하지 않는다 → 남남처럼 독립적으로 실행된다
- 프로세스 간에도 자원을 주고받을 수 있다: 프로세스 간 통신 (IPC)
- 스레드는 프로세스의 자원을 공유한다 → 협력과 통신에 유리하다
- 단점: 하나의 스레드가 문제가 생기면 전체 프로세스에 영향을 끼친다.