다음을 통해 공유


컨텍스트 전환

스케줄러는 각 우선 순위 수준에 대한 실행 스레드 큐를 유지 관리합니다. 이를 준비 스레드라고 합니다. 프로세서를 사용할 수 있게 되면 시스템은 컨텍스트 전환을 수행합니다. 컨텍스트 전환의 단계는 다음과 같습니다.

  1. 방금 실행을 완료한 스레드의 컨텍스트를 저장합니다.
  2. 방금 실행을 완료한 스레드를 우선 순위에 따라 큐 끝에 배치합니다.
  3. 준비 스레드가 포함된 가장 높은 우선 순위 큐를 찾습니다.
  4. 큐의 헤드에서 스레드를 제거하고 컨텍스트를 로드한 다음 실행합니다.

다음 스레드 클래스는 준비되지 않은 스레드입니다.

  • CREATE_SUSPENDED 플래그를 사용하여 만든 스레드
  • SuspendThread 또는 SwitchToThread 함수를 사용하여 실행하는 동안 중단된 스레드
  • 동기화 개체 또는 입력을 기다리는 스레드입니다.

일시 중단되거나 차단된 스레드를 실행할 준비가 될 때까지 스케줄러는 우선 순위에 관계없이 프로세서 시간을 할당하지 않습니다.

컨텍스트 전환의 가장 일반적인 이유는 다음과 같습니다.

  • 시간 조각이 경과했습니다.
  • 우선 순위가 높은 스레드를 실행할 준비가 되었습니다.
  • 실행 중인 스레드는 기다려야 합니다.

실행 중인 스레드가 대기해야 하는 경우 나머지 시간 조각을 포기합니다.