인터럽트 선호도

인터럽트 선호도 는 인터럽트를 처리할 수 있는 프로세서 집합입니다. 각 디바이스에는 선호도 정책이 있습니다. 운영 체제는 선호도 정책을 사용하여 해당 디바이스의 인터럽트의 선호도를 계산합니다. 선호도 정책은 디바이스의 INF 파일 또는 레지스트리 설정에서 지정할 수 있습니다.

Windows Vista부터 관리자는 레지스트리를 사용하여 인터럽트 선호도 정책을 설정할 수 있습니다.

관리자는 \인터럽트 관리\선호도 정책 레지스트리 키 아래에 다음 항목을 설정할 수 있습니다.

  • DevicePolicy 는 선호도 정책을 지정하는 REG_DWORD 값입니다. 가능한 값과 그 의미는 IRQ_DEVICE_POLICY 참조하세요. 해당하는 경우 기본 정책을 사용하는 것이 좋습니다.

  • AssignmentSetOverrideKAFFINITY 마스크를 지정하는 REG_BINARY, REG_DWORD 또는 REG_QWORD 값일 수 있습니다. REG_BINARY 경우 크기는 플랫폼의 KAFFINITY 크기보다 작거나 같아야 하며 입력 바이트 순서는 작은 endian입니다. DevicePolicy가 0x04 경우(IrqPolicySpecifiedProcessors) 이 마스크는 디바이스의 인터럽트를 할당할 프로세서 집합을 지정합니다.

드라이버의 INF 파일은 레지스트리 값에 대한 기본 설정을 제공할 수 있습니다. 다음은 INF 파일에서 DevicePolicy 값을 IrqPolicyOneCloseProcessor 로 설정하는 방법의 예입니다. 자세한 내용은 INF AddReg 지시문을 참조하세요.

[install-section-name.HW]
AddReg=add-registry-section 

[add-registry-section]
HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 2

시스템은 IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP 를 드라이버에 보낼 때 디바이스의 드라이버에서 레지스트리 설정을 사용할 수 있도록 합니다. 운영 체제는 Type 멤버가 CmResourceTypeInterrupt로 설정된 각 인터럽트에 대한 IO_RESOURCE_DESCRIPTOR 구조를 제공합니다. 메시지 신호 인터럽트인 경우 Flags 멤버의 CM_RESOURCE_INTERRUPT_MESSAGE 비트가 설정됩니다. 그렇지 않으면 분명합니다. u.Interrupt 멤버는 인터럽트 설정을 설명합니다.

다음 표에서는 레지스트리 설정과 u.Interrupt 멤버 간의 대응을 제공합니다.

레지스트리 값 사용자 구성원.인터럽트

DevicePolicy

AffinityPolicy

AssignmentSetOverride

TargetedProcessors

KAFFINITY 정보

KAFFINITY 형식은 그룹의 논리 프로세서 집합을 나타내는 선호도 마스크입니다.

typedef ULONG_PTR  KAFFINITY;

KAFFINITY 형식은 32비트 버전의 Windows에서 32비트이며 64비트 버전의 Windows에서는 64비트입니다.

그룹에 n 개의 논리 프로세서가 포함된 경우 프로세서 번호는 0에서 n-1로 지정됩니다. 그룹의 프로세서 번호 i는 선호도 마스크의 비트 i로 표시됩니다. 여기서 i는 0에서 n-1 범위로 표시됩니다. 논리 프로세서에 해당하지 않는 선호도 마스크 비트는 항상 0입니다.

예를 들어 KAFFINITY 값이 그룹의 활성 프로세서를 식별하는 경우 프로세서의 마스크 비트는 프로세서가 활성 상태인 경우 1이고 프로세서가 활성화되지 않은 경우 0입니다.

선호도 마스크의 비트 수는 그룹의 최대 논리 프로세서 수를 결정합니다. 64비트 버전의 Windows의 경우 그룹당 최대 프로세서 수는 64개입니다. 32비트 버전의 Windows의 경우 그룹당 최대 프로세서 수는 32개입니다. KeQueryMaximumProcessorCountEx 루틴을 호출하여 그룹당 최대 프로세서 수를 가져옵니다. 이 숫자는 다중 프로세서 시스템의 하드웨어 구성에 따라 달라지지만 각각 64비트 및 32비트 버전의 Windows에서 설정한 고정 64 프로세서 및 32 프로세서 제한을 초과할 수 없습니다.

GROUP_AFFINITY 구조체에는 선호도 마스크와 그룹 번호가 포함됩니다. 그룹 번호는 선호도 마스크가 적용되는 그룹을 식별합니다.

KAFFINITY 형식을 사용하는 커널 루틴에는 IoConnectInterrupt, KeQueryActiveProcessorCountKeQueryActiveProcessors가 포함됩니다.