"병렬성"과 "동시성"은 컴퓨터 과학에서 작업을 효율적으로 수행하기 위한  두 가지 개념.

이름만 보면 비슷한 의미로 보여 혼동하기 쉽지만, 서로 다른 문제를 해결하는 기술이다.

이상적인 상황이지만,작업 단위별로 수행 완료까지 1초가 걸리고, 하나의 작업 단위 수행완료할 때까지 다른 작업 단위로 넘어가는 경우는 없다고 가정


병렬성 (Parallelism)

  • 여러 작업을 동시에 실행하는 것 -> 전체 처리 시간 단축을 목표
    • '멀티코어 프로세서'나 '분산 시스템'을 활용해 작업을 나누고,
      각 코어에서 독립적으로 실행함으로써 전체 처리 시간을 단축.
  • 마치 여러 요리사가 각자 다른 요리를 동시에 하는 것

특징

  • 여러 작업이 물리적으로 동시에 실행
  • 하드웨어의 멀티코어 or 멀티프로세서 환경에서만 가능
  • 작업 간 독립성이 높으며, 서로 영향을 주지 않는 경우가 많다.

예시

  • 비디오 렌더링
    • 큰 비디오 파일을 여러 조각으로 나누고
      각 조각을 여러 코어에서 동시에 처리
  • 행렬 연산
    • 수학적 연산을 여러 코어에서 병렬로 처리

동시성 (Concurrency)

  • 여러 작입이 번갈아가며 실행되는 것  -> 작업간 상호작용효율적인 스케줄링을 목표
    • 단일 코어에서도 여러 작업을 작업 단위(스레드 or 프로세스)로 나누어,
      작업들이 논리적으로 동시에 실행되는 것처럼 보이게 함.
  • 마치 한 요리사가 여러 요리를 번갈아가며 준비

특징

  • 작업이 동시에 실행되는 것처럼 보이지만,
    실제로는 작업 간 전환이 빠르게 이루어지는 것.
  • 단일 코어 환경에서도 동시성이 가능하다. -> 다중 코어에서도 각 코어별로 가능
    • 스레드 or 이벤트 루프를 활용한다.
  • 작업 간 상호작용(공유 자원, 락 등)이 빈번하게 발생할 수 있다.

예시

  1. 웹 서버
    • 하나의 서버가 여러 클라이언트의 각 요청이 처리되다가도 다른 요청으로 전환
  2. GUI 애플리케이션
    • 사용자의 입력 이벤트와 백그라운드 작업을 번갈아 처리

특징 병렬성 (Parallelism) 동시성 (Concurrency)
실행 방식 물리적으로 동시에
(여러 작업이 동시에)
논리적으로 동시에
(여러 작업이 번갈아 가며)
필요한 자원 멀티코어 or 멀티프로세서 환경 단일 코어(멀티스레드)
또는 멀티코어, 멀티 프로세서 환경
목적 전체 처리 시간 단축 작업 간 상호작용 및 효율적인 스케줄링
작업 간 독립성  독립성 높음
* 작업간 간섭 주지 않는 경우 많음
독립성 낮음
* 작업간 상호작용이 빈번 -> 데드락 위험
예시 비디오 렌더링, 행렬 연산 웹 서버 요청 처리, GUI이벤트 처리

병렬성동시성을 함께 사용하는 경우

현대 컴퓨팅에서는 혼용해서 사용하는 경우가 많음
  1. 웹 서버
    • 병렬성 : 각 작업이 멀티코어 환경에서 물리적으로 동시에 실행
    • 동시성 : 서버가 여러 클라이언트 요청을 스레드 단위로 번갈아가며 처리
  2. 대규모 데이터 처리
    • 병렬성 : 멀티코어 환경에서 각 작업이 병렬로 실행
    • 동시성 : 대규모 작업을 여러 스레드가 나누어 관리
반응형

'Computer Science > OperatingSystem' 카테고리의 다른 글

[운영체제] 컨테이너 (Container)  (0) 2024.11.25

+ Recent posts