модель драйвера, не зависимого от режима обработки

Классы МПК:G06F13/10 программное управление для периферийных устройств
G06F9/46 устройства для мультипрограммирования 
Автор(ы):,
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2003-06-25
публикация патента:

Изобретение относится к вычислительной технике, в частности к устройствам, обеспечивающим возможность единой реализации операций, которые являются общими как для обработки в режиме ядра, так и для обработки в пользовательском режиме. Техническим результатом является обеспечение единой реализации операций как для обработки в режиме ядра, так и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств. Для данной процедуры обработки обращение к общему интерфейсу отображается на реализацию режима ядра для обработки режима ядра и на реализацию пользовательского режима для обработки пользовательского режима. Отображение может выполняться во время выполнения обработки или может быть статическим. Общая операция может обеспечить процедуре обработки пользовательского режима непосредственный доступ к адаптеру аппаратных средств, например, для передачи и приема информации, без переключения в режим ядра. Также может быть обеспечена реализация режима ядра для операций, которые являются уникальными для обработки режима ядра, например, определение параметров защищенности для принудительного применения адаптером аппаратных средств или инициирование и завершение связи через адаптер аппаратных средств. 3 н. и 23 з.п. ф-лы, 6 ил. модель драйвера, не зависимого от режима обработки, патент № 2327208

модель драйвера, не зависимого от режима обработки, патент № 2327208 модель драйвера, не зависимого от режима обработки, патент № 2327208 модель драйвера, не зависимого от режима обработки, патент № 2327208 модель драйвера, не зависимого от режима обработки, патент № 2327208 модель драйвера, не зависимого от режима обработки, патент № 2327208 модель драйвера, не зависимого от режима обработки, патент № 2327208

Формула изобретения

1. Способ обеспечения возможности единой реализации для одной или более операций в компьютерной системе, которые являются общими как для обработки в режиме ядра, так и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств компьютерной системы, который обеспечивает возможность одной или более процедурам обработки осуществлять информационный обмен, по меньшей мере, с одним аппаратным средством по линии связи, при этом одна или более процедур обработки осуществляются, по меньшей мере, в одном из следующих режимов: (i) менее ограниченном режиме ядра и (ii) более ограниченном пользовательском режиме, при этом способ содержит:

определение имени общего интерфейса, по меньшей мере, для одной операции, которая соответствует адаптеру аппаратных средств, обеспечивающему возможность одной или более процедурам обработки осуществлять информационный обмен, по меньшей мере, с одним аппаратным средством, и которая является общей как для обработки в режиме ядра, так и для обработки в пользовательском режиме,

обеспечение реализации режима ядра, по меньшей мере, для одной операции, которая соответствует упомянутому имени,

обеспечение реализации пользовательского режима, по меньшей мере, для одной операции, которая соответствует упомянутому имени, при этом реализация режима ядра включает в себя операции, уникальные для режима ядра в том, что такие операции не могут быть реализованы пользовательским режимом и поэтому не являются общими для режима ядра и для пользовательского режима, и

для данной процедуры обработки, отображение одного или более обращений к общему интерфейсу для упомянутого адаптера аппаратных средств (i) на реализацию режима ядра, если данная процедура обработки является обработкой режима ядра, и (ii) на реализацию пользовательского режима, если данная процедура обработки является обработкой пользовательского режима.

2. Способ по п.1, в котором, по меньшей мере, одна операция соответствует операции информационного обмена, которая обеспечивает обработке пользовательского режима непосредственный доступ к адаптеру аппаратных средств без переключения в режим ядра.

3. Способ по п.2, дополнительно содержащий обеспечение реализации режима ядра для одной или более операций, которые являются уникальными для обработки режима ядра в том, что реализация одной или более операций не может быть реализована пользовательским режимом и поэтому не является общей для режима ядра и для пользовательского режима.

4. Способ по п.3, в котором одна или более операций, которые являются уникальными для обработки режима ядра, соответствуют одной или более операциям информационного обмена для инициирования и завершения связи через адаптер аппаратных средств, при этом общий интерфейс, по меньшей мере, для одной операции, которая является общей для обработки режима ядра и для обработки пользовательского режима, соответствует операции информационного обмена для передачи и приема информации через адаптер аппаратных средств.

5. Способ по п.3, в котором, по меньшей мере, одна из упомянутых операций, которые являются уникальными для обработки режима ядра, определяет параметры защищенности для принудительного применения адаптером аппаратных средств.

6. Способ по п.1, в котором упомянутое отображение производится во время выполнения обработки.

7. Способ по п.1, в котором упомянутое отображение является статическим.

8. Способ по п.1, в котором адаптер аппаратных средств является адаптером InfiniBand канала хоста.

9. Способ по п.1, в котором реализация режима ядра и реализация пользовательского режима данной операции различны, если даже функциональность, обеспечиваемая реализацией данной операции посредством реализации режима ядра, та же самая, что и функциональность, обеспечиваемая реализацией данной операции посредством реализации пользовательского режима.

10. Способ по п.1, в котором реализация режима ядра включает в себя все операции, возможные для адаптера, так что приложениям без пользовательского режима разрешается взаимодействовать с адаптером посредством реализации режима ядра.

