Concurrency vs. Parallelism
1. 정의
Concurrency (동시성):
- 여러 작업이 시간적 겹침을 가지고 순차적으로 진행되는 것
- 단일 코어 CPU에서도 작업 간 빠른 전환으로 동시 처리되는 것처럼 보이는 것을 concurrency 라고 함.
- 위의 경우를 Concurrent 작업 수행 이라고 부름.
Parallelism (병렬성):
- 여러 작업이 실제로 동시에 수행되는 것
- 멀티 코어 CPU 또는 여러 컴퓨터 사용되며 각 작업 독립적 실행이 이루어짐.
- 위의 경우를 Parallel 작업 수행 이라고 부름.
2. 특징
Concurrency (동시성):
- 작업 전환 (Context Switching): 빠른 전환으로 여러 작업 동시 진행 착각 유발
- 자원 공유 (Resource Sharing): 작업들 간 자원 공유 및 협력
- 멀티태스킹 (Multi-tasking): 운영체제 Multi-tasking 기능이 대표적 예시임.
- 예시:
- 웹 서버 다중 클라이언트 요청 처리 (Web Server Handling Multiple Client Requests),
- 사용자 다중 앱 동시 사용 (User Multitasking)
Parallelism (병렬성):
- 동시 실행 (Parallel Execution): 여러 작업 실제 동시 진행
- 독립적 작업 (Independent Tasks): 작업들 간 독립성 또는 분리로 영향 없음
- 속도 향상 (Speedup): 대규모 계산/데이터 처리 속도 획기적 향상
- 예시:
- 비디오 편집 프로그램 다중 프레임 동시 처리 (Video Editing Software Processing Multiple Frames),
- 과학 계산 프로그램 복잡 계산 병렬 수행 (Scientific Computing Program Performing Complex Calculations in Parallel)
3. 표로 비교
구분 | Concurrency (동시성) | Parallelism (병렬성) |
실행 방식 | 단일 core 가능, context switching | multi-core/다중 컴퓨터 필수, 실제 동시 실행 |
작업 관계 | 자원 공유, 협력 | 독립적, 영향 없음 |
목적 | 응답성 향상, 자원 활용 최적화 | 성능 향상, 처리 속도 증가 |
4. 추가 설명
- 동시성과 병렬성은 개념적으로 유사하나, 구현 방식과 목적에서 명확한 차이 존재
(Conceptual Similarity, but Implementation and Goal Differences) - 병렬성은 멀티 코어 CPU 또는 여러 컴퓨터 환경에서만 가능
(Parallelism Requires Multi-core CPUs or Multiple Computers) - 동시성은 작업 간 협력으로 효율성, 병렬성은 처리 속도 극대화에 초점 (Concurrency Focuses on Efficiency through Collaboration, Parallelism on Speedup)
- 현대 프로그램은 동시성과 병렬성을 함께 활용하여 성능 및 효율성 극대화 (Modern Programs Utilize Both for Maximum Performance and Efficiency)
같이보면 좋은 자료들