Device-Level 열 관리
Windows 8 부터 Windows는 커널 모드 디바이스 드라이버에 대한 디바이스 수준 열 관리를 지원합니다. Windows 열 관리에는 다음과 같은 목표가 있습니다.
하드웨어 플랫폼의 디바이스가 과열되지 않도록 하여 잘못 또는 안정적으로 작동할 수 있습니다.
컴퓨터 케이스에서 사용자가 액세스할 수 있는 표면을 너무 뜨거워서 편안하게 만지거나 누르지 않도록 합니다.
전원 관리와 마찬가지로 열 관리는 글로벌 열 조건의 컨텍스트에서 디바이스-로컬 열 제약 조건을 조정하여 플랫폼 전체에서 구현되어야 합니다. 운영 체제는 글로벌 조정을 제공하여 사용자가 수행하는 작업에 대한 간섭을 최소화하는 방식으로 여러 디바이스에 냉각 요구 사항을 분산할 수 있습니다. 열 요구 사항은 전원 관리 및 사용자 작업에 대한 응답성과 같은 다른 시스템 요구 사항과 지능적으로 균형을 맞출 수 있습니다.
반면, 플랫폼의 다른 디바이스와 격리되어 로컬로 디바이스의 열 수준을 관리하려는 디바이스 드라이버는 비효율적인 전력 사용량과 응답하지 않는 UI(사용자 인터페이스)를 초래하는 잘못된 결정을 내릴 가능성이 높습니다.
전역 열 관리에 참여하기 위해 디바이스 드라이버는 GUID_THERMAL_COOLING_INTERFACE 드라이버 인터페이스를 구현합니다. 시스템 시작 중에 시스템 제공 드라이버 Acpi.sys 시스템의 디바이스 드라이버를 쿼리하여 이 인터페이스를 지원하는 드라이버를 확인합니다. 드라이버는 드라이버의 디바이스에 대한 AddDevice 루틴이 호출된 후 언제든지 이 인터페이스에 대한 IRP_MN_QUERY_INTERFACE 요청을 받을 수 있습니다. 이 요청에 대한 응답으로 열 관리 기능이 있는 디바이스의 드라이버는 THERMAL_COOLING_INTERFACE 구조에 대한 포인터를 제공할 수 있습니다. 이 구조체에는 드라이버에서 구현하는 콜백 루틴 집합에 대한 포인터가 포함되어 있습니다. 디바이스의 열 수준을 관리하기 위해 운영 체제는 이러한 루틴을 직접 호출합니다.
이 인터페이스의 두 가지 주요 루틴은 ActiveCooling 및 PassiveCooling입니다. 드라이버의 ActiveCooling 루틴은 디바이스에서 활성 냉각을 사용하거나 해제합니다. 예를 들어 이 루틴은 팬을 켜고 끌 수 있습니다. 드라이버의 PassiveCooling 루틴은 허용되는 열 수준을 유지하기 위해 디바이스의 성능을 제한해야 하는 정도를 제어합니다. 예를 들어 이 루틴은 과열을 방지하기 위해 디바이스를 반 속도로 실행하도록 호출될 수 있습니다.
기본적으로 ActiveCooling 루틴에 대한 첫 번째 호출 전에 활성 냉각이 해제됩니다(예: 팬이 꺼짐). PassiveCooling 루틴을 처음 호출하기 전에 드라이버는 냉각 제한 없이 전체 성능에서 실행되도록 디바이스를 구성합니다.
드라이버는 디바이스 하드웨어의 기능에 따라 이러한 루틴 중 하나 또는 둘 다를 구현할 수 있습니다. 자세한 내용은 수동 및 활성 냉각 모드를 참조하세요.