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 |