
1. 동시성(Concurrency) vs 병렬성(Parallelism)
- 동시성 : 여러 작업을 논리적으로 동시에 처리하는것 처럼 보이게 하는 것
- 병렬성 : 여러 작업을 물리적으로 동시에 실행하는 것
2. 상세 비교
동시성 (Concurrency) - "가짜 동시"
- 논리적으로 동시에 실행되는 것처럼 보이게 만드는 것.
- 실제로는 CPU 코어 1개가 아주 빠른 속도로 작업 A와 작업 B를 번갈아 가며(Context Switching) 처리합니다.
- 유휴 시간(I/O 대기 등)을 줄여서 효율성을 극대화하는 것.
비유하자면, 커피숍 직원 1명이 주문도 받고, 커피도 내리고, 청소도 하는 것. (손님 눈에는 다 동시에 하는 것처럼 보임).
병렬성 (Parallelism) - "진짜 동시"
- 물리적으로 정확히 같은 시간에 여러 작업이 실행되는 것
- 멀티 코어(Multi-core)가 필수입니다. 코어 1은 작업 A를, 코어 2는 작업 B를 잡고 달립니다.
- 작업을 쪼개서 처리 속도를 높이는 것.
비유하자면, 커피숍 직원 2명이 있어서, 한 명은 주문만 받고 다른 한 명은 커피만 내리는 것.
3. 한눈에 보는 비교표
| 구분 | 동시성 (Concurrency) | 병렬성 (Parallelism) |
|---|
| 핵심 | 구성 (Structure) | 실행 (Execution) |
| CPU 환경 | 싱글 코어에서도 가능 | 멀티 코어 필수 |
| 동작 | 시분할 (Time-slicing), 인터리빙 | 물리적 동시 실행 |
| 느낌 | 동시에 하는 척 함 | 진짜 동시에 함 |
| 목적 | 자원 효율화, 응답성 향상 | 대용량 데이터 빠른 처리 |
4. 관계 정리 (다이어그램)
소프트웨어 시스템에서 두 개념은 상호 배타적이지 않습니다.
- 동시성 O, 병렬성 X: 싱글 코어에서 멀티스레딩
- 동시성 O, 병렬성 O: 멀티 코어에서 멀티스레딩
- 동시성 X, 병렬성 O: 단순히 데이터를 쪼개서 GPU 등에서 연산만 수행할 때 (Bit-level Parallelism)