멀티코어와 동기화

임계 구역(critical section)에 대한 설명으로 올바른 것은?

  1. A공유 데이터를 조작하므로 동시에 하나의 스레드만 실행해야 하는 프로그램의 부분
  2. B프로그램 중에서 실행 시간이 가장 긴 부분
  3. C오류가 발생했을 때만 실행되는 부분
정답과 해설 보기

정답: A. 공유 데이터를 조작하므로 동시에 하나의 스레드만 실행해야 하는 프로그램의 부분

공유 변수를 읽고 갱신하는 부분을 여러 스레드가 동시에 실행하면 데이터 레이스가 일어납니다. 이처럼 동시에 하나의 스레드만 실행해야 하는 부분을 임계 구역이라 부르며, 들어가기 전에 락을 잡고 나올 때 해제하여 보호합니다. 임계 구역이 길수록 다른 스레드가 기다리는 시간도 길어지므로, 가능한 한 짧게 하는 것이 기본입니다.

  • A. 맞습니다. 락 등으로 보호합니다.
  • B. 실행 시간의 길이로 정해지는 것이 아닙니다.
  • C. 오류 처리를 말하는 것이 아닙니다.
이 분야 연습하기 분야로 돌아가기

멀티코어와 동기화의 다른 문제

  1. 병렬 프로그램에서 사용되는 배리어 동기화(barrier synchronization)에 대한 설명으로 올바른 것은?
  2. 64개의 코어가 하나의 공유 카운터를 아토믹 명령으로 동시에 계속 갱신하면, 코어를 늘려도 빨라지지 않는다. 주된 이유는?
  3. NUMA(Non-Uniform Memory Access, 불균일 메모리 접근) 시스템에 대한 설명으로 올바른 것은?
  4. Linux의 NUMA 시스템에서 자주 사용되는 퍼스트 터치(first-touch) 정책(처음 페이지에 쓴 스레드가 동작 중인 노드의 메모리에 그 페이지를 배치)에서 주의해야 할 점으로 올바른 것은?
  5. 병렬 프로그램에서 코어 수를 늘려도 성능이 기대만큼 늘지 않는 원인으로 해당하지 않는 것은?

이 분야의 비교