11. Машиночитаемый носитель, содержащий исполняемые компьютером инструкции, которые при исполнении их компьютером обеспечивают осуществление способа обеспечения возможности единой реализации для одной или более операций, которые являются общими для обработки в режиме ядра и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств компьютерной системы, для обеспечения возможности одной или более процедурам обработки осуществлять информационный обмен, по меньшей мере, с одним аппаратным средством по линии связи, при этом одна или более процедур обработки осуществляются, по меньшей мере, в одном из следующих режимов: (i) менее ограниченном режиме ядра и (ii) более ограниченном пользовательском режиме, при этом способ содержит

определение имени общего интерфейса, по меньшей мере, для одной операции, которая соответствует адаптеру аппаратных средств, обеспечивающему возможность одной или более процедурам обработки осуществлять информационный обмен, по меньшей мере, с одним аппаратным средством, и которая является общей для обработки в режиме ядра и для обработки в пользовательском режиме,

обеспечение реализации режима ядра, по меньшей мере, для одной операции, которая соответствует упомянутому имени,

обеспечение реализации пользовательского режима, по меньшей мере, для одной операции, которая соответствует упомянутому имени, при этом реализация режима ядра включает в себя операции, уникальные для режима ядра в том, что такие операции не могут быть реализованы пользовательским режимом и поэтому не являются общими для режима ядра и для пользовательского режима, и

для данной процедуры обработки, отображение одного или более обращений к общему интерфейсу для упомянутого адаптера аппаратных средств (i) на реализацию режима ядра, если данная процедура обработки является обработкой режима ядра, и (ii) на реализацию пользовательского режима, если данная процедура обработки является обработкой пользовательского режима.

12. Машиночитаемый носитель по п.11, в котором, по меньшей мере, одна упомянутая операция соответствует операции информационного обмена, которая обеспечивает обработке пользовательского режима непосредственный доступ к адаптеру аппаратных средств без переключения в режим ядра.

13. Машиночитаемый носитель по п.12, в котором упомянутые инструкции дополнительно обеспечивают реализацию режима ядра для одной или более операций, которые являются уникальными для обработки режима ядра в том, что такие операции не могут быть реализованы пользовательским режимом, и поэтому не являются общими для режима ядра и для пользовательского режима.

14. Машиночитаемый носитель по п.13, в котором упомянутые одна или более операций, которые являются уникальными для обработки режима ядра, соответствуют одной или более операциям информационного обмена для инициирования и завершения связи через адаптер аппаратных средств, при этом общий интерфейс, по меньшей мере, для одной операции, которая является общей для обработки режима ядра и для обработки пользовательского режима, соответствует операции информационного обмена для передачи и приема информации через адаптер аппаратных средств.

15. Машиночитаемый носитель по п.13, в котором, по меньшей мере, одна из упомянутых операций, которые являются уникальными для обработки режима ядра, определяет параметры защищенности для принудительного применения адаптером аппаратных средств.

16. Машиночитаемый носитель по п.11, в котором упомянутые инструкции обеспечивают выполнение упомянутого отображения во время выполнения обработки.

17. Машиночитаемый носитель по п.11, в котором упомянутое отображение является статическим.

18. Машиночитаемый носитель по п.11, в котором адаптер аппаратных средств является адаптером InfiniBand канала хоста.

19. Машиночитаемый носитель, содержащий сохраненные на нем исполняемые компьютером инструкции для обеспечения возможности единой реализации для одной или более операций, которые являются общими для обработки в режиме ядра и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств, при этом инструкции при исполнении их компьютером обеспечивают

интерфейс, который идентифицирует общее имя и список параметров для одной или более операций, которые являются общими для обработки в режиме ядра и для обработки в пользовательском режиме, причем упомянутые одна или более операций соответствуют адаптеру связи аппаратных средств, который обеспечивает возможность одной или более процедурам обработки осуществлять информационный обмен с, по меньшей мере, одним аппаратным средством,

реализацию режима ядра, которая реализует одну или более операций для выполнения в режиме ядра,

реализацию пользовательского режима, которая реализует одну или более операций для выполнения в пользовательском режиме, при этом реализация режима ядра конфигурирована для реализации операций, уникальных для режима ядра в том, что такие операции не могут быть реализованы посредством реализации пользовательского режима и поэтому не являются общими для режима ядра и для пользовательского режима, и

диспетчеризацию для адаптера аппаратных средств для активизации реализации режима ядра, если вызываемая процедура обработки является обработкой режима ядра, и активизации реализации пользовательского режима, если вызываемая процедура обработки является обработкой пользовательского режима.

20. Машиночитаемый носитель по п.19, в котором реализация пользовательского режима обеспечивает непосредственный доступ к адаптеру аппаратных средств без переключения в режим ядра.

21. Машиночитаемый носитель по п.19, в котором упомянутые инструкции обеспечивают реализацию только режима ядра для реализации одной или более операций, которые являются уникальными для обработки режима ядра в том, что такие операции не могут быть реализованы обработкой пользовательского режима и поэтому не являются общими для обработки режима ядра и для обработки пользовательского режима.

22. Машиночитаемый носитель по п.21, в котором, по меньшей мере, одна операция, уникальная для обработки режима ядра, обеспечивает параметры защищенности для принудительного применения адаптером аппаратных средств.

23. Машиночитаемый носитель по п.19, в котором диспетчеризация статически связана с реализацией режима ядра и с реализацией пользовательского режима.

