병렬 처리는 동시성을 의미하지만 다른 방법은 아닙니다.


15

나는 종종 병렬성과 동시성이 다르다는 것을 읽습니다. 답변자 / 댓글 작성자는 완전히 다른 두 가지라는 글을 쓰는 경우가 많습니다. 그러나 내 견해로는 관련이 있지만 그것에 대해 약간의 설명을하고 싶습니다.

예를 들어 멀티 코어 CPU를 사용하고 자체 스레드에서 실행 되는 x 작은 계산 (fork / join 사용) 으로 계산을 나눌 수 있다면 병렬 계산을 수행하는 프로그램이 있습니다 (왜냐하면) 아마도 어떤 시점에서 여러 스레드가 여러 코어에서 실행하는 것)하는 동시 옳다?

예를 들어 Java를 사용하고 UI 이벤트를 처리하고 Event Dispatch Thread에서 다시 페인트하고 내가 만든 유일한 스레드를 실행하는 경우 동시 프로그램 (EDT + GC 스레드 + 내 주요 스레드)이 있습니다. 등)이지만 평행하지는 않습니다.

이 권리를 얻었는지 ( "단일하지만 멀티 코어"시스템에서) 병렬 처리가 항상 동시성을 의미하는지 알고 싶습니다.

또한 멀티 스레드 CPU에서 멀티 스레드 프로그램이 실행되고 있지만 다른 스레드가 "병렬"을 사용하는 것으로 간주되는 완전히 다른 계산을 수행하고 있습니까?


답변:


13

Wikipedia에 따르면 :

병렬 컴퓨팅은 많은 계산이 동시에 수행되는 계산의 한 형태로, 큰 문제는 종종 작은 문제로 나눌 수 있으며 그 다음 동시에 ( "병렬로") 해결되는 원리에 따라 작동합니다.

즉, 병렬 처리는 항상 동시성을 의미합니다.

또한 멀티 스레드 CPU에서 멀티 스레드 프로그램이 실행되고 있지만 다른 스레드가 "병렬"을 사용하는 것으로 간주되는 완전히 다른 계산을 수행하고 있습니까?

병렬 처리의 본질은 큰 문제를 작은 문제로 나누어 작은 조각을 동시에 해결할 수 있다는 것입니다. 조각은 상호 독립적이지만 (적어도 어느 정도), 여전히 더 큰 문제의 일부이며, 현재 병렬로 해결되고 있습니다.

동시성의 본질은 여러 스레드 (또는 프로세스 또는 컴퓨터)가 동시에 어떤 방식 으로든 상호 작용을하는 것입니다 (필요하지는 않지만). Wikipedia 다시 :

동시성은 여러 계산이 동시에 실행되고 잠재적으로 서로 상호 작용하는 시스템의 속성입니다.


4
좋은 포스트. 병렬 처리는 동시성의 하위 집합입니다.

3
죄송하지만이 답변은 잘못되었습니다. 동시성 (예 : 비트 수준 병렬 처리)없이 병렬 처리를 수행 할 수 있으며 실제로 두 가지 개념이 다릅니다. 동시성은 독립적 인 실행 단위를 구성하는 반면 병렬은 잠재적으로 연관된 계산을 동시에 실행하는 것에 관한 것입니다.
Kai Sellgren

@ KaiSellgren : 귀하의 진술을 뒷받침하는 출처를 인용하십시오.
Joonas Pulakka

첫 번째 wikiquote는 간단하게 잘못되었습니다. 운 좋게도 그것은 얼마 전에 수정되었으며 이제 병렬 처리가 동시성에 의존하지 않는다고 올바르게 설명합니다.
Kai Sellgren

실제로, 그것은 위키 항목이 현재 말하는 것입니다 (비트 레벨 병렬 처리와 같은 동시성없이 병렬 처리가 가능함 ). 그러나 나는 그 시점을 전혀 얻지 못한다. 비트 레벨 병렬 처리는 상상할 수있는 가장 동시적인 작업이 아닌가? 적은 명령으로 더 많은 작업을 수행 한 후 동일한 명령 내에서 수행되는 작업이 아닌가?
Joonas Pulakka

3

코드는 동시에 가능하지만 병렬은 아닙니다.

단일 코어 머신에서 여러 스레드가 실행되는 것을 상상해보십시오. 이 단일 코어 시스템은 한 번에 하나의 스레드 만 처리하므로 작업의 병렬성이 없습니다. 그러나 각 스레드마다 OS가 여러 스레드를 처리하는 방식 덕분에 각 스레드는 다른 모든 스레드가 동시에 실행되고 있다고 가정해야합니다.


0

병렬 처리는 단순히 많은 작업을 동시에 수행하는 것을 의미합니다. 반면에 동시성은 많은 프로세스간에 끊임없이 전환하여 커널이 많은 작업을 수행 할 수있는 능력입니다.

병렬 처리를 달성하려면 시스템에 많은 코어가 있어야 병렬 처리를 효율적으로 수행 할 수 있습니다. 그리고 단일 코어 시스템에서 병렬 처리를 시도하면 성능이 많이 저하되고 많은 오버 헤드가 발생합니다.

예를 들어, 이전 시스템에는 코어가 하나만 있었으며 CPU 스케줄러는 각 프로세스가 진행되도록 프로세스간에 지속적으로 전환하여 병렬 처리에 대한 환상을 제공했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.