우선 순위 향상

각 스레드에는 동적 우선 순위가 있습니다. 이는 스케줄러가 실행할 스레드를 결정하는 데 사용하는 우선 순위입니다. 처음에는 스레드의 동적 우선 순위가 기본 우선 순위와 동일합니다. 시스템은 동적 우선 순위를 높이고 낮출 수 있으므로 응답성이 뛰어나고 프로세서 시간 동안 스레드가 부족하지 않도록 할 수 있습니다. 시스템은 기본 우선 순위 수준이 16에서 31 사이인 스레드의 우선 순위를 높이지 않습니다. 기본 우선 순위가 0에서 15 사이인 스레드만 동적 우선 순위 향상을 받습니다.

시스템은 다음과 같이 스레드의 동적 우선 순위를 높여 응답성을 향상시킵니다.

  • NORMAL_PRIORITY_CLASS 사용하는 프로세스가 포그라운드로 이동되면 스케줄러는 포그라운드 창과 연결된 프로세스의 우선 순위 클래스를 향상시켜 백그라운드 프로세스의 우선 순위 클래스보다 크거나 같게 합니다. 프로세스가 더 이상 포그라운드에 없는 경우 우선 순위 클래스는 원래 설정으로 돌아갑니다.

  • 창이 타이머 메시지, 마우스 메시지 또는 키보드 입력과 같은 입력을 받으면 스케줄러는 창을 소유하는 스레드의 우선 순위를 높입니다.

  • 차단된 스레드에 대한 대기 조건이 충족되면 스케줄러는 스레드의 우선 순위를 높입니다. 예를 들어 디스크 또는 키보드 I/O와 관련된 대기 작업이 완료되면 스레드는 우선 순위 향상을 받습니다.

    SetProcessPriorityBoost 또는 SetThreadPriorityBoost 함수를 호출하여 우선 순위 상승 기능을 사용하지 않도록 설정할 수 있습니다. 이 기능이 비활성화되었는지 여부를 확인하려면 GetProcessPriorityBoost 또는 GetThreadPriorityBoost 함수를 호출합니다.

스레드의 동적 우선 순위를 높인 후 스케줄러는 스레드가 시간 조각을 완료할 때마다 스레드가 기본 우선 순위로 다시 떨어질 때까지 해당 우선 순위를 한 수준 줄입니다. 스레드의 동적 우선 순위는 기본 우선 순위보다 작지 않습니다.