24. Машиночитаемый носитель по п.19, в котором диспетчеризация динамически активизирует либо реализацию режима ядра, либо реализацию пользовательского режима во время выполнения обработки.

25. Машиночитаемый носитель по п.19, в котором реализация режима ядра является частью минипорта, который реализует конкретные операции адаптера связи аппаратных средств.

26. Машиночитаемый носитель по п.19, в котором адаптер связи аппаратных средств является адаптером InfiniBand канала хоста.

Описание изобретения к патенту

Область техники

Настоящее изобретение относится к области программного обеспечения драйверов для компьютерных аппаратных средств.

Более конкретно настоящее изобретение относится к способам, системам и компьютерным программным продуктам, которые обеспечивают возможность единой реализации одной или более операций, которые являются общими как для обработки режима ядра (привилегированного режима обработки), так и для пользовательского режима обработки по отношению к адаптеру аппаратных средств.

Предшествующий уровень техники

С повышением эффективности компьютерных аппаратных средств функционирование компьютерного программного обеспечения становится все более важным фактором для рабочих характеристик системы в целом. Эффективное компьютерное программное обеспечение для взаимодействия с адаптерами аппаратных средств, которые осуществляют информационный обмен с устройствами аппаратных средств, является особенно важным в условиях частоты и объема обмениваемой информации. Типовое узкое место в таком информационном обмене относится к различным уровням программного обеспечения и соответствующим переходам между режимами обработки, происходящим между прикладной программой (приложением) и адаптером аппаратных средств.

Многие операционные системы обеспечивают по меньшей мере два режима обработки: (i) относительно менее доверительный и поэтому более ограниченный пользовательский режим, и (ii) относительно более доверительный и поэтому менее ограниченный режим обработки ядра. В принципе, процедуры обработки приложений выполняются в пользовательском режиме, так что процессы изолированы и не могут создавать помехи каждому из других ресурсов. Пользовательские процедуры обработки переключаются на режим ядра при осуществлении системных вызовов, генерировании исключительной ситуации (ошибки) или неисправности (сбоя, отказа), когда возникает прерывание и т.д. Процедуры обработки, выполняемые в режиме ядра, являются привилегированными и имеют доступ ко всем компьютерным ресурсам (например, ко всей доступной памяти), без ограничений, которые применимы для процедур обработки пользовательского режима. Поскольку ядро операционной системы действует как «сторож» для компьютерных ресурсов, прямой доступ к ресурсам обычно ограничен процедурами обработки ядра. Различия между процедурами обработки пользовательского режима и процедурами обработки режима ядра также могут поддерживаться компьютерными аппаратными средствами. Например, многие микропроцессоры имеют режимы обработки для поддержки различий между процедурами обработки пользовательского режима и процедурами обработки ядра.

Ввиду того, что доступ к определенным ресурсам ограничен процедурами обработки ядра, процедура обработки пользовательского режима должна переходить или переключаться на обработку режима ядра для получения доступа. После осуществления доступа процедура обработки должна переключаться назад в пользовательский режим для последующего исполнения. Переключение режимов обработки, однако, может иметь значительное влияние на рабочие характеристики. Поэтому в попытках снизить ухудшение рабочих характеристик, связанное с переключением режимов обработки, некоторые адаптеры аппаратных средств поддерживают принудительные меры по обеспечению защищенности в пределах некоторых параметров, так что приложения пользовательского режима могут получать доступ к аппаратным средствам непосредственно без перехода в режим обработки ядра. Соответственно, некоторые драйверы программного обеспечения обходят режим обработки ядра для выполнения некоторых операций.

Несмотря на обеспечение возможности процедурам обработки пользовательского режима получать непосредственный доступ к ресурсам аппаратных средств, общая защищенность компьютерной системы сохраняется за счет ограничения доступа в пределах определенных параметров обеспечения защиты. Для адаптера аппаратных средств эти параметры защищенности устанавливаются с использованием процедур обработки режима ядра. По существу, параметры защищенности указывают на то, что конкретной процедуре обработки разрешен непосредственный доступ для определенных операций. Адаптер аппаратных средств будет отклонять попытки подобного доступа со стороны других процедур обработки и будет отклонять попытки доступа со стороны процедур обработки, которые находятся за пределами области разрешения, гарантированной параметрами защищенности.

Некоторые операции могут быть реализованы как для пользовательского режима, так и для режима ядра. Реализация одной и той же операции в каждом режиме, однако, обуславливает неэффективность процесса разработок программного обеспечения. Рассмотрим, например, распределение памяти. Хотя в каждом случае производится распределение области памяти, распределения памяти в режиме ядра имеют иные требования по сравнению с распределениями памяти в пользовательском режиме. Например, распределение памяти в режиме ядра может гарантировать определенные условия выравнивания (настройки) для облегчения взаимодействия с аппаратными средствами, в то время как условия выравнивания могут быть неадекватными для распределения памяти в пользовательском режиме. Кроме того, с точки зрения драйвера аппаратных средств, все, что требуется, - это область памяти. В результате единая операция для доступа адаптера аппаратных средств в типовом случае имеет отдельные реализации в пользовательском режиме и в режиме ядра. Соответственно, желательными являются методы, системы и компьютерные программные продукты, которые обеспечивают возможность единой реализации операций, которые являются общими как для обработки в режиме ядра, так и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств.

Сущность изобретения

