No-Wake 타이머
Windows 8.1 시작하여 드라이버는 절전 모드 해제 타이머를 사용하여 프로세서가 저전력 상태에서 불필요하게 절전 모드 해제되지 않도록 방지할 수 있습니다. 프로세서를 저전력 상태로 유지하면 절전 모드 해제 타이머는 전력 소비를 줄이고 태블릿 또는 기타 모바일 컴퓨터가 배터리 충전 시 실행되는 시간을 연장합니다.
타이머는 프로세서가 활성 실행 상태인 경우에만 만료할 수 있습니다. 프로세서가 저전력 상태이고 타이머가 즉시 만료되어야 하는 경우 타이머는 프로세서를 절전 모드에서 해제해야 합니다. 그러나 절전 모드 해제 타이머가 만료 시간에 도달하고 프로세서가 저전력 상태인 경우 이 타이머는 프로세서가 타이머 이외의 이유로 절전 모드 해제될 때까지 만료되기를 기다립니다. 옵션으로 드라이버는 절전 모드 해제 타이머에 대한 최대 지연 허용 시간을 지정하여 프로세서가 다른 이유로 인해 절전 모드 해제되지 않는 경우 타이머가 프로세서를 절전 모드에서 해제한 후 최대 지연 허용 시간 내에서 해제할 수 있습니다.
드라이버는 절전 모드 해제 타이머를 사용하여 프로세서가 활성 상태일 때만 수행해야 하는 비임계 작업을 시작할 수 있습니다. 예를 들어 드라이버는 절전 모드 해제 타이머를 사용하여 누적된 상태 정보를 메모리 버퍼에서 파일로 주기적으로 플러시할 수 있습니다. 이 상태 정보는 프로세서가 활성 상태일 때만 드라이버가 수행하는 처리 작업을 설명합니다. 프로세서가 저전력 상태인 경우 상태 정보가 생성되지 않으며 프로세서를 절전 모드에서 해제할 필요가 없습니다.
절전 모드 해제 타이머를 만들기 위해 WDM 드라이버는 ExAllocateTimer 루틴을 호출합니다 . 이 호출에서 드라이버는 Attributes 매개 변수에서 EX_TIMER_NO_WAKE 플래그 비트를 설정합니다.
특정 기한에 만료되도록 절전 모드 해제 타이머를 설정하기 위해 드라이버는 ExSetTimer 루틴을 호출합니다. 이 호출에서 드라이버는 타이머가 프로세서를 절전 모드에서 해제하기 전에 만료 시간에 도달한 후 절전 모드 해제 타이머가 대기해야 하는 기간을 지정할 수 있습니다. 드라이버는 드라이버가 ExSetTimer 루틴에 입력 매개 변수로 전달하는 EXT_SET_PARAMETERS 구조의 NoWakeTolerance 멤버에 이 참을 수 있는 지연 시간을 씁니다. 드라이버가 NoWakeTolerance 멤버를 EX_TIMER_UNLIMITED_TOLERANCE 특수 값으로 설정하는 경우 타이머는 프로세서를 절전 모드에서 해제하지 않으므로 프로세서가 다른 이유로 절전 모드에서 해제될 때까지 만료될 수 없습니다.
KMDF(Kernel-Mode Driver Framework) 드라이버 또는 UMDF(User-Mode Driver Framework) 드라이버는 WdfTimerCreate 메서드를 호출하여 절전 모드 해제 타이머를 만들 수 있습니다. 이 호출에서 드라이버는 매개 변수로 WDF_TIMER_CONFIG 구조체에 대한 포인터를 전달합니다. 프로세서를 절전 모드 해제하지 않는 절전 모드 해제 타이머를 만들기 위해 드라이버는 이 구조체의 TolerableDelay 멤버를 TolerableDelayUnlimited 상수로 설정합니다. 이 상수는 Windows 8.1 및 KMDF 버전 1.13 또는 UMDF 2.0부터 지원됩니다.
병합 가능한 타이머와 비교
KeSetCoalescableTimer 루틴은 Windows 7에서 도입되었습니다. 이 루틴을 사용하면 드라이버가 타이머의 만료 시간에 허용할 허용 오차를 지정할 수 있습니다. 종종 운영 체제는 이 정보를 사용하여 두 개 이상의 타이머 인터럽트 를 단일 인터럽트로 병합할 수 있습니다. 여러 타이머의 만료 시간이 허용 범위 창이 겹칠 정도로 서로 가까우면 겹치는 영역의 단일 타이머 인터럽트는 이러한 모든 타이머의 타이밍 요구 사항을 충족할 수 있습니다.
타이머 병합의 주요 이점은 프로세서가 타이머 만료 사이에 저전력 상태를 유지할 수 있는 시간을 연장한다는 것입니다. 따라서 드라이버는 비슷한 용도로 타이머 병합 및 절전 모드 해제 없음 타이머를 사용합니다.
그러나 병합 가능한 타이머는 절식 없음 타이머와 다르게 작동합니다. 특히 절전 모드 해제 타이머에 대해 지정된 허용 지연은 프로세서가 저전력 상태인 경우에만 적용되는 반면, 병합 가능 타이머의 만료에 지정된 허용 오차는 프로세서가 저전력 상태인지 여부에 관계없이 적용됩니다. 병합 가능한 타이머의 경우 드라이버는 만료 시간에 허용 오차 양을 늘려 타이머가 프로세서를 절전 모드에서 해제할 가능성을 줄일 수 있지만 허용 오차를 늘리면 프로세서가 활성 상태일 때 타이머의 정확도가 감소하는 부작용이 있습니다. 반대로 절전 모드 해제 타이머에 대해 지정된 허용되는 지연은 프로세서가 활성 상태일 때 타이머의 정확도에 영향을 주지 않습니다. 많은 드라이버의 경우 절전 모드 해제 타이머가 전력 소비를 줄이는 더 좋은 방법이 될 수 있습니다.