Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начиная с Windows Server 2008 операционная система может уведомлять драйвер устройства при динамическом добавлении процессора или модуля памяти в раздел оборудования. Существует несколько различных уведомлений, которые происходят на разных этапах процесса горячей операции добавления. Каждый из этих уведомлений использует другой метод уведомлений для уведомления драйвера устройства о событии. Вы можете использовать один или несколько из этих методов уведомлений, чтобы операционная система уведомила драйвер о возникновении операции горячего добавления. Затем драйвер может отвечать на запросы для безопасной и оптимальной работы.
В следующей таблице определены различные методы уведомлений и применяются ли они к процессорам, памяти или процессорам и памяти.
Метод уведомления | Для процессоров | Для памяти |
---|---|---|
Уведомление об синхронном драйвере |
X |
|
Уведомление об асинхронном драйвере |
X |
X |
Событие уведомления о памяти |
X |
|
Перебалансирование ресурсов |
X |
Уведомление об синхронном драйвере
При использовании уведомления синхронного драйвера операционная система синхронно уведомляет драйверы устройств о добавлении нового процессора в раздел оборудования. Это первое уведомление о том, что драйвер устройства получает изменение количества процессоров.
При добавлении нового процессора в раздел оборудования операционная система отправляет это уведомление драйверам устройств после запуска нового процессора, но перед началом планирования потоков на процессоре. Когда драйвер устройства получает это уведомление, он может выделить любые структуры данных процессора и назначить любые другие ресурсы процессора новому процессору. Это подготавливает драйвер устройства к выполнению своих диспетчерских процедур, подпрограмм обслуживания прерываний (ISR), отложенных вызовов процедур (DPC) и любых других потоков драйверов на новом процессоре.
Драйвер устройства должен зарегистрировать себя в операционной системе для получения синхронного уведомления драйвера. Дополнительные сведения см. в разделе "Регистрация для синхронного уведомления драйвера".
Этот метод уведомлений применим только к процессорам. Для памяти не существует синхронного механизма уведомлений.
Уведомление об асинхронном драйвере
При использовании асинхронного уведомления драйвера операционная система асинхронно уведомляет драйверы устройств о добавлении нового модуля процессора или памяти в раздел оборудования. Начиная с Windows Server 2008, процессоры и модули памяти считаются устройствами Plug and Play (PnP). Поэтому операционная система использует механизм уведомлений PnP для асинхронного уведомления драйвера.
При добавлении нового модуля процессора или памяти в раздел оборудования операционная система отправляет это уведомление драйверам устройств после запуска нового процессора или устройства памяти. В случае нового процессора операционная система не отправляет это уведомление драйверам устройств до тех пор, пока не начнется планирование потоков на новом процессоре.
Примечание.
Все уведомления PnP асинхронны. Таким образом, эти уведомления могут не получаться драйвером устройства до тех пор, пока операционная система не запустила процессор или модуль памяти.
Когда драйвер устройства получает это уведомление, он может соответствующим образом настроить некоторые или все следующие элементы:
Буфер памяти и другие выделения ресурсов
Назначение ресурсов определенным процессорам
Планирование ЦП и других потоков на конкретных процессорах
Алгоритмы балансировки нагрузки
Это важно
При добавлении нового процессора в раздел оборудования операционная система не отправляет уведомление PnP до тех пор, пока новый процессор не будет запущен, и операционная система начала планирование потоков на нем. Если драйвер устройства должен выполнять определенные задачи, прежде чем операционная система начнет планирование потоков на новом процессоре, например выделение структуры данных процессора, необходимо использовать синхронный метод уведомлений для драйвера.
Драйвер устройства должен зарегистрировать себя в операционной системе для получения асинхронного уведомления об драйвере. Дополнительные сведения см. в разделе "Регистрация для асинхронного уведомления драйвера".
Событие уведомления о памяти
С помощью метода события уведомления о памяти ваш драйвер устройства может запланировать выполнение потока, который будет ожидать, пока операционная система установит объект события \KernelObjects\HighMemoryCondition. Операционная система задает этот объект события, когда объем свободной физической памяти превышает определенное значение. Это событие уведомляет все потоки, ожидающие объекта события, что в настоящее время в системе доступно значительное количество физической памяти. Это событие может быть признаком динамического добавления нового модуля памяти в систему. Когда операционная система задает этот объект события, драйвер устройства может реагировать на событие, распределив дополнительные буферы памяти.
Дополнительные сведения о объекте события \KernelObjects\HighMemoryCondition см. в разделе "Стандартные объекты событий".
Это важно
Если операционная система задает объект события \KernelObjects\HighMemoryCondition , событие предоставляет только указание на то, что возможно, вы динамически добавили новый модуль памяти в раздел оборудования. Существуют и другие ситуации, которые могут привести к настройке этого объекта события операционной системой. Поэтому, начиная с Windows Server 2008, не рекомендуется использовать этот метод уведомлений драйверами устройств. Вместо этого драйверам устройств следует использовать асинхронный метод уведомления.
Этот метод применим только к памяти. Для процессоров нет соответствующего механизма уведомлений.
Перебалансация ресурсов
Начиная с Windows Server 2008 при добавлении нового процессора в раздел оборудования операционная система инициирует перебалансирование ресурсов на уровне системы. Будет ли устройство участвовать в таком перебалансировке ресурсов, определяется параметром свойства DEVPKEY_Device_DHP_Rebalance_Policy для этого устройства. Поведение по умолчанию для устройств в классе установки сетевого адаптера (класс = Net) заключается в том, что они не будут участвовать в перебалансирование ресурсов при динамическом добавлении нового процессора в систему. Поведение по умолчанию для устройств во всех других классах установки устройств заключается в том, что они будут участвовать в перебалансовке ресурсов при динамическом добавлении нового процессора в систему.
Если устройство является устройством Plug and Play (PnP) и оно участвует в такой перебалансации ресурсов, операционная система отправляет IRP_MN_QUERY_STOP_DEVICE, IRP_MN_STOP_DEVICE и IRP_MN_START_DEVICE PnP IRPs драйверу устройства во время операции перебалансирования ресурсов. Эти запросы PnP уведомляют драйвер о том, что в секции оборудования произошло изменение оборудования. Драйвер устройства должен поддерживать перебалансирование ресурсов, правильно обрабатывая запросы IRP_MN_QUERY_STOP_DEVICE и IRP_MN_STOP_DEVICE PnP. Драйвер устройства никогда не должен отклонять запрос IRP_MN_QUERY_STOP_DEVICE PnP.
Эти запросы PnP позволяют драйверу устройства полностью использовать новый набор активных процессоров в секции оборудования после добавления нового процессора. В частности, драйвер устройства, поддерживающий перебалансировку ресурсов, использует запросы PnP, которые он получает во время перебалансировки ресурсов, чтобы отключить подпрограммы обработки прерываний (ISR) и повторно подключить их с обновленным значением связи с процессором. Это позволяет драйверу устройства использовать все активные процессоры в секции оборудования, включая любые новые процессоры для обработки запросов на прерывания.
Драйверы устройств должны ставить в очередь все запросы ввода-вывода в процессе перераспределения ресурсов.
Дополнительные сведения о перебалансовке ресурсов см. в разделе "Остановка устройства для перебалансирования ресурсов".
Этот метод применим только к процессорам. Операционная система не инициирует перебалансирование ресурсов на уровне системы при добавлении нового модуля памяти в раздел оборудования.