Настоящее изобретение относится к способам, системам и компьютерным программным продуктам, которые обеспечивают возможность единой реализации операций, которые являются общими как для обработки в режиме ядра, так и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств. По меньшей мере для одной операции, которая является общей для обработки в пользовательском режиме и для обработки в режиме ядра, определяется общий интерфейс. По меньшей мере для одной операции обеспечиваются соответствующие реализации режима ядра и пользовательского режима. Для данной процедуры обработки обращение (вызов) к интерфейсу отображается на реализацию режима ядра, если данная процедура обработки является обработкой режима ядра, и на реализацию пользовательского режима, если данная процедура обработки является обработкой пользовательского режима. Отображение может выполняться во время выполнения или может быть статическим.

Общая операция может обеспечить обработке пользовательского режима непосредственный доступ к адаптеру аппаратных средств без переключения в режим ядра. Также может быть обеспечена реализация режима ядра для одной или более операций, которые являются уникальными для обработки режима ядра. Например, операции для инициирования и завершения связи через адаптер аппаратных средств могут быть уникальными для обработки режима ядра, в то время как операции для передачи и приема информации через адаптер могут быть общими как для обработки пользовательского режима, так и для обработки режима ядра. Более конкретно одна из операций, уникальных для обработки режима ядра, может идентифицировать параметры защищенности для принудительного применения адаптером аппаратных средств.

Дополнительные признаки и преимущества изобретения описаны в нижеследующем описании и частично являются очевидными из описания или могут быть изучены при практической реализации изобретения. Признаки и преимущества изобретения могут быть реализованы и получены посредством признаков и их комбинаций, указанных в пунктах формулы изобретения. Эти и другие признаки настоящего изобретения можно понять из последующего описания и пунктов формулы изобретения или выявить на основе реализации изобретения, как изложено ниже.

Краткое описание чертежей

Способ, которым могут быть получены вышеописанные и другие преимущества и признаки изобретения, более подробно описан ниже со ссылками на конкретные варианты осуществления, иллюстрируемые чертежами. Следует иметь в виду, что эти чертежи изображают только типовые варианты осуществления изобретения и поэтому не должны рассматриваться как ограничивающие его объем, в связи с чем изобретение описано и пояснено с дополнительной конкретизацией и деталями, поясняемыми представленными чертежами, на которых:

фиг. 1 - блок-схема высокого уровня модели драйвера аппаратных средств, которая позволяет осуществить единую реализацию общих операций пользовательского режима и режима ядра в соответствии с настоящим изобретением;

фиг. 2А-2С - пример модели драйвера аппаратных средств, соответствующий настоящему изобретению;

фиг. 3 - пример операций способа, обеспечивающего единую реализацию общих операций пользовательского режима и режима ядра в соответствии с настоящим изобретением;

фиг. 4 - пример системы, которая обеспечивает подходящую операционную среду для настоящего изобретения.

Детальное описание предпочтительных вариантов осуществления изобретения

Настоящее изобретение относится к методам, системам и компьютерным программным продуктам, которые обеспечивают возможность единой реализации операций, которые являются общими как для обработки в режиме ядра, так и для обработки в пользовательском режиме по отношению к адаптеру аппаратных средств. Для реализаций операции в режиме ядра и в пользовательском режиме определяется общий интерфейс. Если процесс вызова является обработкой пользовательского режима, то вызов отображается на реализацию пользовательского режима, а если процесс вызова является обработкой режима ядра, то вызов отображается на реализацию режима ядра. Некоторые варианты осуществления настоящего изобретения могут содержать один или более специализированных и/или один или более универсальных компьютеров, включая различные компьютерные аппаратные средства, как пояснено более детально ниже со ссылками на фиг. 4.

На фиг. 1 представлена блок-схема высокого уровня модели драйвера аппаратных средств, которая позволяет осуществить единую реализацию общих операций пользовательского режима и режима ядра в соответствии с настоящим изобретением. Приложение 110 получает доступ к адаптеру 150 через интерфейс 120 пользовательского режима. Некоторые операции отображаются на реализацию 140 режима ядра, в то время как другие отображаются на реализацию 130 пользовательского режима. Заметим, что реализация 130 пользовательского режима обеспечивает непосредственный доступ к адаптеру 150, без переключения в режим ядра. Соответственно приложение 110 может получить доступ к адаптеру 150 через реализацию 130 пользовательского режима за существенно более короткое время, чем потребовалось бы для реализации 140 режима ядра.

Обеспечение того, что соответствующие операции реализуются как в виде реализации 130 пользовательского режима, так и реализации 140 режима ядра, желательно по меньшей мере по двум причинам. Во-первых, реализация 130 режима ядра обычно включает все операции, возможные для адаптера 150, так что приложения без интерфейса 120 пользовательского режима имеют возможность взаимодействовать с адаптером 150. При наличии непроизводительных затрат на переключение из режима ядра в пользовательский режим (и обратное переключение) реализация 140 режима ядра, вызывающая реализацию 130 пользовательского режима (для операций, которые должны выполняться в пользовательском режиме), в типовом случае приведет в результате к менее чем оптимальным рабочим характеристикам, особенно потому, что реализация 130 пользовательского режима реализует операции, которые имеют тенденцию к более частому возникновению, такие как передача и прием информации. (Заметим также, что для того, чтобы приложение могло обратиться к реализации 140 режима ядра, одно переключение из пользовательского режима в режим ядра уже произошло, а другое должно последовать затем при обратном переключении из режима ядра в пользовательский режим).

