CN1470989B - 独立于过程模式的驱动器模型 - Google Patents

独立于过程模式的驱动器模型 Download PDF

Info

Publication number
CN1470989B
CN1470989B CN031452213A CN03145221A CN1470989B CN 1470989 B CN1470989 B CN 1470989B CN 031452213 A CN031452213 A CN 031452213A CN 03145221 A CN03145221 A CN 03145221A CN 1470989 B CN1470989 B CN 1470989B
Authority
CN
China
Prior art keywords
kernel mode
user model
realized
hardware
adapter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN031452213A
Other languages
English (en)
Other versions
CN1470989A (zh
Inventor
R·L·卡伦德
N·加纳帕蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1470989A publication Critical patent/CN1470989A/zh
Application granted granted Critical
Publication of CN1470989B publication Critical patent/CN1470989B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Abstract

通过定义共同接口,相对硬件适配器,支持为内核模式及用户模式处理所共有的操作的单一实现的方法、系统和电脑程序产品。提供操作的对应内核模式及用户模式实现。对于给定过程,对公用接口的调用映射到内核模式过程的内核模式实现及用户模式的用户模式实现。映射可以在运行时间实现或是静态的。共有的操作可提供对硬件适配器的用户模式过程直接接入(诸如用来收发信息)而无须切换到内核模式。亦可提供为内核模式处理所特有的操作的内核模式实现,诸如规定要执行的硬件适配器的安全参数,或通过硬件适配器启动和终止通信。

Description

独立于过程模式的驱动器模型
技术领域
本发明涉及计算机硬件的驱动器软件领域。具体地说,本发明涉及相对硬件适配器支持为内核模式处理和用户模式处理共有的一或更多操作的单个实现的方法、系统和计算机程序产品。
背景技术
随着计算机硬件性能的提升,计算机软件的运行成为整体系统性能的一较重要的因素。考虑到要交换的信息的频率和数量,和与硬件设备通信的硬件适配器相互作用的有效计算机软件尤其重要。一常见通信瓶颈涉及各种软件层和时常出现于应用和硬件适配器间的过程模式间的相应转换。
许多操作系统提供至少两过程模式:(i)相对得到较少信任因而受到较多限制的用户模式及(ii)相对得到较多信任因而受到较少限制的内核模式。通常,应用过程运行于用户模式内,过程是分离的且不会干扰彼此的资源。当发出系统调用、产生例外或差错、出现间断等时,用户过程切换到内核模式。运行于内核模式中的过程是优先的并可接入全部计算机资源(诸如全部可用存储),而没有适用于用户模式过程的限制。因为操作系统内核用作计算机资源的关守,对资源的直接接入通常受限于内核模式过程。用户模式过程和内核模式过程间的区分亦可得到计算机硬件的支持。例如,许多微处理器有支持用户模式过程和内核模式过程间的区分的处理模式。
因为对某些资源的接入受限于内核模式过程,用户模式过程必须转换或切换到内核模式过程来获取接入。接入后,过程切换回用户模式用于进一步的执行。不过,切换过程模式可对性能有重大影响。因此,为降低与切换过程模式相关的性能衰减,一些硬件适配器支持在某些参数内的安全措施的执行,这样,用户模式应用直接接入硬件,不必转换到内核模式。因此,一些软件驱动器对一些操作旁路内核模式。
尽管允许用户模式过程直接接入硬件资源,计算机系统的整体安全性通过将接入限定于规定的安全参数内而保持不变。对于硬件适配器,这些安全参数是用内核模式过程设置的。实质上,安全参数表示特定操作可直接接入某些操作。硬件适配器拒绝其他过程的类似接入努力,并拒绝超越安全参数授予的允许范围的过程的接入努力。
某些操作对用户模式和内核模式都可实现。然而,在每个模式中实现同一操作带来软件开发过程中的低效率。考虑,例如,存储分配。尽管在每种情况下分配一存储区,内核模式中的存储分配和用户模式中的存储分配有不同的要求。例如,内核模式存储分配保证某些对齐条件以促进硬件相互作用,而对齐条件对用户模式存储分配是无关的。不过,从硬件驱动器角度看,全部所需是一存储区。结果,接入硬件适配器的单一操作通常有分离的用户模式和内核模式实现。因此,需要相对硬件适配器支持为内核模式处理和用户模式处理共有的一或更多操作的单个实现的方法、系统和计算机程序产品。
发明内容
本发明涉及相对硬件适配器支持为内核模式处理和用户模式处理共有的操作的单个实现的方法、系统和计算机程序产品。对为内核模式处理和用户模式处理共有的至少一操作,定义一共有接口。提供所述至少一操作的对应内核模式和用户模式实现。对一给定过程,对所述接口的调用映射到内核模式实现(如果该给定过程是内核模式过程)和映射到用户模式实现(如果该给定过程是用户模式过程)。映射可执行于运行时间或是静态的。
所述共有操作无须切换到内核模式而提供对硬件适配器的用户模式过程直接接入。也可提供为内核模式过程所特有的一或更多操作的内核模式实现。例如,通过硬件适配器启动和终止通信的操作对内核模式处理是独特的,而通过适配器收发信息的操作为用户模式处理和内核模式处理所共有。特别地,为内核模式过程所特有的一操作标识要执行的硬件适配器的安全参数。
在本发明的第一方面中,用于包括一或更多能在(i)相对较少限制内核模式和(ii)相对较多限制用户模式中的至少一个中工作的过程以及能使所述一或更多过程通过通信链路与至少一硬件设备通信的硬件适配器的计算机系统,一种支持相对硬件适配器为内核模式处理和用户模式处理所共有的一或更多操作的单个实现的方法,该方法包括如下动作:
确定为内核模式处理和用户模式处理所共有的至少一操作的公共接口名称;
提供对应该名称的所述至少一操作的内核模式实现;
提供对应该名称的所述至少一操作的用户模式实现;以及
对于给定过程,如果给定过程是内核模式过程,(i)将一或更多公共接口调用映射到内核模式实现,而如果给定过程是用户模式过程,(ii)则将一或更多公共接口调用映射到用户模式,其中,内核模式实现包括比用户模式实现更多的操作,它包括在内核模式实现和用户模式实现之间共有的操作,以及一个或更多所述内核模式实现所特有的附加操作。
在本发明的第二方面中,用于包括一或更多能在(i)相对较少限制内核模式和(ii)相对较多限制用户模式中的至少一个中工作的过程以及能使所述一或更多过程通过通信链路与至少一硬件设备通信的硬件适配器的计算机系统,一种支持相对硬件适配器为内核模式处理和用户模式处理所共有的一或更多操作的单个实现的系统,所述系统包括:
用于确定为内核模式处理和用户模式处理所共有的至少一操作的公共接口名称的装置;
用于提供对应该名称的所述至少一操作的内核模式实现的装置;
用于提供对应该名称的所述至少一操作的用户模式实现的装置;以及
对于给定过程,如果给定过程是内核模式过程,(i)用于将一或更多公共接口调用映射到内核模式实现的装置,而如果给定过程是用户模式过程,(ii)用于将一或更多公共接口调用映射到用户模式的装置,其中,内核模式实现包括比用户模式实现更多的操作,它包括在内核模式实现和用户模式实现之间共有的操作,以及一个或更多所述内核模式实现所特有的附加操作。
在本发明的第三方面中,根据本发明的第二方面所述的系统,所述内核模式实现的装置包括对硬件适配器可能的所有操作,这样,没有用户模式的应用就能通过所述内核模式实现的装置与所述硬件适配器进行交互。
在本发明的第四方面中,根据本发明的第二方面所述的系统,所述至少一操作对应无须切换到内核模式而提供对硬件适配器的用户模式过程的直接接入的通信操作。
在本发明的第五方面中,根据本发明的第四方面所述的系统,还包括用于提供为内核模式处理所特有的一或更多操作的一内核模式实现的装置。
在本发明的第六方面中,根据本发明的第五方面所述的系统,为内核模式处理所特有的一或更多操作中的至少一个规定要执行的硬件适配器的安全参数。
本发明其它的特点和优点将在后面的描述中给出,部分地从描述中显而易见,或通过使用本发明获得。本发明的特点和优点可通过所附权利要求中特别指出的仪器和组合来实现和获得。本发明的这些和其他特点从下列描述和所附权利要求变得更显而易见,或通过此后给出的本发明的使用来获得。
附图说明
为描述获得本发明的上述和其他优点和特点所用的方式,参照所附权利要求中说明的相关具体实施例对上面简述的本发明进行较具体的描述。认识到附图只描述本发明的典型实施例并因而不限制其范围,通过使用附图更具体、更详细地描述和说明本发明,其中:
图1示出根据本发明支持共有用户模式和内核模式操作的单个实现的硬件驱动器模型的高级框图;
图2A-2C根据本发明说明一示例硬件驱动器模型;
图3根据本发明示出支持共有用户模式和内核模式操作的单个实现的方法的示例动作;及
图4说明为本发明提供合适的操作系统的示例系统。
具体实施方式
本发明涉及相对硬件适配器支持为内核模式处理和用户模式处理共有的操作的单个实现的方法、系统和计算机程序产品。提供为操作的内核模式和用户模式实现的一共有接口。如果调用过程是用户模式过程,调用映射到用户模式实现,而如果调用过程是内核模式过程,调用映射到内核模式实现。如下面就图4更详细的讨论,本发明的一些实施例可包括各种计算机硬件的一或更多专用和/或一或更多通用计算机。
图1示出根据本发明支持共有用户模式和内核模式操作的单个实现的硬件驱动器模型的高级框图。应用110通过用户模式接口120接入适配器150。一些操作映射到内核模式实现160,而其他操作映射到用户模式实现130。注意:用户模式实现130提供对适配器150的直接接入,无须切换到内核模式。因此,应用110能通过用户模式实现130接入适配器150,所用时间比内核模式实现140所需时间少很多。
使对应操作实现于用户模式实现130和内核模式实现140两者是需要的,理由有至少两条。首先,内核模式实现140通常包括对适配器150可能的所有操作,这样无用户模式接口120的应用能与适配器150相互作用。考虑到从内核模式切换到用户模式(及从用户模式切换到内核模式)的开销,调用用户模式实现130(对能实现于用户模式的操作)的内核模式实现140通常导致少于最佳性能,特别如此,因为用户模式实现130实现趋向时常出现的操作,诸如收发信息。(也要注意的是,对到达内核模式实现140的应用,从用户模式到内核模式的切换已发生,另一切换随之从内核模式切换回用户模式。)
其次,内核模式实现140通常包括为内核模式特有的操作。这些操作时常使用更基本的操作用来从适配器150收发信息。然而,如上所示,诸如收发信息之类的频繁操作很可能是包括于用户模式实现130中的侯选,以获得避免过程从用户模式转换到内核模式的性能益处。与上述情况相似,在接入用户模式实现130中从内核模式切换到用户模式和从用户模式切换回内核模式的开销导致非最佳性能。
因为用户模式处理和内核模式处理中的差异,给定操作的用户模式实现倾向于不同于内核模式实现。通常,一操作的每个用户模式实现130提供与该操作的对应内核模式实现140同样的函数,但适于用户模式处理。然而,根据本发明,且如关于图2A-2C中所示的示例硬件驱动器模型的较详细的描述,用户模式实现130和内核模式实现140共用一共有接口。(图1中,该共有接口是用户模式实现130和内核模式实现140的部分且未单独示出。)因此,可对一内核模式通信操作和一用户模式通信操作写同一源码。使用同一源码(例如:从一共同源派生的静态库)是一很大的优点:因为需写和测试的程序码较少而减少开发时间、测试时间和编程差错。共有接口也可给开发者提供关于如何基于通过共有接口可供的例程设计软件的有意义的指导。
当然,一些操作为内核模式实现140特有。例如,因为内核负责实施安全,启动和终止对适配器的接入通过内核模式实现140出现。一旦内核模式实现140(在应用110的指导下)向适配器150提供适当的安全参数,适配器150在得到接入时执行相应安全检查,诸如验证接入过程已通过内核模式实现140得到正确认证。
图2A-2C根据本发明说明支持共有用户模式和内核模式操作的单个实现的一示例硬件驱动器模型。InfiniBand应用210A通过用户模式库230A和内核模式微端口驱动器240A接入主信道适配器(“HCA适配器”)。某一通过用户模式库230A(同内核模式微端口驱动器240A形成对比)对HCA适配器280A的接入是可行的,因为InfiniBand表示向适配器卸载某一安全检查和其他处理的硬件体系结构的一例子。启动和终止接入通过内核模式操作得到控制以保证适当的安全级。然而,启动后,频繁通信操作(诸如涉及收发数据的操作)的安全在HCA硬件处得到加强,支持特别快的用户模式接入。例如,如下面关于图2C的较详细的描述,内核模式微端口驱动器240A负责生成和破坏通信队列,而用户模式库230A允许向HCA适配器280A处的通信队列的用户模式数据传送。
InfiniBand应用210A首先调用用户模式InfiniBand库220A,用户模式InfiniBand库220A通过寄存数据库中的规定配置信息知道用户模式库230A。在一种意义上,用户模式库230可认为是用户模式InfiniBand库220A的延展。用户模式库230A为其支持的例程输出众所周知的应用程序接口(“API”)(以分配表的形式)。在一实施例中,用户模式库230A实施为动态链路库(DLL)。尽管不一定需要,InfiniBand的优点多是通过由用户模式库230A提供的内核旁路IO特点实现的。
InfiniBand库220A表示析取的通用HCA设备接口。用户模式库230A的厂家专用库232A将InfiniBand库220A的析取映射到HCA适配器280A的硬件专用操作。如下面较详细的描述,同一厂家专用库作为微端口驱动器240A的厂家专用库242A出现。因此,厂家专用库232A和厂家专用库242A表示(至少部分地)过程模式独立(PMI)HCA IO接入库。
用户模式InfiniBand库220A也通过Hcaport 250A和微端口驱动器240A接入HCA适配器280A。除厂家专用库242A外,微端口驱动器240A还包括内核模式适配器控制和帮助程序函数244A和类代理246A。下面结合图2B提供关于Hcaport 250A、微端口驱动器240A和HCA适配器280A间关系的其他细节。Hcaport 250A也允许从其它内核模式客户270A(例如:使用Hcaport客户API的RNDIS微端口)接入HCA适配器280A。Hcaport 250A启动各种类管理子系统,包括子网管理器262A、连接管理器264A和性能管理器266A。
接下来转到图2B,Hcaport 250B提供析取的通用HCA设备接口。与用户模式库230A的厂家专用库232A相似,微端口驱动器240B和厂家专用库242B将InfiniBand库250B的析取映射到HCA适配器280B的硬件专用操作。如上所示,同一厂家专用PMI库作为微端口驱动器240B的厂家专用库242B和用户模式库230A的厂家专用库232A出现。(内核专用例程在内核模式适配器控制和帮助程序函数244B中实现。)另外,Hcaport 250B为微端口驱动器的类代理246B准备一个环境。
Hcaport 250B建立一操作环境,该操作环境向微端口240B提供操作系统功能,诸如存储分布、寄存接入及端口/寄存器接入。不允许对操作系统的直接调用,以使微端口开发商不受某些设计复杂性的影响,从而促进厂家专用库232A和厂家专用库242B的单一源的目标。Hcaport 250B也串行化微端口驱动器240B要求,这样,微端口开发商不必解决串行化问题。从操作系统的非页面存储池分配存储资源。
值得注意的是,Hcaport 250B支持向InfiniBand客户的InfiniBand资源的管理。与之形成对比的是,微端口驱动器240B不提供InfiniBand资源管理,而是用作Hcaport的管理方法的延伸。微端口驱动器240B使Hcaport 250B对HCA适配器280B的厂家专用操作语义屏蔽。微端口信息结构向Hcaport 250B提供微端口控制/帮助程序和PMI IO接入回叫例程。
图2C示出InfiniBand应用210C通过用户模式InfiniBand库220C和或者有厂家专用库232C的用户模式库230C或者有适配器帮助程序函数244C的Hcaport 250C和微端口240C而接入HCA适配器280C。适配器控制和帮助程序函数解决两个要求。第一要求是通常驱动器意义的HCA适配器280C的通用控制和操作,诸如启动和停止微端口驱动器、IO总线资源分配和管理(IO、存储和中断)、处理即插即用命令及处理电源管理命令。
第二要求涉及支持内核模式帮助程序函数。它们是由微端口执行以提供有序通信资源管理的优先函数,包括:(i)保护域管理,诸如保护域的生成和破坏及按需分配保护域;(ii)翻译和保护表管理,诸如翻译和保护表的生成和破坏以及表目控制和操纵,包括存储区和存储窗口的生成和破坏;(iii)事件请求管理,诸如事件队列的生成和破坏及对来自事件队列的事件的处理;(iv)完成队列管理,诸如完成队列的生成和破坏及完成队列对HCA适配器的绑定和非绑定;(v)工作队列管理,诸如工作队列的生成和破坏、支持对工作队列属性编程及工作队列对HCA适配器的绑定;(vi)地址矢量表管理,诸如地址矢量表的生成和破坏(在一些情况下这可以是保护域管理功能的部分);及(vii)多播支持,诸如多播组的生成和破坏。
过程模式独立库(例如:厂家专用库232C和厂家专用库242B)静态地连接微端口240C和用户模式库230C。如上所述,通过使该库成为共有组件,可减少HCA微端口的开发、维护和测试。通常,PMI库的函数有一或更多传送给它们的上下文专用延伸区。根据处理上下文,为一共同命名的函数调用或映射相应的用户模式或内核模式实现。
PMI厂家专用库提供3个通用类型的功能:(i)保护域/完成域/工作域(PD/CQ/WQ)生成和破坏的用户模式侧,(ii)向分配给用户模式处理的队列对寄存器张贴IQ请求,及(iii)经绑定请求的存储窗口操纵。PD/CQ/WQ生成和破坏支持的PMI例程运行于两步骤过程。第一步骤获取微端口在内核模式下分配队列对所需资源。第二步骤检查结果,且如果请求失败,释放分配给过程的资源。IO请求直接操纵分配的队列对。几乎不对IO请求和存储窗口操纵强加体系结构,因为高带宽和低等待时间倾向于是重要因素。
图3根据本发明示出支持共有用户模式和内核模式操作的单个实现的方法的示例动作。尽管这些动作是以特定顺序描述或拥有的,本发明不必局限于任一特定排序或动作组合。支持相对硬件适配器为内核模式处理和用户模式处理所共有的一或更多操作的单个实现包括定义(310)为内核模式处理和用户模式处理所共有的至少一操作的共有接口的动作;提供(320)对应该名称的所述至少一操作的内核模式实现的动作;提供(330)对应该名称的所述至少一操作的用户模式实现的动作;提供(340)为内核模式处理所特有的一或更多操作的内核模式实现;及映射(350)一或更多共有接口调用到内核模式实现(如果给定过程是内核模式过程)和到用户模式实现(如果给定过程是用户模式过程)。
如下面更详细的讨论,本发明的实施例包括一或更多专用和/或一或更多包括各种计算机硬件的通用计算机。本发明范围内的实施例还包括计算机可读媒介,所述计算机可读媒介传送或有存储于其上的计算机可执行指令或数据结构。这样的计算机可读媒介可以是可由通用或专用计算机接入的可用媒介。作为示例而非限制,这样的计算机可读媒介包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或可用来以计算机可执行指令或数据结构形式传送或存储所需程序码方式且可由通用或专用计算机接入的任一其他媒介。
当信息通过网络或另一通信连接(有线的、无线的或有线无线组合的)传送或提供给计算机,计算机适当地将该连接视作计算机可读媒介。这样,任一这样的连接适当地称为计算机可读媒介。以上的组合也应包括在计算机可读媒介的范围内。计算机可执行指令包括,例如,使通用计算机、专用计算机或专用处理设备执行某一功能或某一组功能的指令和数据。
图4及以下的讨论提供对实施本发明的合适的计算环境的简要的大体的描述。尽管不要求,将在由计算机在网络环境中执行的计算机可执行指令(诸如程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。计算机可执行指令、相关数据结构和程序模块表示用来执行此处所揭示的方法的步骤的程序码方式的例子。这样的可执行指令或相关数据结构的特定序列表示用来实现这样的步骤中所描述的功能的相应动作的例子。
业内人士知道,本发明可实现于有多种计算机系统配置的网络计算环境中,包括个人电脑、手持设备、多处理器系统、基于微处理器或可编程消费电子、网络PC、小型计算机、大型计算机等等。本发明也可执行于分布计算环境,在分布计算环境中任务由通过通信网络链接(通过有线链路、无线链路或有线无线链路的组合)的本地和远程处理设备执行。在分布计算环境中,程序模块可位于本地和远程内存存储设备两者中。
参考图4,用来实现本发明的示例系统包括通常计算机420形式的通用计算设备(包括处理单元421、系统内存422和将包括系统内存422的各种系统组件耦合到处理单元421的系统总线423)。系统总线423是包括内存总线或内存控制器的数个类型的总线结构中的任何一个、周围总线和使用多种总线体系结构中的任一种的本地总线。系统存储器包括只读存储器(ROM)424和随机存取存储器(RAM)425。基本输入输出系统(BIOS)426存储于ROM424中,基本输入输出系统(BIOS)426含有帮助在计算机420的元件间传送信息(诸如在启动期间)的基本例程。
计算机420也可包括用来读自和写到磁盘439的磁硬盘驱动器427、用来读自和写到移动磁盘429的磁盘驱动器428和用来读自和写到移动光盘431(诸如CD-ROM或其他光媒介)的光盘驱动器430。磁硬盘驱动器427、磁盘驱动器428和光盘驱动器430分别通过硬盘驱动器接口432、磁盘驱动器接口433和光驱动器接口434连接系统总线423。驱动器及其相关计算机可读媒介向计算机420提供计算机可执行指令、数据结构、程序模块和其他数据的非易变存储。尽管此处描述的示例环境使用磁硬盘439、移动磁盘429和移动光盘431,可使用用来存储数据的其它类型的计算机可读媒介,包括磁带、闪存卡、数字多用途磁盘、伯努利盒式磁盘、RAM、ROM等等。
包括一或更多程序模块的程序码方式存储于硬盘439、磁盘429、光盘431、ROM424或RAM425之上,包括操作系统435、一或更多应用程序436、其他程序模块437和程序数据438。用户通过键盘440、指示器442或其他输入设备(未示出),诸如麦克风、控制杆、游戏填充器、卫星天线、扫描仪等等向计算机420输入命令和信息。这些和其他输入设备时常通过耦合系统总线423的串行口接口446连接处理单元421。或者,输入设备由其他接口连接,诸如并行口、游戏端口或通用串行总线(USB)。监视器447或另一显示设备通过接口(诸如视频适配器448)也连接系统总线423。除监视器外,个人电脑通常包括其他周围输出设备(未示出),诸如扬声器和打印机。
计算机420工作于使用与一或更多远程计算机(诸如远程计算机449a和449b)的逻辑连接的联网环境中。远程计算机449a和449b可以各是另一个人电脑、服务器、路由器、网络PC、对等设备或其他共有网络节点,且通常包括上面相对计算机420描述的元件中的许多或全部,尽管图4只说明内存存储设备450a和450b及其相关应用程序436a和436b。图4描述的逻辑连接包括局域网(LAN)451和广域网(WAN)452,此处提到它们是示例而非限制。这样的联网环境在办公室范围或企业范围的计算机网、内联网和因特网中是常见的。
当用于LAN联网环境中时,计算机420通过网络接口或适配器453连接本地网451。当用于WAN联网环境中时,计算机420包括调制解调器454、无线链路或其他通过广域网452建立通信的方式(诸如因特网)。调制解调器454(内置或外置)通过串行口接口446连接系统总线423。在联网环境中,相对计算机420描述的程序模块或其部分,存储于远程内存存储设备。可以理解的是,所示网络连接是示例性的,可使用其他通过广域网452建立通信的方式。
可不脱离本发明的精神或基本特点而以其他特别形式实施本发明。所述实施例在所有方面都只是示例性的而非限制性的。因此,本发明的范围由所附权力要求而非前述表示。所有在这些权利要求的等价物的意义和范围内的变化都包括在其范围内。

Claims (15)

1.用于包括一或更多能在(i)相对较少限制内核模式和(ii)相对较多限制用户模式中的至少一个中工作的过程以及能使所述一或更多过程通过通信链路与至少一硬件设备通信的硬件适配器的计算机系统,一种支持相对硬件适配器为内核模式处理和用户模式处理所共有的一或更多操作的单个实现的方法,该方法包括如下动作:
确定为内核模式处理和用户模式处理所共有的至少一操作的公共接口名称;
提供对应该名称的所述至少一操作的内核模式实现;
提供对应该名称的所述至少一操作的用户模式实现;以及
对于给定过程,如果给定过程是内核模式过程,(i)将一或更多公共接口调用映射到内核模式实现,而如果给定过程是用户模式过程,(ii)则将一或更多公共接口调用映射到用户模式,其中,内核模式实现包括比用户模式实现更多的操作,它包括在内核模式实现和用户模式实现之间共有的操作,以及一个或更多所述内核模式实现所特有的附加操作。
2.如权利要求1所述的方法,其特征在于,所述给定过程的内核模式实现和用户模式实现是不同的,尽管执行所述给定过程的内核模式实现的函数操作与执行所述给定过程的用户模式实现的函数操作是相同的。
3.如权利要求1所述的方法,其特征在于,所述内核模式实现包括对硬件适配器可能的所有操作,这样,没有用户模式的应用就能通过所述内核模式实现与所述硬件适配器进行交互。
4.如权利要求1所述的方法,其特征在于,所述至少一操作对应无须切换到内核模式而提供对硬件适配器的用户模式过程的直接接入的通信操作。
5.如权利要求4所述的方法,其特征在于,还包括提供为内核模式处理所特有的一或更多操作的内核模式实现这一动作。
6.如权利要求5所述的方法,其特征在于,所述为内核模式处理所特有的一或更多操作对应通过硬件适配器启动和终止通信的一或更多通信操作,而为内核模式处理和用户模式处理所共有的至少一操作的公共接口对应通过硬件适配器收发信息的通信操作。
7.如权利要求5所述的方法,其特征在于,为内核模式处理所特有的一或更多操作中的至少一个规定要执行的硬件适配器的安全参数。
8.如权利要求1所述的方法,其特征在于,映射出现在执行时间。
9.如权利要求1所述的方法,其特征在于,映射是静态的。
10.如权利要求1所述的方法,其特征在于,硬件适配器是InfiniBand主信道适配器。
11.用于包括一或更多能在(i)相对较少限制内核模式和(ii)相对较多限制用户模式中的至少一个中工作的过程以及能使所述一或更多过程通过通信链路与至少一硬件设备通信的硬件适配器的计算机系统,一种支持相对硬件适配器为内核模式处理和用户模式处理所共有的一或更多操作的单个实现的系统,所述系统包括:
用于确定为内核模式处理和用户模式处理所共有的至少一操作的公共接口名称的装置;
用于提供对应该名称的所述至少一操作的内核模式实现的装置;
用于提供对应该名称的所述至少一操作的用户模式实现的装置;以及
对于给定过程,如果给定过程是内核模式过程,(i)用于将一或更多公共接口调用映射到内核模式实现的装置,而如果给定过程是用户模式过程,(ii)用于将一或更多公共接口调用映射到用户模式的装置,其中,内核模式实现包括比用户模式实现更多的操作,它包括在内核模式实现和用户模式实现之间共有的操作,以及一个或更多所述内核模式实现所特有的附加操作。
12.如权利要求11所述的系统,其特征在于,所述内核模式实现的装置包括对硬件适配器可能的所有操作,这样,没有用户模式的应用就能通过所述内核模式实现的装置与所述硬件适配器进行交互。
13.如权利要求11所述的系统,其特征在于,所述至少一操作对应无须切换到内核模式而提供对硬件适配器的用户模式过程的直接接入的通信操作。
14.如权利要求13所述的系统,其特征在于,还包括用于提供为内核模式处理所特有的一或更多操作的一内核模式实现的装置。
15.如权利要求14所述的系统,其特征在于,为内核模式处理所特有的一或更多操作中的至少一个规定要执行的硬件适配器的安全参数。
CN031452213A 2002-06-26 2003-06-25 独立于过程模式的驱动器模型 Expired - Fee Related CN1470989B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/185,122 2002-06-26
US10/185,122 US7024672B2 (en) 2002-06-26 2002-06-26 Process-mode independent driver model

Publications (2)

Publication Number Publication Date
CN1470989A CN1470989A (zh) 2004-01-28
CN1470989B true CN1470989B (zh) 2010-05-26

Family

ID=29717985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN031452213A Expired - Fee Related CN1470989B (zh) 2002-06-26 2003-06-25 独立于过程模式的驱动器模型

Country Status (14)

Country Link
US (2) US7024672B2 (zh)
EP (1) EP1376372B1 (zh)
JP (1) JP4721627B2 (zh)
KR (1) KR101002489B1 (zh)
CN (1) CN1470989B (zh)
AU (1) AU2003204350B2 (zh)
BR (1) BRPI0302041B1 (zh)
CA (1) CA2428456A1 (zh)
HK (1) HK1058982A1 (zh)
MX (1) MXPA03005366A (zh)
MY (1) MY154679A (zh)
RU (1) RU2327208C2 (zh)
TW (1) TWI292123B (zh)
ZA (1) ZA200303731B (zh)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
CN1270229C (zh) * 2002-12-31 2006-08-16 上海科泰世纪科技有限公司 基于动态内核实现跨地址空间创建构件对象的方法
US20040243783A1 (en) * 2003-05-30 2004-12-02 Zhimin Ding Method and apparatus for multi-mode operation in a semiconductor circuit
EP1522923A3 (fr) * 2003-10-08 2011-06-22 STMicroelectronics SA Architecture de processeur à plusieurs contextes d'exécution simultanés
US7978716B2 (en) * 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
GB0408876D0 (en) 2004-04-21 2004-05-26 Level 5 Networks Ltd User-level stack
US7756594B2 (en) * 2004-06-14 2010-07-13 Microsoft Corporation Systems and methods for parsing flexible audio codec topologies
US7669050B2 (en) * 2004-06-24 2010-02-23 International Business Machines Corporation Method to enable user mode process to operate in a privileged execution mode
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8341649B2 (en) * 2004-07-06 2012-12-25 Wontok, Inc. System and method for handling an event in a computer system
US7765558B2 (en) * 2004-07-06 2010-07-27 Authentium, Inc. System and method for handling an event in a computer system
EP1771979B1 (en) 2004-07-23 2011-11-23 Citrix Systems, Inc. A method and systems for securing remote access to private networks
CA2574776A1 (en) * 2004-07-23 2006-02-02 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US20060041895A1 (en) * 2004-08-04 2006-02-23 Microsoft Corporation Systems and methods for interfacing with codecs across an architecture optimized for audio
US7590065B2 (en) * 2004-08-04 2009-09-15 Microsoft Corporation Equal-opportunity bandwidth regulation
US7706901B2 (en) * 2004-10-01 2010-04-27 Microsoft Corporation Low latency real-time audio streaming
KR101201118B1 (ko) * 2004-11-08 2012-11-13 마이크로소프트 코포레이션 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법
US7721298B2 (en) * 2004-12-03 2010-05-18 Microsoft Corporation Operating system performance
US7810089B2 (en) * 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) * 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US7581051B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Method for delivering interrupts to user mode drivers
US20060265525A1 (en) * 2005-05-23 2006-11-23 Boyd William T System and method for processor queue to linear block address translation using protection table control based on a protection domain
US7502871B2 (en) * 2005-05-23 2009-03-10 International Business Machines Corporation Method for query/modification of linear block address table entries for direct I/O
US7502872B2 (en) * 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7552240B2 (en) * 2005-05-23 2009-06-23 International Business Machines Corporation Method for user space operations for direct I/O between an application instance and an I/O adapter
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
US7464189B2 (en) * 2005-05-23 2008-12-09 International Business Machines Corporation System and method for creation/deletion of linear block address table entries for direct I/O
US20070168567A1 (en) * 2005-08-31 2007-07-19 Boyd William T System and method for file based I/O directly between an application instance and an I/O adapter
US7577761B2 (en) * 2005-08-31 2009-08-18 International Business Machines Corporation Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation
US7657662B2 (en) * 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
US7500071B2 (en) * 2005-08-31 2009-03-03 International Business Machines Corporation Method for out of user space I/O with server authentication
US7634678B2 (en) * 2006-02-07 2009-12-15 Omx Technology Ab Application software initiated speedup
US8954045B2 (en) 2006-09-29 2015-02-10 Qualcomm Incorporated Method and apparatus for managing resources at a wireless device
WO2009151888A2 (en) * 2008-05-19 2009-12-17 Authentium, Inc. Secure virtualization system software
KR100971234B1 (ko) * 2008-07-22 2010-07-21 김기영 이중 피복 금형
US8321874B2 (en) * 2008-09-30 2012-11-27 Microsoft Corporation Intelligent context migration for user mode scheduling
US8473964B2 (en) 2008-09-30 2013-06-25 Microsoft Corporation Transparent user mode scheduling on traditional threading systems
JP4576452B2 (ja) * 2008-11-06 2010-11-10 イーソル株式会社 オペレーティングシステムおよび情報処理装置
US8654134B2 (en) 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
CN101894019B (zh) * 2010-06-12 2014-10-01 中山大学 一种嵌入式Linux操作系统网络加速运行的系统及方法
US9176795B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics processing dispatch from user mode
US9176794B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US8533812B1 (en) * 2011-03-03 2013-09-10 Symantec Corporation Systems and methods for securing access to kernel devices
US20130086558A1 (en) * 2011-09-29 2013-04-04 Microsoft Corporation Testing Program Code in Multiple Process Modes
US8850557B2 (en) 2012-02-29 2014-09-30 International Business Machines Corporation Processor and data processing method with non-hierarchical computer security enhancements for context states
KR101895453B1 (ko) 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
US9405682B2 (en) 2012-06-23 2016-08-02 Microsoft Technology Licensing, Llc Storage device access using unprivileged software code
KR101907486B1 (ko) * 2012-09-14 2018-10-12 한국전자통신연구원 보안성이 우수한 실행환경을 제공하는 이동 컴퓨팅 시스템
US8881176B2 (en) 2013-03-15 2014-11-04 Silicon Graphics International Corp. Block device management
US9158914B2 (en) 2013-04-19 2015-10-13 Crowdstrike, Inc. Executable component injection utilizing hotpatch mechanisms
US9817776B2 (en) 2015-01-19 2017-11-14 Microsoft Technology Licensing, Llc Memory descriptor list caching and pipeline processing
CN105159703B (zh) * 2015-08-04 2018-06-05 广东欧珀移动通信有限公司 恢复出厂设置的方法和系统
US11271870B2 (en) 2016-01-27 2022-03-08 Oracle International Corporation System and method for supporting scalable bit map based P_Key table in a high performance computing environment
US10594627B2 (en) 2016-01-27 2020-03-17 Oracle International Corporation System and method for supporting scalable representation of switch port status in a high performance computing environment
JP6929863B2 (ja) * 2016-08-23 2021-09-01 オラクル・インターナショナル・コーポレイション 高性能コンピューティング環境における高速ハイブリッド再構成をサポートするためのシステムおよび方法
US10560373B2 (en) * 2017-04-06 2020-02-11 Gvbb Holdings S.A.R.L. System and method for timely and uniform distribution for real-time packet transmission
TWI765328B (zh) * 2020-08-27 2022-05-21 技嘉科技股份有限公司 顯示卡的模式切換裝置
EP4036728A1 (fr) * 2021-01-29 2022-08-03 Atos Integration Procédé de diffusion de paquets d'information à une pluralité de destinataires dans un réseau

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205492B1 (en) * 1997-04-04 2001-03-20 Microsoft Corporation Method and computer program product for interconnecting software drivers in kernel mode
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
KR940007680A (ko) * 1992-09-30 1994-04-27 로버트 에이. 에셀만 메모리 할당 요구의 축소 방법 및 시스템
EP0610677A3 (en) 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5584023A (en) * 1993-12-27 1996-12-10 Hsu; Mike S. C. Computer system including a transparent and secure file transform mechanism
EP0701205B1 (en) * 1994-07-22 2003-05-14 Sun Microsystems, Inc. Method and apparatus for space-efficient inter-process communication
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
US5956507A (en) * 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
US6111894A (en) 1997-08-26 2000-08-29 International Business Machines Corporation Hardware interface between a switch adapter and a communications subsystem in a data processing system
US6199181B1 (en) * 1997-09-09 2001-03-06 Perfecto Technologies Ltd. Method and system for maintaining restricted operating environments for application programs or operating systems
US5926775A (en) * 1997-10-08 1999-07-20 National Instruments Corporation Mini driver software architecture for a data acquisition system
US6131163A (en) * 1998-02-17 2000-10-10 Cisco Technology, Inc. Network gateway mechanism having a protocol stack proxy
JPH11249937A (ja) * 1998-02-26 1999-09-17 Nippon Telegr & Teleph Corp <Ntt> コンピュータシステム
US6134567A (en) 1998-06-03 2000-10-17 Hewlett-Packard Company High resolution alphanumeric character generation
US6871350B2 (en) * 1998-12-15 2005-03-22 Microsoft Corporation User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode
US6598169B1 (en) * 1999-07-26 2003-07-22 Microsoft Corporation System and method for accessing information made available by a kernel mode driver
US20020165978A1 (en) * 2001-05-07 2002-11-07 Terence Chui Multi-service optical infiniband router
US7007157B2 (en) * 2001-10-30 2006-02-28 Microsoft Corporation Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205492B1 (en) * 1997-04-04 2001-03-20 Microsoft Corporation Method and computer program product for interconnecting software drivers in kernel mode
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system

Also Published As

Publication number Publication date
BR0302041A (pt) 2004-09-08
EP1376372B1 (en) 2015-09-30
US20040003137A1 (en) 2004-01-01
JP2004054934A (ja) 2004-02-19
TW200402656A (en) 2004-02-16
TWI292123B (en) 2008-01-01
JP4721627B2 (ja) 2011-07-13
RU2327208C2 (ru) 2008-06-20
RU2003119199A (ru) 2005-01-10
US7647496B2 (en) 2010-01-12
AU2003204350A1 (en) 2004-01-22
BRPI0302041B1 (pt) 2016-02-10
HK1058982A1 (zh) 2004-06-11
EP1376372A3 (en) 2008-07-30
EP1376372A2 (en) 2004-01-02
KR20040002683A (ko) 2004-01-07
CN1470989A (zh) 2004-01-28
KR101002489B1 (ko) 2010-12-17
CA2428456A1 (en) 2003-12-26
US7024672B2 (en) 2006-04-04
MY154679A (en) 2015-07-15
US20060123148A1 (en) 2006-06-08
AU2003204350B2 (en) 2009-10-08
MXPA03005366A (es) 2004-01-22
ZA200303731B (en) 2004-01-29

Similar Documents

Publication Publication Date Title
CN1470989B (zh) 独立于过程模式的驱动器模型
US20210058301A1 (en) Extension resource groups of provider network services
CN102571698B (zh) 一种虚拟机访问权限的控制方法、系统及装置
CN1050916C (zh) 在应用程序之间建立通信协议的方法和系统
US7739731B2 (en) Method and apparatus for protection domain based security
EP1282036B1 (en) A system, method and article of manufacture to remotely configure and utilize an emulated device controller via an encrypted communication protocol
US8442958B2 (en) Server change management
US5537543A (en) Electronic mail drive type computer system and file operation method having a mail terminal operating independently of a computer system connected thereto
KR20100056475A (ko) 네트워크 디바이스 프로비져닝 정책을 실행하는 시스템 및 방법
CN103970601B (zh) 执行操作指令方法和装置
US20200159555A1 (en) Provider network service extensions
US7657945B2 (en) Systems and arrangements to adjust resource accessibility based upon usage modes
CN103997502A (zh) 一种基于云计算数据中心安全增强模型的设计方法
US20130179994A1 (en) Dual Trust Architecture
CN108667817A (zh) 报文转换系统和报文转换方法
US20100250960A1 (en) Apparatus, network system, method, and computer program for enabling functions of a plurality of devices
CN101138215A (zh) 在与操作系统无关的环境中的异步网络堆栈操作
US6393494B1 (en) Method, computer program product, and system for managing connection-oriented media
US7165251B2 (en) In-context launch management method, system therefor, and computer-readable storage medium
US6378005B1 (en) Method, computer program product, and system for separating connection management functionality from a connection-oriented device driver
AU3253200A (en) Data processing system providing secure communication between software components
JP2002318700A (ja) 仮想計算機システムの運用管理情報提供制御方法および仮想計算機システム
CN113037747A (zh) 一种构建区域系统能力开放共享生态的实现方法及系统
CN111399982A (zh) 一种支持多环境的命令远程执行装置及方法
CN117319212B (zh) 云环境下多租户隔离的密码资源自动化调度系统及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150528

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150528

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100526

Termination date: 20200625