본문 바로가기
카테고리 없음

[CE] Concurrency (동시성)과 Parallelism (병렬성)

by ds31x 2024. 5. 28.

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)

같이보면 좋은 자료들