멀티 코어(Multi-Core)와 멀티 쓰레드(multi-threa...

멀티 코어(multi-core)와 멀티 쓰레드(multi-thread)는 구분해야 하는 것이 분명하지만 하드웨어의 관점이 아닌 소프트웨어의 관점에서 먼저 바라 보게 되는 프로그래머의 입장에서는 두 개의 의미 차이를 명확하게 구분하는 것이 쉽지만은 않아 보입니다. 이 두 가지에 대한 구분은 멀티 코어를 언급하는 여러 글에 나와 있지만 간단하면서도 명확한 글이 있어 소개합니다.

서광열의 프로그래밍 언어 이야기'Parallelism and Concurrency 1'으로부터 트랙백

Parallelism

헤스켈 프로그램을 성능 향상을 목적으로 여러 프로세서에 돌리는 것을 의미한다. 이 과정은 의미 변화 없이 눈에 보지이 않게(자동으로) 이루어지는 것이 이상적이다.


Concurrency

프 로그램을 I/O를 수행하는 여러 개의 쓰레드를 구현하는 것을 의미한다. Concurrent 헤스켈 또한 병렬 머신에서 실행될 수 있으나, Concurrency의 주 목적은 성능 향상이 아니라 이 방법이 프로그램을 작성하기 가장 쉽고 직접적인 방법이기 때문이다. 쓰레드가 I/O를 수행하기 때문에 프로그램의 의미는 비결정적(non-deterministic)이다.

Concurrency를 설명하는 부분에서 밑줄 친 부분이 두 개의 의미 구분을 명확하게 할 뿐만 아니라 실제로 구현할 때에도 쓰레드를 사용해야 할지에 대한 판단을 하는데에 대한 기준으로 참고하기에도 좋은 것 같습니다.

그런데 사실 서광열님의 글의 논지는 Parallelism과 Concurrency를 우리말로 번역할 때의 어떤 단어를 사용해서 두 개의 의미를 분명히 전달하면서도 명확하게 구분할 수 있을까에 관한 글입니다. 본문에서는 답이 나와 있지 않지만 아래 코멘트나 트랙백에 나와 있는 병렬(Parallelism)과 병행(Concurrency)으로 구분한 것이 의미가 통해 보입니다.

ps. 텍스트 상에서 병렬과 병행 사이의 간극을 분명히 이해한다손 치더라도 병렬이던 병행이던 실제 구현의 문제는 여전히 어려워 보입니다. ^^

by kimsama | 2008/05/10 12:58 | 트랙백 | 덧글(0)

트랙백 주소 : http://kimsama.egloos.com/tb/1753677
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