자바칩
[OS] Parallelism과 Concurrency 본문
728x90
병렬성(Parallelism)과 동시성(Concurrency)은 컴퓨터 과학에서 서로 관련되지만 다른 개념이다. 이 두 개념은 주로 여러 작업을 동시에 처리하는 방식과 관련이 있다.
병렬성(Parallelism)
병렬성은 여러 작업을 실제로 동시에 수행하는 것을 의미한다. 이는 여러 CPU 코어를 이용하여 여러 작업을 동시에 실행하는 방식이다. 병렬성은 주로 대규모 데이터 처리, 과학 계산, 그래픽 처리 등에서 성능을 향상시키기 위해 사용된다.
예시
- 멀티코어 프로세서: 여러 코어를 가진 CPU에서 각 코어가 다른 작업을 동시에 처리하는 것
- GPU 연산: 그래픽 처리 장치(GPU)는 많은 작은 코어를 사용하여 병렬 처리를 수행한다.
장점
- 성능 향상: 여러 작업을 동시에 수행하므로 작업 완료 시간이 단축된다.
- 효율적인 자원 사용: CPU나 GPU의 모든 코어를 활용하여 자원을 효율적으로 사용한다.
단점
- 복잡성 증가: 병렬 처리를 위해 코드를 작성하고 디버깅하는 것이 복잡할 수 있다.
- 동기화 필요: 여러 코어가 동일한 자원에 접근할 때 동기화 문제가 발생할 수 있다.
동시성(Concurrency)
동시성은 여러 작업을 논리적으로 동시에 진행하는 것을 의미한다. 실제로는 단일 코어에서도 스케줄링을 통해 여러 작업이 번갈아 가며 실행된다. 동시성은 작업 간의 상호 작용을 효율적으로 관리하기 위해 사용된다.
예시
- 쓰레드 기반 멀티태스킹: 운영체제가 쓰레드를 스케줄링하여 여러 쓰레드가 동시에 실행되는 것처럼 보이게 한다.
- 이벤트 기반 프로그래밍: 이벤트 루프를 통해 여러 이벤트가 비동기적으로 처리되는 방식
장점
- 응답성: 사용자 인터페이스가 있는 응용 프로그램에서 응답성이 향상된다.
- 복잡한 작업 분해: 큰 작업을 작은 단위로 분해하여 관리하고, 여러 작업을 동시에 처리할 수 있다.
단점
- 동기화 문제: 여러 쓰레드가 동일한 자원에 접근할 때 동기화 문제가 발생할 수 있다.
- 오버헤드: 쓰레드 전환과 스케줄링에 따른 오버헤드가 발생할 수 있다.
병렬성과 동시성의 비교
개념 | 병렬성(Parallelism) | 동시성(Concurrency) |
정의 | 여러 작업을 실제로 동시에 수행 | 여러 작업을 논리적으로 동시에 수행 |
사용 사례 | 대규모 데이터 처리, 과학 계산, 그래픽 처리 | 사용자 인터페이스, 서버 요청 처리 |
실행 방식 | 여러 코어에서 작업을 동시에 수행 | 단일 코어에서 작업을 번갈아 가며 실행 |
장점 | 작업 완료 시작 단축, 효율적인 자원 사용 | 응답성 향상, 복잡한 작업 분해 |
단점 | 코드 작성과 디버깅의 복잡성, 동기화 필요 | 동기화 문제, 쓰레드 전환 오버헤드 |
아래 링크의 블로그를 보고 공부하는 데에 도움이 많이 되었다.
https://spacebike.tistory.com/22