병행성(Concurrency)과 병렬성(Parallelism)은 컴퓨터에서 여러 작업을 수행할 때 자주 등장하는 개념이다.
종종 혼용되어 사용되는 개념이지만, 실제로는 중요한 차이점이 있다.
- 멀티태스킹을 처리하는 방식에 있어 근본적으로 다른 접근 방식을 제시하기 때문이다.
- 멀티태스킹: 하나의 컴퓨터 시스템에서 여러 작업을 동시에 실행하는 방식
병행성(Concurrency)
병행성은 여러 작업이 시간을 나누어 교차 실행되는 개념이다.
실제로는 한 번에 하나의 작업만 처리되지만, 빠르게 전환되면서 동시에 처리되는 것처럼 보이게 된다. - (단일 CPU에서도 가능)
동시성은 작업의 실행 순서를 잘 조정하여, 자원의 효율적 사용과 빠른 응답 시간을 달성할 수 있다.
컴퓨터에서는 하나의 프로세서로도 가능하며, 빠르게 전환하여 작업의 진행을 유지하는 방식이다.
활용 예시)
- I/O 작업이 많은 웹 서버나 데이터베이스 서버에서 유용하게 사용된다.
- 예를 들어, 웹 서버는 동시에 여러 사용자의 요청을 처리할 수 있어야 하며, 동시성을 통해 이를 가능하게 함.
병렬성(Parallelism)
병렬성은 여러 작업을 동시에 실행하는 것을 의미한다.
여기서는 여러 개의 CPU 코어가 필요하며, 각각의 코어가 서로 다른 작업을 같은 시간에 수행하게 된다.
즉, 병렬성은 물리적인 동시에 작업을 실행할 수 있는 능력을 의미한다.
반드시 여러 개의 CPU나 코어가 필요하며, 하나의 작업이 여러 조각으로 나뉘어 동시에 처리된다.
활용 예시)
- 멀티코어 CPU, 고성능 컴퓨팅, 그래픽 렌더링 등
- 대규모 데이터 처리나 복잡한 계산 작업을 빠르게 처리
동시성과 병렬성의 차이점
병렬성은 진정한 동시성을 제공하지만, 병행성은 동시성을 흉내 내는 소프트웨어적 개념이다.
차이를 이해하면, 병행 프로그래밍과 병렬 프로그래밍을 구분하고 적절히 설계할 수 있다.
구분 | 동시성 (Concurrency) | 병렬성 (Parallelism) |
정의 | 여러 작업이 번갈아가며 실행되는 것처럼 보이는 상태 | 여러 작업이 실제로 동시에 실행되는 상태이다. |
처리 방식 | 한정된 리소스(CPU)를 시간 단위로 나누어 작업을 번갈아 수행한다. | 여러 CPU나 코어가 각 작업을 동시에 수행한다. |
주 사용 환경 | 단일 CPU 환경에서 멀티태스킹 시 구현된다. | 멀티코어 CPU 또는 여러 CPU가 있는 환경에서 구현된다. |
효과 | 시스템의 응답성 향상, 작업이 순차적으로 보이지 않도록 한다. | 실행 속도 향상, 작업 완료 시간을 단축한다. |
예시 | 웹 서버에서 요청이 빠르게 처리되는 것처럼 보이는 경우 | 대용량 데이터 처리에서 여러 연산을 동시에 수행할 때 |
한계 | CPU 코어 수 이상의 작업을 동시에 수행할 수 없다. | 작업 간의 종속성이나 동기화 문제가 발생할 수 있다. |
- 이러한 차이 때문에, 동시성과 병렬성은 서로 다른 상황에서 각각의 장점을 발휘한다.
- 이 두 개념을 통해 소프트웨어의 성능을 향상시키고, 자원을 효율적으로 사용할 수 있기 때문이다.
'CS' 카테고리의 다른 글
[CS] CPU bound, IO bound (1) | 2024.12.03 |
---|---|
[CS] 동기화 기법 (1) | 2024.11.28 |
[CS] PCB와 TCB (0) | 2024.11.06 |
[CS] 파일 시스템 (0) | 2024.05.27 |
[CS] 페이지 교체와 프레임 할당 (0) | 2024.05.26 |