CS

[CS] 병행(Concurrency)과 병렬(Parallel)

KJihun 2023. 7. 12. 23:23
728x90

 

공부를 하던 도중, 병행과 병렬의 개념이 헷갈려서 정리해봤다.

 

병행(Concurrency) 병렬(Parallel)
동시에 실행되는 것 같이 보이는 것 실제로 동시에 여러 작업이 처리되는 것
싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식
한번에 많은 것을 처리 한번에 많은 일을 처리
논리적인 개념 물리적인 개념

 


 

 

병행(Concurrency)

 

  • 단일 프로세서 또는 단일 코어에서 여러 작업이 시분할 방식으로 조금씩 번갈아가며 실행되는 방식이다.
  • 여러 작업을 번갈아 가며 실행되면서 자원을 최대한 활용하여 작업을 빠르게 완료하는 것이 목표이다.
  • 작업들이 서로에게 영향을 주지 않거나 의존성이 적을 경우 성능 향상을 노릴 수 있다.
  • 병행은 모든 상황에서 성능 향상을 보장하지는 않는다.
    • ex :의존성이 많거나 동기화 작업이 필요한 경우, 병행을 통해 성능 향상을 기대하기 어렵다.

 

 




병렬(Parallel)

 

  • 다중 프로세서 또는 다중 코어를 통해 여러 작업이 실제로 동시에 실행되는 방식이다.
  • 여러 작업들을 동시에 처리함으로써 성능 향상시킨다.
  • 작업을 작은 단위로 분할하여 각각의 작업을 병렬로 처리하는 방식
  • 대규모 계산 작업, 데이터 처리, 그래픽 렌더링, 과학적 모델링 등 다양한 분야에서 활용된다.
  • 의존성이나 동기화 작업 등 복잡한 상호작용이 필요한 경우에는 병렬화하기 어려울 수 있다.

 

 

공통점: 작업을 분할하여 동시에 처리하며 성능 향상을 목표로 한다.

'CS' 카테고리의 다른 글

[CS] TDD(Test-Driven Development)란?  (0) 2023.07.31
[CS] 스케줄링  (0) 2023.07.15
[Spring] Spring AOP(Aspect-Oriented Programming)  (0) 2023.07.11
[CS] DBMS  (0) 2023.07.08
[Network] HTTP/HTTPS의 차이, SSL/TLS이란?  (1) 2023.07.05