Во-вторых, реализация 140 режима ядра обычно включает операции, которые уникальны для режима ядра. Часто эти операции используют более базисные операции для передачи и приема информации от адаптера 150. Однако, как показано выше, часто осуществляемые операции, такие как передача и прием информации, являются вероятными кандидатами на включение в реализацию 130 пользовательского режима, чтобы достичь выгоды в рабочих характеристиках за счет исключения переходов обработки из пользовательского режима в режим ядра. Подобно ситуации, описанной выше, непроизводительные затраты на переключение из режима ядра в пользовательский режим для доступа к реализации 130 пользовательского режима и обратно в режим ядра приводят к неоптимальности рабочих характеристик.

Ввиду различий в обработке пользовательского режима и обработке режима ядра реализации пользовательского режима для данной операции имеют тенденцию отличаться от реализаций режима ядра. Традиционно каждая реализация 130 пользовательского режима для конкретной операции обеспечивает ту же функциональность, что и соответствующая реализация 140 режима ядра для этой операции, но пригодна для обработки в пользовательском режиме. В соответствии с настоящим изобретением, однако, и как описано более детально ниже в отношении примерной модели драйвера аппаратных средств, показанной на фиг. 2А-2С, реализация 130 пользовательского режима и реализация 140 режима ядра совместно используют общий интерфейс. (На фиг. 1 этот общий интерфейс является частью реализации 130 пользовательского режима и реализации 140 режима ядра и отдельно не показан.) Соответственно, тот же самый исходный код может быть написан для операции информационного обмена режима ядра и для операции информационного обмена пользовательского режима. Использование одного и того же исходного кода (например, статической библиотеки, полученной из общего источника) является существенной выгодой, которая сокращает время разработки, время тестирования и ошибки программирования, поскольку требуется писать и тестировать меньший объем программного кода. Общий интерфейс также может обеспечить разработчика осмысленным руководством в отношении того, каким образом следует проектировать программное обеспечение, основываясь на стандартных программах, доступных посредством общего интерфейса.

Разумеется, некоторые операции являются уникальными для реализации 140 режима ядра. Например, поскольку ядро несет ответственность за обеспечение защищенности, инициирование и завершение доступа к адаптеру 150 осуществляется через реализацию 140 режима ядра. Как только реализация 140 режима ядра (под управлением приложения 110) обеспечит соответствующие параметры защищенности для адаптера 150, адаптер 150 выполняет соответствующие проверки защищенности после получения им доступа, например проверку того, что процедура доступа надлежащим образом авторизована через реализацию 140 режима ядра.

На фиг. 2А-2С показан пример модели драйвера аппаратных средств, которая обеспечивает возможность единой реализации общих операций пользовательского режима и режима ядра в соответствии с настоящим изобретением. Приложение 210А InfiniBand получает доступ к адаптеру канала хоста (НСА-адаптеру) 280А через библиотеку 230А пользовательского режима и через минипорт-драйвер 240А режима ядра. Определенный доступ к НСА-адаптеру 280А через библиотеку 230А пользовательского режима (в противоположность минипорт-драйверу 240А режима ядра) является практичным, поскольку InfiniBand представляет один пример архитектуры аппаратных средств, который сбрасывает определенную проверку защищенности и другую обработку на адаптер. Инициирование и завершение доступа управляются посредством операций режима ядра для обеспечения соответствующего уровня защищенности. Однако после инициирования защищенность для часто осуществляемых операций информационного обмена, например, связанных с передачей и приемом данных, обеспечивается в аппаратных средствах НСА, давая возможность чрезвычайно быстрого доступа пользовательского режима. Например, как описано более детально ниже по отношению к фиг. 2С, минипорт-драйвер 240А режима ядра является ответственным за создание и уничтожение очередей информационного обмена, в то время как библиотека 230А пользовательского режима позволяет осуществлять перенос данных пользовательского режима в очереди информационного обмена в НСА-адаптере 280А.

Приложение 210А InfiniBand сначала вызывает библиотеку 220А InfiniBand пользовательского режима, которой известно о библиотеке 230А пользовательского режима по определенной информации конфигурации, содержащейся в базе данных системного реестра. В одном смысле библиотека 230 пользовательского режима может трактоваться как расширение библиотеки 220А InfiniBand пользовательского режима. Библиотека 230А пользовательского режима экспортирует хорошо известный интерфейс прикладных программ (API) (в форме таблицы диспетчеризации) для стандартных программ, которые она поддерживает. В одном варианте осуществления библиотека 230А пользовательского режима реализована как библиотека динамических связей (DLL). Хотя обязательно не требуется, многие из преимуществ InfiniBand реализуются посредством функций IO (ввода/вывода) обхода ядра, предоставляемых библиотекой 230А пользовательского режима.

Библиотека 220А InfiniBand представляет интерфейс абстрагированного общего НСА-устройства. Специфическая для поставщика библиотека 232А библиотеки 230А пользовательского режима отображает абстракцию библиотеки 220А InfiniBand на специфические для аппаратных средств операции НСА-адаптера 280А. Та же самая специфическая для поставщика библиотека проявляется как специфическая для поставщика библиотека 242А минипорт-драйвера 240А, как описано более детально ниже. Соответственно, специфическая для поставщика библиотека 232А и специфическая для поставщика библиотека 242А представляют, по меньшей мере частично, независимую от режима обработки (PMI) библиотеку доступа НСА IO.

