본문 바로가기

Computer science (이동 완료)/병렬 컴퓨팅

동시성,병행성 (Concurrency), 병렬성 (Parallelism)

Concurrency는 프로그램의 성질이고 parallel execution은 기계의 성질이다.

Concurrenty is a property of the program and prallel execution is a property of the machine.

 

 

먼저 concurrency부터 이야기하면, 어떤 프로그램이나 알고리즘이 순서에 상관없이 동시에 수행될 수 있다면 concurrent하다고 말합니다.  예를 들어, 1부터 100까지 숫자를 더하는 과정을 생각해보면 숫자 100개를 여러 부분 집합으로 나눈 뒤 동시에 부분합을 구합니다. 그리고 이 부분합을 다시 더하면 원래 얻고자 하는 값을 얻을 수 있습니다. 이 때 이 알고리즘은 concurrent하다라고 말합니다.

 

그런데 이 알고리즘이 정말 물리적으로 병렬로 돌아갈지 아닐지는 이 알고리즘이 어떤 하드웨어 위에서 돌아갈지 알아야만 확답할 수 있습니다. 방금 이야기한 알고리즘이 멀티 프로세서 머신에서 돌아가야 병렬 실행된다라고 말할 수 있습니다. Parallel execution은 따라서 프로그램의 성질보다는 하드웨어의 성질입니다.

 

Concurrent한 프로그램은 싱글코어 머신에서도 분명히 돌아갑니다. 뮤텍스, 데드락은 싱글코어에서도 얼마든지 그 의미를 갖습니다. 멀티스레드 프로그램이 비록 물리적인 제약으로 싱글코어에서 시분할 형태로 돌아가지만 겉으로는 concurrent하게 작동한다고 속일 수 있습니다. 반대로 아무리 멀티스레드로 작성된 프로그램이라 하더라도 멀티코어가 아니라면 병렬로 작동한다고 말하지 못합니다.

 

OpenMP, MPI, CUDA 같은 프로그래밍 방법론은 병행 프로그래밍 보다는 병렬 프로그래밍이 옳은 표현합니다. 언급한 세 방법론 모두 물리적으로 제공되는 다양한 병렬 하드웨어를 활용하기 때문입니다.

 

멀티 스레드 프로그램에서 벌어지는 각종 버그를 concurrency bug라고 부르는데, 굳이 하드웨어가 반드시 병렬성을 지원하지 않더라도 논리적으로 발생하니까 concurrency라는 말이 옳습니다.

 

보통 프로그램에서 병렬성을 찾는다고 하지 병행성을 찾는다고는 말하지 않습니다. 약간 모호하기는 하나 결국 물리적으로 병렬 실행이 가능한 코드를 찾는 것이니 병렬성이 더 합리적으로 보입니다. 어떤 함수에 락을 무식하게 크게 걸면 병행성(concurrency)가 나빠진다고 말합니다. 병렬성이 나빠진다고는 말하지 않습니다.

 

 

출처 : 

https://jhkimmm.tistory.com/14

 

[OS] 쓰레드란? - 쓰레드와 Parallelism/Concurrency

쓰레드란? 프로세스는 실행 중인 프로그램(text segment)이며 작업의 단위이고, 쓰레드는 프로세스 내부에 있는 일련의 Execution이며 하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있습니다. 그

jhkimmm.tistory.com

 

https://12bme.tistory.com/184

 

[프로그래밍] Concurrency, Parallelism 차이

Concurrency(병행성) 그리고 Parallelism(병렬성) 포스팅 원본출처는 http://egloos.zum.com/minjang/v/2517211 입니다. Concurrency는 프로그램의 성질이고 parallel execution은 기계의 성질이다.Concurrenty is a property of the p

12bme.tistory.com

https://medium.com/@su_bak/%EB%8F%99%EC%8B%9C%EC%84%B1-concurrency-%EA%B3%BC-%EB%B3%91%EB%A0%AC%EC%84%B1-parallelism-%EC%9D%98-%EC%B0%A8%EC%9D%B4-44e6fda0a0cd

 

동시성(Concurrency)과 병렬성(Parallelism)의 차이

프로그래밍에선 어떤 작업(task)을 ‘동시에’ 처리한다고 했을 때 concurrent 라는 단어와 parallel 이라는 단어를 사용하게 되는데요.

medium.com