seungjun.dev

동시성과 병렬성

동시성과 병렬성의 개념 정리

동시성

논리적인 동시 실행

  • 싱글 코어에서 멀티 스레드를 동작시키는 방식
  • 정의: 여러 작업이 짧은 시간 동안 번갈아 처리되어, 사용자가 느끼기에 마치 동시에 실행되는 것처럼 보이는 것
  • 핵심 원리: 싱글 코어 환경에서 컨텍스트 스위칭을 통해 구현
  • 특징: 한 번에 실제로 실행되는 작업은 단 하나

쉽게 이해하기

한 명의 바리스타(단일 코어 CPU)가 2개의 주문(아메리카노, 라떼)을 처리하는 상황

  1. 에스프레소 샷을 내림 (아메리카노)
  2. 샷이 나오는 동안, 우유를 스팀 (라떼)
  3. 다시 돌아와 샷에 물을 붓는다 (아메리카노 완료)
  4. 스팀된 우유를 샷에 붓는다 (라떼 완료)

한 번에 하나의 일만 하지만, 두 작업을 왔다 갔다 번갈아가며(컨텍스트 스위칭) 처리함으로써 전체 작업 완료 시간을 단축한다.

겉보기에는 두 음료가 동시에 만들어지는 것처럼 보인다.

병렬성

물리적인 동시 실행

  • 멀티 코어에서 멀티 스레드를 동작시키는 방식
  • 정의: 두 개 이상의 작업이 실제로 같은 시점에 함께 실행되는 것
  • 핵심 원리: 멀티 코어 환경에서 각 코어가 서로 다른 작업을 동시에 처리함으로써 구현
  • 특징: 하드웨어의 지원(여러 개의 코어)가 필수

쉽게 이해하기

두 명의 바리스타(멀티 코어 CPU)가 2개의 주문을 처리하는 상황

  • 바리스타 A는 아메리카노만 담당
  • 바리스타 B는 라떼만 담당

두 작업이 물리적으로 정말 정확히 같은 시간에 독립적으로 진행된다.