• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

동시성과 병렬성의 예시

23.09.22 03:36 작성 23.09.22 03:40 수정 조회수 212

0

동시성이 하나의 코어안에 여러 일을 동시에 가능(번갈아가면서)

병렬성이 여러 주체가 하나의 일을 동시에 진행하는 것이 정의인데

 

만약에

주체가 여러 명(멀티코어)이고 똑같이 여러 일을 동시에 한다면 ex)동일하게 인프런 시청 그리고 program 다운로드 등(멀티 쓰레드) 하는 것은 가능한가요?


동시성 범주안에 병렬성이 들어갔다고 말씀하셔서, 예시가 맞는 지 판단해주시면 감사합니다!

답변 1

답변을 작성해보세요.

0

물리적으로 1개의 CPU는 내부적으로 여러 Core를 갖는 것이 보통입니다. 그러므로 한 Core에서 열어 일을 동시에 번갈아 수행하는 경우와 여러 Core가 각각 다른 일을 수행하는 경우 모두를 동시성으로 설명할 수 있겠습니다.

만일 여러 Core가 모두 완벽하게 동일한 일을 처리한다면 일종의 병렬처리로 볼 수 있겠습니다. 그러나 인프런 시청 + 프로그램 다운로드 같은 덩치가 큰 작업은 인간 기준에서는 같은 일처럼 보이지만 CPU수준에서 판단하면 결코 같지가 않습니다. 어떤 경우는 다운로드 중 오류가 발생해 예외 상황을 처리할 수도 있는 것이기 때문입니다. 즉, 하는 일의 목적은 같아도 실제 수행하는 일은 다를 수 있습니다.

이런 경우를 병렬성 범주에 넣는 것이 타당한 것인지에 대해서는 고민하지 말기를 권합니다. 동시성이나 병렬성 같은 말들은 어떻게 생각하면 언어유희나 철학적 담론에 가까울 수 있기 때문입니다.

사실 핵심은 수행하는 일 사이의 의존성과 관련이 깊습니다. 동시성은 일 자체가 동시에 일어나지만 서로 영향을 주거나 받을 수 있는 가능성을 포함하는 개념이라 Race condition 같은 문제를 고려 합니다. 그러나 병렬 성은 대부분 상호 의존성이 없거나 현저히 낮은 일을 처리하는 방식이라 하겠습니다.

제가 강의에서 '인형 눈 붙이기'가 전형적인 병렬처리로 예시한 이유는
1. 눈을 붙여야 할 인형의 개수(일의 양)와
2. 노동자 숫자(처리기 개수)
3. 상호의존성 (각자 자기 맡은 분량만 끝내면 되는 구조. 의존성 없음)
때문입니다.

보통 영상처리에서 병렬처리를 많이 사용해왔습니다. 영상을 이루는 이미지는 독립적인 픽셀들이 모인 집합체이며 각 픽셀은 상호 독립적이기 때문입니다. AI분야에서 병렬처리가 중요한 이유도 비슷합니다.

설명이 길어졌습니다만...예시로 든 인프런 시청 + 다운로드는 프로세서 개수의 문제를 떠나 상호연관성이 높은 작업이라 할 수 있기 때문에 동시성을 설명할 수는 있겠으나 병렬성에 대한 표현으로 적절한 예시라 하기는 어렵겠습니다. 참고하시기 바랍니다. :)

감사합니다. 엮어서 생각할 예시에 부적절했군요.

단순한 작업 처리 정도(양과 개수, 그리고 상호 연관성(의존성)이 없는 독립적인 업무)에는 병렬성을 이용이 가능하고, 제 예시는 복잡한 처리가 필요하기에 동시성으로는 설명이 되나 ( 코어가 동시에 번갈아 가면서 일을 수행) 병렬로는 처리 안된다.

 

이해했습니다. 감사합니다!