Библиотека 220А InfiniBand пользовательского режима также получает доступ к НСА-адаптеру 280А через порт, обозначенный как Hcaport 250А, и минипорт-драйвер 240А. В дополнение к специфической для поставщика библиотеке 242А минипорт-драйвер 240А также включает функции 244А управления и помощника адаптера режима ядра и программы-агенты 246 классов. Дополнительные детали относительно соотношения между Hcaport 240А, минипорт-драйвером 240А и НСА-адаптером 280А приведены ниже во взаимосвязи с фиг. 2В. Hcaport 250А также обеспечивает доступ к НСА-адаптеру 280А из другого клиента 270А режима ядра (например, минипорта RNDIS, который использует API клиента Hcaport). Hcaport 250А запускает различные подсистемы управления, включая программу-менеджер (администратор) 262А подсети, программу-менеджер соединений 264А и программу-менеджер 266А рабочих характеристик.

Согласно фиг. 2В, Hcaport 250В обеспечивает интерфейс абстрагированного обобщенного НСА-устройства. Подобно библиотеке 230А пользовательского режима и специфической для поставщика библиотеке 232А минипорт-драйвер 240В и специфическая для поставщика библиотека 242В отображают абстракцию порта Hcaport 250В на специфические для аппаратных средств операции НСА-адаптера 280В. Как указано выше, та же самая специфическая для поставщика библиотека PMI представляется как специфическая для поставщика библиотека 242В минипорт-драйвера 240В и специфическая для поставщика библиотека 232А библиотеки 230А пользовательского режима. (Специфические для ядра стандартные программы реализованы в функциях 244В управления и помощника адаптера режима ядра.) Кроме того, Hcaport 250B подготавливает среду для программ-агентов 246В классов минипорт-драйвера.

Hcaport 250B устанавливает операционную среду, которая обеспечивает минипорт 240В функциональностью операционной системы, такой как распределение памяти, доступ к системному реестру и доступ к порту/регистру. Непосредственные обращения в операционную систему могут быть не разрешены в стремлении оградить разработчиков минипорта от определенных сложностей проектирования и при этом обеспечить реализацию цели единого источника для специфической для поставщика библиотеки 232А и для специфической для поставщика библиотеки 242В. Hcaport 250В, таким образом, преобразует в последовательную форму запросы минипорт-драйвера 240В, так что разработчику минипорта не требуется решать проблемы преобразования в последовательную форму. Ресурсы памяти распределяются из пула памяти, не подлежащей страничному обмену, операционной системы.

Следует отметить, что Hcaport 250В обеспечивает для управления ресурсами InfiniBand для клиентов InfiniBand. В противоположность этому минипорт-драйвер 240В не обеспечивает управления ресурсами InfiniBand, а вместо этого действует как расширение методов управления Hcaport. Минипорт-драйвер 240В ограждает Hcaport 250B от специфической для поставщика операционной семантики НСА-адаптера 280В. Информационная структура минипорта обеспечивает Hcaport 250B стандартными программами управления/помощника минипортпа и вызова доступа PMI IO.

На фиг. 2С показано приложение 210С InfiniBand, получающее доступ к НСА-адаптеру 280С через библиотеку 220С InfiniBand пользовательского режима и либо библиотеку 230С пользовательского режима со специфической для поставщика библиотекой 232С, либо через Hcaport 250C и минипорт 240С с функциями 244С помощника адаптера. Функции управления и помощника адаптера учитывают два требования. Первое - это общее управление и операции НСА-адаптера 280С в смысле типового драйвера, такие как запуск и остановка минипорт-драйвера, распределение и управление ресурсами шины IO (IO, память и прерывания), обработка команд «включай-и-работай» и обработка команд распределения мощности.

Второе требование относится к поддержке функций помощника режима ядра. Это привилегированные функции, выполняемые минипортом, для обеспечения надлежащего управления ресурсами информационного обмена, включая: (i) управление областями защиты и назначение областей защиты, как это требуется; (ii) управление таблицей переноса и защиты, такое как создание и уничтожение таблицы переноса и защиты и управление и манипулирование записями таблицы, включая создание и уничтожение областей памяти и окон памяти; (iii) управление запросом событий, такое как создание и уничтожение очереди событий и обработка событий из очереди событий; (iv) управление очередью завершения, такое как создание и уничтожение очередей завершения и привязывание и развязка очереди завершения по отношению к НСА-адаптеру; (v) управление очередью работ, такое как создание и уничтожение очереди работ, поддержка программирования признаков очереди работ и связывание очередей работ с НСА-адаптером; (vi) управление таблицей векторов адресов, такое как создание и уничтожение таблиц векторов адресов (в некоторых случаях это может быть частью функциональных средств управления областями защиты); и (vii) поддержку групповой адресации, такой как создание и уничтожение многоадресных групп.

