오늘 뭐했냐/개발에 대한 주저리

23.09.20 동시성과 병렬성

스스로에게 2023. 9. 20. 23:38

동시성 (Concurrency)

  • 정의: 여러 작업이 시간적으로 겹치게 실행되는 것. 이것은 실제로 작업들이 동시에 실행되는 것을 의미하는 것은 아니며, 단일 코어 시스템에서도 동시성을 구현할 수 있습니다.
  • 목적: 동시성은 효율성과 반응성을 향상시키기 위해 사용됩니다. 예를 들어, 한 작업이 I/O 바운드 작업 (예: 디스크에서 데이터 읽기)을 수행하는 동안 다른 작업을 수행하여 시스템의 활용도를 높일 수 있습니다.
  • 구현: 쓰레드, 코루틴, 비동기 I/O 등과 같은 기술로 구현됩니다.

 

병렬성 (Parallelism)

  • 정의: 두 개 이상의 작업이 동시에, 즉 동시에 실행되는 것. 병렬성은 일반적으로 여러 코어나 프로세서에서 작업을 동시에 실행하여 작업을 빠르게 완료하는 데 초점을 맞춥니다.
  • 목적: 병렬성의 주된 목적은 계산 성능을 향상시키는 것입니다. 큰 데이터 집합 또는 계산 집약적인 작업을 여러 부분으로 나누어 동시에 처리하여 전체 작업을 빠르게 완료합니다.
  • 구현: 멀티프로세싱, 멀티코어 아키텍처, 병렬 컴퓨팅 프레임워크 (예: CUDA, OpenMP) 등을 사용하여 구현됩니다.

 

동시성 vs 병렬성

  • 동시성은 여러 작업이 시간적으로 겹치게 실행되는 것을 다룹니다. 이는 실제로 동시에 실행되지 않을 수도 있습니다.
  • 병렬성은 실제로 여러 작업이 동시에 실행되는 것을 목표로 합니다.

 

동시성은 여러 개를 돌아가며 하는거고 병렬성은 여러 개를 한 번에 진행 중인 것이다.