무지목록 동시성과 병렬성 차이

몇달 전에 같은 주제로 이야기를 나눴었던 적이 있는데 동시성과 병렬성의 차이가 무엇인가?라는 주제만 생각났지 내용이 기억이 안났다.

결국 질문에는 병렬성을 (DB에서 사용했던 것을 기반으로) 추측하여 동시성이랑 추측해서 이야기 했는데 이 역시도 잘못된 답변이었다.

모르면 모른다고 하자.

동시성과 병렬성의 차이?

간결히 말하자면 동시성과 병렬성의 차이는 병렬성은 진짜로 동시에 진행이 되는것이고 동시성은 동시에 진행되는것처럼 보인다는 것이다.

동시성

동시에 실행되는 것처럼 보이는 것. 이게 무슨 말일까? 여러 개의 스레드를 번갈아 가면서 실행되는 방식이다. 즉 논리적으로 동시에 실행되는 것이다.

병렬성

물리적으로 동시에 실행되는 것이다. 찐으로 동시에 실행된다. 그럴려면 멀티 코어에서 멀티 스레드를 동작시킨다. 데이터 병렬성과 작업 병렬성으로 구분된다. 데이터 병렬성은 전체 데이터를 나누어 작업을 빠르게 처리하는 것이다. 작업 병렬성은 서로 다른 작업을 병렬 처리하는 것이다.

비동기 프로그래밍

비동기 프로그래밍은 프로그램의 실행 흐름을 멈추는 일 없이 바로 다음 작업을 실행할 수 있게 하는 방식이다.

동시성과 병렬성의 차이?

둘 다 비동기 동작을 구현할 수 있지만 동작 원리가 다르다.

동시성은 싱글 코어, 멀티 코어 모두 구현 가능한데, 예를 들어 하나의 커피 머신에서 서로 번갈아 가면서 커피를 뽑는 것이다.

병렬성은 멀티 코어에서만 구현 가능하다. 예를 들어 여러 대의 커피 머신에서 각각 하나의 줄이 있고 그 줄마다 커피를 받아간다.


앞서 스레드와 프로세스에 대한 질문에 이어 동시성과 병렬성에 대한 질문이 나왔다. 연결된 질문이라는 생각이 들었다. 기억해놓자.

results matching ""

    No results matching ""