Библиотека, независимая от режима обработки (например, специфическая для поставщика библиотека 232С и специфическая для поставщика библиотека 242В), статически связана как с минипортом 240С, так и с библиотекой 230С пользовательского режима. Как указано выше, за счет того, что библиотека сделана общим компонентом, разработка, поддержка и тестирование НСА-минипорта могут быть сокращены. В принципе, функции PMI-библиотеки имеют одну или более контекстно специфических областей расширения, пересланных к ним. На основе контекста обработки соответствующие реализации пользовательского режима или режима ядра вызываются или отображаются для обобщенно именованной функции.

Специфическая для поставщика библиотека PMI обеспечивает три основных типа функциональности: (i) создание и уничтожение стороны пользовательского режима области защиты/очереди завершения/очереди работ (PD/CQ/WQ), (ii) занесение IO запросов в парные регистры очереди, назначенные для обработки пользовательского режима, и (iii) манипуляция окнами памяти посредством запроса связывания. Стандартные PMI-программы для поддержки создания и уничтожения PD/CQ/WQ работают по двухэтапной процедуре. Первый этап получает необходимые ресурсы для назначения пары очереди посредством минипорта в режиме ядра. Второй этап проверяет результаты, и если запрос безуспешен, то процедуре обработки назначаются свободные ресурсы. IO запросы непосредственно манипулируют назначенной парой очереди. Незначительное структурирование требуется для IO запросов и манипуляции окнами памяти, ввиду того что высокое значение ширины полосы и низкое время задержки являются важными факторами.

На фиг. 3 представлен пример операций способа, обеспечивающего единую реализацию общих операций пользовательского режима и режима ядра в соответствии с настоящим изобретением. Хотя эти действия могут быть описаны или заявлены в конкретном порядке, настоящее изобретение не обязательно ограничивается каким-либо конкретными порядком или комбинацией действий. Обеспечение единой реализации одной или более операций, которые являются общими как для обработки режима ядра, так и для обработки пользовательского режима по отношению к адаптеру аппаратного обеспечения, может включать действие определения (310) общего интерфейса по меньшей мере для одной операции, которая является общей для обработки режима ядра и для обработки пользовательского режима; действие обеспечения (320) реализации режима ядра по меньшей мере одной операции, которая соответствует имени; действие обеспечения (330) реализации пользовательского режима по меньшей мере одной операции, которая соответствует имени; обеспечение (340) реализации режима ядра одной или более операций, которые являются уникальными для обработки режима ядра; и отображение (350) одного или более вызовов общего интерфейса на реализацию режима ядра, если данная обработка является обработкой режима ядра, и на реализацию пользовательского режима, если данная обработка является обработкой пользовательского режима.

Варианты осуществления настоящего изобретения могут содержать один или более специализированных и/или один или более универсальных компьютеров, включающих различные компьютерные аппаратные средства, как пояснено более подробно ниже. Варианты осуществления, входящие в объем настоящего изобретения, также включают считываемые компьютером носители, которые переносят или имеют выполняемые компьютером инструкции или структуры данных, сохраненные на них. Такие считываемые компьютером носители могут представлять собой любые доступные носители, к которым может получать доступ универсальный или специализированный компьютер. В качестве примера, но не для ограничения, в числе таких считываемых компьютером носителей можно назвать ОЗУ, ПЗУ, электронно-стираемое программируемое ПЗУ, ПЗУ на компакт-дисках и другие устройства памяти на оптических дисках, на магнитных дисках или другие устройства магнитной памяти или любые другие носители, которые могут быть использованы для переноса или хранения желательного средства программного кода в форме выполняемых компьютером инструкций или структур данных, и к которым могут получить доступ универсальный или специализированный компьютер.

Когда информация переносится или обеспечивается по сети или другому соединению связи (как проводному, так и беспроводному, а также комбинации проводных и беспроводных средств) к компьютеру, то компьютер надлежащим образом рассматривает соединение как считываемый компьютером носитель (среду). Таким образом, любое такое соединение надлежащим образом определяется термином «считываемый компьютером носитель». Комбинации вышеупомянутого также должны быть включены в объем считываемых компьютером носителей. Выполняемые компьютером инструкции содержат, например, инструкции и данные, которые обуславливают то, что универсальный компьютер, специализированный компьютер или специализированное устройство обработки выполняют некоторую функцию или группу функций.

На фиг. 4 и в последующем изложении приведено краткое описание подходящей вычислительной среды, в которой может быть реализовано настоящее изобретение. Хотя обязательно не требуется, однако изобретение описывается в общем контексте выполняемых компьютером инструкций, таких как программные модули, выполняемые компьютерами в сетевых средах. В общем случае программные модули включают стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Выполняемые компьютером инструкции, связанные со структурами данных, и программные модули представляют примеры средств программного кода для выполнения этапов способа, раскрытых в настоящем описании. Конкретная последовательность таких исполняемых инструкций или связанные с ними структуры данных представляют примеры соответствующих действий для реализации функций, описанных соответственно этим этапам.

Специалистам в данной области техники должно быть понятно, что изобретение может быть реализовано в сетевых вычислительных средах с множеством типов конфигураций компьютерных систем, включая персональные компьютеры, портативные устройства, мультипроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры (мэйнфреймы) и т.д. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются локальными и удаленными устройствами обработки, которые связаны (проводными линиями связи или беспроводными линиями связи или комбинацией проводных и беспроводных линий связи) через сеть связи. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных устройствах памяти.

