1. 프로세스 (Process)
프로세스는 실행 중인 프로그램의 인스턴스로, 실행을 위한 모든 리소스와 정보 (메모리, 파일 핸들, I/O 디바이스 상태 등)를 포함합니다.
특징:
- 독립성: 각 프로세스는 독립된 메모리 영역을 갖습니다. 하나의 프로세스가 다른 프로세스의 메모리에 직접 접근할 수 없습니다.
- 오버헤드: 프로세스 간의 컨텍스트 스위치(Context Switch)는 비교적 높은 오버헤드를 가집니다.
2. 스레드 (Thread)
스레드는 프로세스 내에서 실행되는 개별 실행 경로로, 프로세스의 메모리 및 리소스를 공유합니다. 하나의 프로세스는 여러 스레드를 가질 수 있습니다.
특징:
- 리소스 공유: 같은 프로세스 내의 스레드들은 코드, 데이터 및 시스템 리소스를 공유합니다.
- 효율성: 스레드 간의 컨텍스트 스위치는 프로세스 간의 컨텍스트 스위치보다 오버헤드가 적습니다.
- 경량성: 스레드는 프로세스에 비해 생성과 제거가 경량화되어 있습니다.
멀티스레드 (Multithreading)
멀티스레드는 단일 프로세스 내에서 여러 스레드를 동시에 실행하는 방식입니다.
장점:
- 더 빠른 컨텍스트 스위칭
- 메모리 및 리소스를 공유하기 때문에 효율적
단점:
- 데이터 무결성 문제와 동시성 문제를 유발할 수 있음 (예: 데드락)
- 스레드간의 충돌로 인한 디버깅 어려움
멀티프로세스 (Multiprocessing)
멀티프로세스는 여러 개의 독립적인 프로세스를 동시에 실행하는 방식입니다.
장점:
- 프로세스 간의 독립성으로 인해 안정성이 높음
- 한 프로세스에서의 오류가 다른 프로세스에 영향을 주지 않음
단점:
- 높은 메모리 사용량 및 오버헤드
- 프로세스 간의 통신 (IPC)가 복잡
결론:
스레드와 프로세스는 모두 병렬 처리를 위한 중요한 도구입니다. 필요에 따라 멀티스레드 또는 멀티프로세스 방식을 선택할 수 있습니다. 멀티스레드는 리소스를 효율적으로 사용하는 반면, 멀티프로세스는 각 프로세스의 독립성을 통해 안정성을 제공합니다.
'Computer Science' 카테고리의 다른 글
HVM(Hardware Virtual Machine)과 PV(Paravirtualization) (0) | 2023.10.23 |
---|---|
스트로브 펄스, 핸드셰이킹 (0) | 2023.10.05 |