• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

SpinLock과 Mutex 클래스에 대해

21.12.26 17:49 작성 조회수 190

0

SpinLock은 계속 CPU를 들고 반복한다는걸 알고 있는데, 정확히는 자신에게 주어진 Time slice(시간)을 모두 사용했다면 결국 스핀락 방식도 CPU를 반환하고 나중에 다시 자신의 차례가 됐을때 다시 자신에게 주어진 최대 시간을 모두 사용한뒤 반복하는 과정을 반복한다고 이해하는게 맞나요?

이전에는 정확하게 알지못해서 스핀락 구조일때 정말로 해당 쓰레드는 절대로 CPU(코어)를 돌려주지 않고 영원히 독점하는줄 알았는데 그게 아니라, 운영체제 정책에 따라 자신에게 할당된 최대 시간(time slice) 만큼만 최대로 독점한다는 의미로 이해하는게 맞는지 궁금합니다.

그리고 강의 마지막에서 나온 Mutex 클래스의 동기화 방식은 기존에 학습했던 3가지의 경우(스핀락, 랜덤메타(양보), 이벤트)에서 이벤트와 동일하다고 이해해도 괜찮을까요? 아니면 위의 3가지 경우와 완전히 다른 4번쨰 방식이라고 아는게 좋을까요?

답변 1

답변을 작성해보세요.

0

OS 코드도 당연히 CPU에 의해 실행됩니다.
따라서 스핀락을 돈다고 영영 OS로의 반환이 일어나지 않는다면,
스핀락을 도는 프로그램을 다수 실행하면 OS가 영영 실행되지 않고 뻗다는 얘긴데
이건 말이 되는 상황이 아닙니다.
그러니 운영체제 정책에 따라 얼마든 회수가 가능한게 맞고
유저모드에서 돌아가는 프로그램은 어차피 OS의 손바닥 위에서 노는거라 보시면 됩니다.