멀티코어와 동기화

뮤텍스(잠들어서 기다리는 락)와 스핀락을 비교한 설명으로 올바른 것은?

  1. A뮤텍스는 기다리는 동안 CPU를 양보하므로 긴 대기에 적합하지만, 잠들고 깨어나는 데 OS의 부담이 든다
  2. B뮤텍스는 기다리는 동안에도 CPU를 계속 사용하므로 짧은 대기에만 쓸 수 있다
  3. C뮤텍스와 스핀락은 같은 것이며 이름만 다르다
정답과 해설 보기

정답: A. 뮤텍스는 기다리는 동안 CPU를 양보하므로 긴 대기에 적합하지만, 잠들고 깨어나는 데 OS의 부담이 든다

뮤텍스는 락을 잡지 못하면 스레드를 대기 상태로 만들고 CPU를 다른 스레드에 양보하며, 락이 해제되면 OS가 깨웁니다. 기다리는 동안 CPU를 낭비하지 않으므로 긴 대기에 적합하지만, 잠들고 깨어나는 처리와 컨텍스트 스위치에 수 마이크로초 정도가 걸립니다. 실제 라이브러리의 뮤텍스는 잠시 스핀한 뒤 잠드는 등, 양쪽의 장점을 결합하고 있습니다.

  • A. 맞습니다. 대기 시간의 길이에 따라 구분하여 사용합니다.
  • B. 그것은 스핀락의 특징입니다.
  • C. 기다리는 방식이 다릅니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 데드락(deadlock)의 예로 올바른 것은?
  2. 여러 락을 사용하는 프로그램에서 데드락을 방지하는 가장 일반적인 방법은?
  3. 메모리 일관성 모델(memory consistency model)이 규정하는 것은?
  4. 순차 일관성(sequential consistency)에 대한 설명으로 올바른 것은?
  5. 위의 두 스레드를 서로 다른 코어에서 동시에 실행한다(컴파일러에 의한 재배치는 없다고 가정). 순차 일관성에서는 일어나지 않지만 x86 등의 실제 CPU에서는 일어날 수 있는 결과는?

이 분야의 비교