"병렬성"과 "동시성"은 컴퓨터 과학에서 작업을 효율적으로 수행하기 위한 두 가지 개념.
이름만 보면 비슷한 의미로 보여 혼동하기 쉽지만, 서로 다른 문제를 해결하는 기술이다.
병렬성 (Parallelism)
- 여러 작업을 동시에 실행하는 것 -> 전체 처리 시간 단축을 목표
- '멀티코어 프로세서'나 '분산 시스템'을 활용해 작업을 나누고,
각 코어에서 독립적으로 실행함으로써 전체 처리 시간을 단축.
- '멀티코어 프로세서'나 '분산 시스템'을 활용해 작업을 나누고,
- 마치 여러 요리사가 각자 다른 요리를 동시에 하는 것
특징
- 여러 작업이 물리적으로 동시에 실행
- 하드웨어의 멀티코어 or 멀티프로세서 환경에서만 가능
- 작업 간 독립성이 높으며, 서로 영향을 주지 않는 경우가 많다.
예시
- 비디오 렌더링
- 큰 비디오 파일을 여러 조각으로 나누고
각 조각을 여러 코어에서 동시에 처리
- 큰 비디오 파일을 여러 조각으로 나누고
- 행렬 연산
- 수학적 연산을 여러 코어에서 병렬로 처리
동시성 (Concurrency)
- 여러 작입이 번갈아가며 실행되는 것 -> 작업간 상호작용 및 효율적인 스케줄링을 목표
- 단일 코어에서도 여러 작업을 작업 단위(스레드 or 프로세스)로 나누어,
작업들이 논리적으로 동시에 실행되는 것처럼 보이게 함.
- 단일 코어에서도 여러 작업을 작업 단위(스레드 or 프로세스)로 나누어,
- 마치 한 요리사가 여러 요리를 번갈아가며 준비
특징
- 작업이 동시에 실행되는 것처럼 보이지만,
실제로는 작업 간 전환이 빠르게 이루어지는 것. - 단일 코어 환경에서도 동시성이 가능하다. -> 다중 코어에서도 각 코어별로 가능
- 스레드 or 이벤트 루프를 활용한다.
- 작업 간 상호작용(공유 자원, 락 등)이 빈번하게 발생할 수 있다.
예시
- 웹 서버
- 하나의 서버가 여러 클라이언트의 각 요청이 처리되다가도 다른 요청으로 전환
- GUI 애플리케이션
- 사용자의 입력 이벤트와 백그라운드 작업을 번갈아 처리
특징 | 병렬성 (Parallelism) | 동시성 (Concurrency) |
실행 방식 | 물리적으로 동시에 (여러 작업이 동시에) |
논리적으로 동시에 (여러 작업이 번갈아 가며) |
필요한 자원 | 멀티코어 or 멀티프로세서 환경 | 단일 코어(멀티스레드) 또는 멀티코어, 멀티 프로세서 환경 |
목적 | 전체 처리 시간 단축 | 작업 간 상호작용 및 효율적인 스케줄링 |
작업 간 독립성 | 독립성 높음 * 작업간 간섭 주지 않는 경우 많음 |
독립성 낮음 * 작업간 상호작용이 빈번 -> 데드락 위험 |
예시 | 비디오 렌더링, 행렬 연산 | 웹 서버 요청 처리, GUI이벤트 처리 |
병렬성과 동시성을 함께 사용하는 경우
현대 컴퓨팅에서는 혼용해서 사용하는 경우가 많음
- 웹 서버
- 병렬성 : 각 작업이 멀티코어 환경에서 물리적으로 동시에 실행
- 동시성 : 서버가 여러 클라이언트 요청을 스레드 단위로 번갈아가며 처리
- 대규모 데이터 처리
- 병렬성 : 멀티코어 환경에서 각 작업이 병렬로 실행
- 동시성 : 대규모 작업을 여러 스레드가 나누어 관리
반응형
'Computer Science > OperatingSystem' 카테고리의 다른 글
[운영체제] 컨테이너 (Container) (0) | 2024.11.25 |
---|