개념
병행성: 동시에 실행되는 것 '처럼' 보인다.
병렬성: 실제로 동시에 실행된다.
병행성(Concurrency)
- 병행성은 동시성이라고도 부름
- 논리적 개념(프로그램 성질)
- 보통 싱글 코어에서 멀티스레드를 동작시키기 위해 사용. 하지만 멀티코어에서도 실행 가능. (싱글, 멀티 둘다 실행 가능)
- 보기에는 스레드들을 동시에 병렬적으로 실행하는 것처럼 보이지만, 사실은 번갈아가면서 실행을 시켜 동시에 실행되는것처럼 보이게 함.
병렬성(Parallelism)
- 실제 동시 실행
- 물리적인 개념(하드웨어 성질)
- 멀티코어에서 멀티 스레드를 동작시킴(멀티코어에서만 실행 가능)
- 병렬성은 데이터 병렬성(Data Parallelism), 작업 병렬성으로 나눠진다.
- 데이터 병렬성: 같은 작업의 전체 데이터를 서브 데이터로 나눠서 같은 작업을 동시에 처리함
- 작업 병렬성: 서로 다른 작업을 동시에 처리함