![]() ![]() ![]() |
제목 | [Gamasutra] 병행성 디버깅 | ||||||
---|---|---|---|---|---|---|---|
분류 | 게임 | 등록일 | 05.11.17 | ||||
출처 | 한국콘텐츠진흥원 | 조회수 | 0
|
||||
병행성 디버깅 Debugging Concurrency 1. 머리말 2000년 7월에 애플(Apple)사는 듀얼 프로세싱을 자사의 파워맥(PowerMac) 제품 라인에 도입하였으며, 대칭형 멀티 프로세싱(SMP)이 공식적으로 주류가 되었습니다. 이로부터 4년도 안 되는 시기에, 인텔(Intel)은 “하이퍼스레딩(Hyperthreading)”이라고 하는 기능을 자사의 IA-32 프로세서 라인에 도입함으로써, 동시성 멀티스레딩(SMT) 역시 주류가 되었습니다. 올 해 말이 지나기 전에, 우리들은 인텔(Intel), AMD 및 마이크로소프트(Microsoft)가 멀티코어(multi-core) 프로세서를 일반인들에게 소개하는 것을 볼 수 있을 것입니다. 멀티스레드 방식의 애플리케이션들은 이제 일상적인 것이 되었으며, 아마 성능의 극대화를 위한 유일한 방안일 것입니다. 불행하게도, 멀티스레드 방식의 애플리케이션에서도 새로운 등급과 유형의 버그(bug)들이 발견되었으며, 이는 심지어 경험이 풍부한 프로그래머들에게도 쉽지 않은 골치거리이기도 합니다. 단순화를 위해, 저는 단일 시스템 내의 스레드(thread)에 국한하여 이야기를 할 것이며, 그 중심 주제 역시 메모리에 대한 자원으로 제한하고자 합니다. 아래에 설명할 조건들은 모두 분산 시스템(distributed system)에서 일어날 수 있는 것으로, 반드시 이에 국한되는 것은 아니나 GPU 및 네트워크 연결과 같은 하드웨어의 모든 부분을 포함할 수도 있다는 사실을 염두에 두시길 바랍니다. 2. 레이스 조건 및 레이스 해저드 경우에 따라, 레이스 해저드(race hazard)라고도 불리는 레이스 조건은 서로 다른 두 개 이상의 스레드(thread)가 동시에 데이터에 접속할 때 발생하는 것으로서, 접속에 대한 시간적 순서화(temporal ordering)를 통제할 수 있는 메커니즘은 없습니다. 어떠한 스레드 (thread)가 공유 파일에 먼저 접속을 하느냐에 따라, 프로그램의 행위(behavior)도 변합니다....(중략) * 자세한 내용은 첨부문서(pdf)를 참고하시기 바랍니다.
|
|||||||
첨부파일 |