동시성 (Concurrency)
- 정의: 여러 작업이 시간적으로 겹치게 실행되는 것. 이것은 실제로 작업들이 동시에 실행되는 것을 의미하는 것은 아니며, 단일 코어 시스템에서도 동시성을 구현할 수 있습니다.
- 목적: 동시성은 효율성과 반응성을 향상시키기 위해 사용됩니다. 예를 들어, 한 작업이 I/O 바운드 작업 (예: 디스크에서 데이터 읽기)을 수행하는 동안 다른 작업을 수행하여 시스템의 활용도를 높일 수 있습니다.
- 구현: 쓰레드, 코루틴, 비동기 I/O 등과 같은 기술로 구현됩니다.
병렬성 (Parallelism)
- 정의: 두 개 이상의 작업이 동시에, 즉 동시에 실행되는 것. 병렬성은 일반적으로 여러 코어나 프로세서에서 작업을 동시에 실행하여 작업을 빠르게 완료하는 데 초점을 맞춥니다.
- 목적: 병렬성의 주된 목적은 계산 성능을 향상시키는 것입니다. 큰 데이터 집합 또는 계산 집약적인 작업을 여러 부분으로 나누어 동시에 처리하여 전체 작업을 빠르게 완료합니다.
- 구현: 멀티프로세싱, 멀티코어 아키텍처, 병렬 컴퓨팅 프레임워크 (예: CUDA, OpenMP) 등을 사용하여 구현됩니다.
동시성 vs 병렬성
- 동시성은 여러 작업이 시간적으로 겹치게 실행되는 것을 다룹니다. 이는 실제로 동시에 실행되지 않을 수도 있습니다.
- 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 목표로 합니다.
동시성은 여러 개를 돌아가며 하는거고 병렬성은 여러 개를 한 번에 진행 중인 것이다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.09.22 Call by reference (0) | 2023.09.22 |
---|---|
23.09.21 Base64 인코딩 (0) | 2023.09.21 |
23.09.19 복합 인덱스(Composite Index, Compound Index) (0) | 2023.09.20 |
23.09.18 해시테이블 다시 학습 (0) | 2023.09.19 |
23.09.17 힙 더 알고 가자 (0) | 2023.09.19 |