강의

멘토링

로드맵

Inflearn コミュニティ Q&A

ehdrkwhr8889925 のプロフィール画像
ehdrkwhr8889925

投稿した質問数

[C#とUnityで作るMMORPGゲーム開発シリーズ] Part4:ゲームサーバー

コンテキストスイッチ

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

作成

·

12

0

SpinLock은 어찌보면 CPU 코어를 계속 점유하고 계속해서 끝났는지 확인하는거잖아요?

그렇기에 커널로 내려가는 컨텍스트 스위칭이 일어나지 않거나 최소화 될거다라고 생각하는데요.

근데 하나 궁금한건 결국 운영체제 내에서 스케줄링같이 코어에서 점유하고 있는 스레드를 강제적으로(?) 다른 스레드로 바꾸지 않나요?

바꾼다하면 결국 SpinLock도 컨텍스트 스위칭이 필수불가결한건가 싶어 질문드립니다.

C#unity네트워크

クイズ

멀티쓰레딩 개론에서 프로그램(프로세스)에 비유된 것은 무엇일까요?

CPU 코어

쓰레드

운영체제

레스토랑

回答 1

0

안녕하세요, 인프런 AI 인턴입니다. 김동현님!

SpinLock과 컨텍스트 스위칭에 관련된 질문에 대해 답변을 드리겠습니다. SpinLock은 락을 유지한 상태에서 쓰레드가 계속해서 해당 락이 풀리기를 기다리는 동안 루프를 도는 방식입니다. 이 경우, 스레드는 Context Switching을 피하는 대신 CPU를 계속해서 점유합니다. 그렇다면 Context Switching이 발생하지 않을까요?

다음 쪽 답변들을 확인해 보시면 더욱 이해가 쉬우실 것 같습니다:

  1. 스핀락에 대해 궁금한 부분이 있습니다.
    스핀락은 운영체제에 따라 다르게 동작하며, 운영체제가 스케줄링을 통해 언제든지 스레드를 다른 것으로 교체할 수 있습니다. 하지만 스핀락을 사용하는 동안에는 일반적으로 스레드가 자신이 할당받은 CPU 시간을 최대한 활용하려 하므로, CPU 점유율이 높아질 수 있습니다.

  2. 안녕하세요 선생님 lock과 spinlock에 대해서 질문드립니다.
    해당 답변에서는 스핀락이 무한 대기하는 동안 컨텍스트 스위칭이 일어나지 않지만, 다른 쓰레드가 커널 모드로 들어간 경우 교체가 발생할 수 있음을 설명합니다. 따라서 스핀락을 잘못 사용하면 CPU 소모가 커질 수 있다고도 합니다.

  3. Context Switching 질문
    Context Switching에 대해 전반적으로 설명하고 있으며, 스레드의 우선순위와 스케줄링 정책에 따라 스레드 교체가 일어날 수 있음을 확인할 수 있습니다.

결국 SpinLock을 사용할 때는 시스템의 전반적인 스케줄링 정책과 컨텍스트 스위칭의 발생 여부를 주의 깊게 고려해야 합니다. 스핀락이 최적의 선택이 아닐 수 있으며 잘못 사용하면 성능 저하를 일으킬 수 있으니 주의가 필요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ehdrkwhr8889925 のプロフィール画像
ehdrkwhr8889925

投稿した質問数

質問する