← 질문 목록
#262깊이 0
프로세스와 스레드의 핵심 차이는 무엇인가?
자원 할당과 공유 범위의 차이다. 프로세스는 운영체제로부터 독립적인 메모리 공간을 할당받지만, 스레드는 프로세스 내의 메모리를 공유한다.
| 기준 | 프로세스 | 스레드 |
|---|---|---|
| 메모리 | 독립적 할당 | 스택 제외 공유 |
| 컨텍스트 스위칭 | 무겁다 | 가볍다 |
| 영향도 | 독립적 실행 | 장애 전파 가능 |
프로세스는 코드, 데이터, 힙 영역을 각자 가진다. 그래서 한 프로세스가 죽어도 다른 프로세스에 직접적인 영향을 주지 않는다.
스레드는 힙과 정적 데이터를 공유하고 개별 스택만 가진다. 데이터 공유가 빠르지만, 한 스레드의 메모리 오염이 전체 프로세스를 종료시킬 수 있다.
컨텍스트 스위칭 비용도 다르다. 프로세스는 주소 공간이 바뀌어 TLB를 손봐야 하고 캐시도 새 작업에 밀린다. 스레드는 그 대부분을 나눠 쓰므로 전환이 가볍다.
추천 꼬리질문
관련 질문
- 스레드 풀을 사용하는 주된 이유는 무엇인가?운영체제스레드 풀의 효율성을 이해하려면 먼저 프로세스와 스레드의 구조적 차이와 스레드 생성 비용에 대한 이해가 필요하다.
- 스레드를 늘려도 CPU 병렬성이 없는 이유는?언어 · 런타임프로세스와 스레드의 차이를 이해해야 스레드가 CPU 자원을 어떻게 공유하고 경쟁하는지 알 수 있다.
- 멀티스레드 환경에서 스레드 세이프한 코드를 작성하는 방법은 무엇인가?운영체제멀티스레드 환경에서의 스레드 세이프티를 이해하려면, 먼저 스레드가 공유하는 자원과 프로세스와의 차이를 이해해야 한다.
- 멀티프로세스와 멀티스레드는 무엇으로 고르는가?운영체제
- 뮤텍스와 세마포어는 무엇으로 구분하는가?운영체제