thread 동기화와 하이퍼 스레딩의 관계
글쓴이: taiji76 / 작성시간: 화, 2007/07/10 - 9:58오전
안녕하세요.. ^^
얼마전에 아는 사람과 이야기를 나누던 중에 궁금한 것이 있어서요.
예전에 싱글 코어에서 mutex를 이용해서 프로그램을 작성한 것이 있었다고 합니다.
그런데, 이를 하이퍼 쓰레딩을 지원하는 PC에서 구동을 하니 관련된 부분에서
가끔씩 오류가 발생했다고 합니다. 물론 공유 변수는 하나의 프로세스만 접근할 수
있도록 구현했구요.
제가 알고 있기로는 싱글 코어의 경우, 공유 변수를 접근하기 전에 인터럽트를 사용하지
못하게 하면 구현에 문제가 없고, 멀터 코어의 경우 각 코어별로 인터럽트가 적용되기
때문에 다른 방법을 이용해서 구현한다고 알고 있는데요. 하이퍼 쓰레딩의 경우
물리적인 코어는 하나이고, 레지스터 풀(?)만 2개가 있어서 두개인 것 처럼 보이게 하는
것으로 알고 있는데, 이 경우에도 멀티코어에서 생기는 문제가 발생할 수 있나요?
혹시, 발생한다면 어떤경우에 문제가 발생할 수 있나요?
추가적으로 멀티코어에서 돌아가게 하기 위해서는 같은 소스를 컴파일할때 옵션을
멀티코어에서 사용할 수 있도록 주고 다시 컴파일해서 사용하면 되는지 알고 싶습니다.
그럼.. 즐거운 하루 되세요~~
Forums:
댓글 달기