CS

동시 처리 (Concurrent) vs 병렬 처리 (Parallel)

jamong5 2024. 1. 4. 20:32

공부를 하다보니 Concurrent 시스템 이라는 용어가 등장했다.

검색해보니 Parallel 이라는 용어가 같이 나온다.

 

동시 처리와 병렬 처리? 같은 말 아닌가? 라는 생각이 먼저 들었는데 읽어보니 전혀 다르다. 이 차이를 인지하고 있는게 업무상 대화할 때 매우 중요할 것 같아서 적어놔본다.

 

(대충 그린) 동시 vs 병렬

 

동시는 여러 개의 테스크를 일꾼 여럿이서 각자 한개씩 맡아서 처리하는 방법

병렬은 하나의 테스크를 일꾼 여럿이서 쪼개서 처리하는 방법

 

몇 가지 특징을 생각해볼 수 있다.

하나의 큰 테스크가 동시 시스템에 들어오는 경우 동시 시스템은 싱글 스레드와 같은 시간이 걸릴 것이다. 이런 경우는 병렬 시스템을 구축하는게 적합하다. 딥러닝에서도 이러한 이유 때문에 여러 gpu들로 하나의 큰 연산을 병렬 처리한다.

작은 테스크가 동시다발적으로 발생하는 경우 동시 처리를 사용한다. 클라이언트 요청이라던가, JVM의 GC 동작이 동시 시스템에 적합한 테스크이다.

 

동시처리보단 병렬처리의 난이도가 훨씬 더 높아보인다. 하나의 테스크를 쪼개는 경우 분리할 수 있는 최소 단위도 고려해야할것이고, 분리해서 처리한걸 다시 합치는 과정도 필요할 것이다.