Как показано на фиг. 4, приведенная для примера система для реализации изобретения содержит универсальное вычислительное устройство в форме обычного компьютера 420, включающего в себя процессорный блок 421, системную память 422 и системную шину 423, которая связывает различные компоненты системы, включая системную память 422, связанную с процессорным блоком 421. Системная шина 423 может быть любым из различных типов шинных структур, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из различных шинных архитектур. Системная память включает в себя ПЗУ 424 и ОЗУ 425. Базовая система ввода/вывода (BIOS) 426, содержащая базовые стандартные подпрограммы для обеспечения переноса информации между элементами в компьютере 420, например, в процессе запуска может быть сохранена в ПЗУ 424.

Компьютер 420 может также включать в себя накопитель 427 на магнитных жестких дисках для считывания или записи на магнитный жесткий диск 439, накопитель 428 на магнитных дисках для считывания или записи на съемный магнитный диск 429 и накопитель 430 на оптических дисках для считывания или записи на съемный оптический диск 431, такой как ПЗУ на компакт-диске (CD-ROM) или иные оптические носители информации. Накопитель 427 на жестких дисках, накопитель 428 на магнитных дисках и накопитель 430 на оптических дисках соединены с системной шиной 423 через интерфейс 432 накопителя на жестких дисках, интерфейс 443 на магнитных дисках и интерфейс 434 оптических дисков соответственно. Накопители и связанные с ними считываемые компьютером носители информации обеспечивают энергонезависимое хранение считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 420. Хотя приведенная для примера среда использует магнитный жесткий диск 439, съемный магнитный диск 429 и съемный оптический диск 431, могут также быть использованы и другие типы считываемых компьютером носителей для хранения данных, включая магнитные кассеты, платы флэш-памяти, цифровые многоцелевые диски, картриджи Бернулли, ОЗУ, ПЗУ и т.д.

Средство программного кода, содержащее один или более программных модулей, может быть сохранено на жестком диске 439, на магнитном диске 429, оптическом диске 431, ПЗУ 424 или ОЗУ 425, включая операционную систему 435, одну или более прикладных программ 436, другие программные модули 437 и программные данные 438. Пользователь может ввести команды и информацию в компьютер 420 посредством клавиатуры 440, координатно-указательного устройства 442 или других устройств ввода (не показаны), таких как микрофон, джойстик, игровая панель, антенна спутниковой связи, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к процессорному блоку 421 через интерфейс 446 последовательного порта. Альтернативно устройства ввода могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 447 или устройство отображения другого типа также соединены с системной шиной 423 через интерфейс, такой как видеоадаптер 448. В дополнение к монитору персональные компьютеры в типовом случае также включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры.

Компьютер 420 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, таких как удаленные компьютеры 449а и 449b. Каждый из удаленных компьютеров 449а и 449b может представлять собой другой персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер, одноранговое устройство или другой обычный сетевой узел и в типовом случае может включать в себя многие или все из элементов, описанных выше в связи с компьютером 420, хотя на фиг.4 показаны только устройства 450а и 450b памяти. Логические соединения, обозначенные на фиг.4, включают в себя локальную сеть (LAN) 451 и глобальную сеть (WAN) 452, которые представлены здесь для примера, но не для ограничения.

При использовании в сетевой среде LAN компьютер 420 подключен к локальной сети LAN 451 через сетевой интерфейс или адаптер 453. При использовании в среде глобальной сети WAN компьютер 420 может включать в себя модем 454, беспроводную линию связи или иное средство для установления связи в глобальной сети WAN 452, такой как Интернет. Модем 454, который может быть внутренним или внешним, может соединяться с системной шиной 423 через интерфейс 446 последовательного порта. В сетевой среде программные модули, показанные на чертеже в связи с компьютером 420, или их части могут храниться в удаленных устройствах памяти. Ясно, что показанные сетевые соединения приведены для примера, и могут быть использованы другие средства установления связи в глобальной сети 452.

Настоящее изобретение может быть реализовано в других конкретных формах без отклонения от его сущности или существенных характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях как исключительно иллюстративные, но не ограничивающие изобретение. Поэтому объем изобретения определяется пунктами формулы изобретения, но не предшествующим описанием. Все изменения, которые находятся в рамках значения и диапазона эквивалентности пунктов, должны быть включены в их объем.

Класс G06F13/10 программное управление для периферийных устройств

обеспечение косвенной адресации данных в системе обработки ввода-вывода при фрагментированном списке косвенных адресов данных -  патент 2505851 (27.01.2014)
терминал, использующий периферийное устройство другого терминала под управлением первого терминала, и способ их взаимодействия -  патент 2494449 (27.09.2013)
устройство обработки информации и способ управления им -  патент 2458387 (10.08.2012)
драйвер периферийного устройства типа "подключил и работай" -  патент 2444779 (10.03.2012)
запуск приложений с задержкой -  патент 2419840 (27.05.2011)
блок исполнительный -  патент 2406111 (10.12.2010)
устройство обработки информации, способ управления устройством обработки информации, компьютерная программа и среда хранения -  патент 2402080 (20.10.2010)
использование внешних устройств памяти для улучшения производительности системы -  патент 2395115 (20.07.2010)
программный интерфейс приложения демультиплексора -  патент 2351002 (27.03.2009)
система и способ для пользователей мобильных вычислительных устройств для распечатки документов -  патент 2325688 (27.05.2008)

Класс G06F9/46 устройства для мультипрограммирования 

Наверх