Concurrency 동시성
여러 태스크를 같은 시간(at the same time, concurrently)에 실행하지만 반드시 동시에(simultaneously) 진행되지는 않는다.
Concurrency means executing multiple tasks at the same time but not necessarily simultaneously.
특징
- 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
- 멀티 태스킹을 위해 여러 개의 스레드가 병렬적으로 실행되는 것처럼 보이지만 사실은 각 스레드가 조금씩 번갈아가면서 실행된다.
- 다음 태스크가 시작하기 전에 하나의 태스크를 완전히 끝내지 않는다.
- 컴퓨터가 1개의 CPU만을 가지면 정확히 같은 시간에 하나 이상의 일을 하지 않을 수도 있다.
- 여러 태스크가 1 코어 CPU에서 concurrently하게 실행되기 때문에 CPU는 각 태스크의 진행 순서와 시간을 정해야 한다.
예시
1개의 홀케이크를 다 먹는 일과 노래 한 곡을 동시에 다 불러야 한다.
- 케이크를 하나 다 먹은 후 노래를 부르는 방법
- 케이크 반을 먹은 후 노래를 반 부르고 케이크를 다시 반 먹는 것을 반복하는 방법
- 등..
Parallelism 병렬성
태스크를 서브태스크로 나눈 후 완전히 동일한 시간에(at the exact same time) 병렬적으로(in parallel) 진행한다.
Parallelism means that an application splits its tasks up into smaller subtasks which can be processed in parallel, for instance on multiple CPUs at the exact same time.
특징
- 멀티 코어에서 멀티 스레드를 동작시키는 방식
- 꼭 2개의 태스크가 존재할 필요가 없다.
- 여러 태스크여도 되고 하나의 태스크의 일부분이어도 된다.
- 전자는 작업 병렬성: 서로 다른 작업 처리
- ex> 웹 서버, 각 브라우저의 요청을 개별 스레드에서 병렬로 처리
- 후자는 데이터 병렬성: 전체 데이터를 멀티 코어의 수만큼 쪼개어 서브 데이터로 만듦
- 반드시 여러 프로세싱 유닛을 가진 하드웨어가 필요하다.
- 멀티코어 CPU 구조에서 하나의 코어에 각 태스크나 서브태스크를 할당하여 동시에 실행시킨다.
예시
하나의 홀케이크를 먹고 노래를 완곡해야하는 동일한 예시
이번에는 두 명으로 이루어진 팀이 생겼다.
- 내가 케이크를 먹고 팀원이 노래 부른다.
- 내가 노래를 부르고 팀원이 케이크를 먹는다.
두 태스크는 실제로 동시에 일어날 수 있고(really executed simultaneously) 이를 병렬(parallel)이라고 부른다.
차이점
“in progress”
동시성
- 여러 액션들이 (실행되진 않을 수 있지만) 진행 중이다.
- dealing with lots of things at once
병렬성
- 여러 액션들이 동시에 실행 중이다.
- doing lots of things at once
출처