CS

[CS] - 동시성(Concurrency) VS 병렬성(Parallelism)

jyu_seo_ 2025. 12. 28. 20:45

 

1. 동시성 (Concurrency)


CS를 준비하면서 동시성과 병렬성을 비교해서 설명하라는 예상질문을 보았다.

근데 비교해서 설명한다면 서로의 차이점에 대해서만 설명하게 되지않을까?

일단 동시성과 병렬성이라는 기본 적으로 각 개념이 가지고있는 고유의 특성을 알지못하고

차이점만 알고 있다면 면접에서 쉬이 말할 수 있겠지만, "그게 나에게 도움이 얼마나 될까?"

라는 생각을 하게 되어 이번 포스팅을 정리하게 되었다.

 

각 개념이 가지는 정의와 특징을 알아보면서 두 개념의 차이를 확인해 보자.

 

이름만 따지고 보면 동시에 발생하는 성질의 의미를 가지고 있으나, IT용어 측면의 동시성은 아래와 같은 의미를 가진다.

 

동시성은 하나의 시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 하는 것이다

실질적으로는 한번에 하나의 작업만을 처리한다.

 

동시성의 주요 목표는 유휴 시간을 최소화하여 CPU를 최대화하는 것이다.
현재 스레드나 프로세스가 I/O 작업, DB트랜잭션을 기다리거나 외부 프로그램을
시작하는 동안 다른 프로세스나 스레드가 CPU 할당을 받는다.
이때, 커널 쪽에서 OS는 active task에 인터럽트를 보내 중지하게 된다.

 

유휴시간 (idle time)은 CPU의 처리 시간과 I/O 장치에서의 처리 시간 차이로
CPU를 사용할 수 있는 상태임에도 CPU가 작업을 하지 않고 쉬고 있는 시간을 의미한다.

 

둘 이상의 task가 싱글 코어 또는 멀티 코어 CPU의 동일한 코어에서 실행 중인 경우
동일한 리소스에 동시에 엑세스할 수 있다. data read 작업이 병럴로 수행되고 안전하더라도
write 권한으로 접근할 경우 꼭 데이터 무결성을 유지해야 한다.

프로세스 스케쥴링에 대해 잘 알아야 할 것 같다.

2. 병렬성 (Parallelism)

병렬성은 동일한 시간에 프로그램의 독립적인 작업을 실행할수 있음을 의미한다.

동시성과 차이로는, 여러 작업이 다른 코어, 다른 프로세서 또는 분산시스템이 가능한 별도의 컴퓨터 등에서

동시에 실행할 수 있다. 실제 응용 프로그램의 컴퓨팅 속도에 대한 요구가 증가함에 따라 병렬성은 보다 보편화되고 저렴해졌다.

 

 

병렬로 처리할 작업들은 병렬처리기에서 실행되며, 각각의 작업은 별도의 프로세스나 스레드에서 실행된다.

이러한 병렬처리기는 여러 개의 CPU 또는 CPU 코어가 있어서, 각각의 작업이 서로 다른 CPU 또는 CPU 코어에서

병렬적으로 실행된다.

 

병렬성은 멀티코어 컴퓨터에서 많이 사용되며, 실행 시간을 줄이거나 처리량을 늘리는 데에 사용된다.
예를 들어, 병렬처리를 사용하여 이미지나 비디오를 인코딩하거나, 대규모 데이터를 처리하는 등의 작업을

효율적으로 처리할 수 있다.

 

2.1 병렬성의 작동원리

병렬성에 대한 예시로 분산 컴퓨팅 시스템이 있다. 이는 여러 컴퓨터 시스템으로 구성되지만
실행은 단일 시스템으로 실행된다. 각 컴퓨터에 있는 시스템들은 광역 네트워크로 연결 될 수 있다.
각 컴퓨터에 존재하는 시스템들은 네트워크로 연결될 수 있다. (그림 참고) 해당 예제 외로도 하나의 컴퓨터에서

여러 코어를 사용하여 병렬 처리를 활용할 수도 있다.

 

 

따라서 병렬 처리는 성능 향상을 위한 필수 요소이다. 이러한 분산 시스템 외에도
하나의 컴퓨터에서 여러 코어를 사용하여 병렬 처리를 활용할 수도 있다.

 

병렬성과 동시성은 비슷해 보이지만 완전히 다른 개념이다.

병렬성은 여러 작업이 동시에 실행되는 것이지만, 이러한 작업들은 각각이 독립적으로 실행되며 서로 영향을 주지 않는다.

반면에 동시성은 서로 다른 작업들이 서로 영향을 주면서 동시에 실행되는 것처럼 보인다.

 

 

구분 동시성 병렬성
개념 동시에 처리하는 것처럼 보이게 하는 것 여러 작업을 실제로 동시에 처리하는 것
사용 코어 수 싱글 코어 멀티 코어
동작 방식 싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식
개념적 차이 논리적인 개념 물리적인 개념

 

 

3. 동시성 (Concurrency) vs 병렬성 (Parallelism)

두 개의 코어와 두 개의 작업(task)가 있다고 가정할 때, 동시성의 경우 한 개의 코어가
시간이 지남에 따라 task1, task2를 번갈아가며 실행한다. 병렬성은 task1, task2 간에
전환이 이루어지지 않고, 두 개의 코어 각각에서 task를 병렬로 실행한다.
아래는 위 내용에 대한 예제 그림이다.

 

3.1 동시성과 병렬성의 잠재적 위협

가장 처음에 언급했듯이 동시성과 병렬성은 복잡한 개념이며 고급 개발 기술이 필요하다.
그렇지 않으면 시스템의 안전성을 위태롭게 하는 몇 가지 잠재적 위협이 있을 수 있다
예를 들어, 동시성 환경을 신중하게 설계하지 않는다면
Deadlock, Race Condition, Starvation 등의 문제가 발생 할 수 있다.
마찬가지로 병렬성은 어디서 멈추고, 무엇을 공유해야 할지 명확한 인식이 필요하다.
그렇지 않으면 메모리 손상, 누수, 오류가 발생할 수 있다.

 

  • Deadlock는 둘 이상의 프로세스나 스레드가 한정된 자원을 여러 곳에서 사용하려고 할 때,
    서로 자원을 얻지 못하고 무한히 다음 자원을 기다리게 되는 상태를 의미한다.
  • Race Condition은 두 개 이상의 프로세스나 스레드가 하나의 자원에 접근하여 서로의 결과에
    영향을 주는 현상을 의미한다.
  • Starvation은 특정 프로세스의 우선 순위가 낮아, 원하는 자원을 계속 할당받지 못하는
    상태를 의미한다. 기아상태라고도 불린다.