当前位置: 首页 > 专利查询>微软公司专利>正文

用于数据通信的编程接口制造技术

技术编号:9733458 阅读:123 留言:0更新日期:2014-02-28 18:32
在用于数据通信的编程接口的实施例中,可以从对应于应用的用户模式虚拟存储缓冲器分配请求队列和完成队列。该请求队列和完成队列可以被锁定到物理存储器并且之后被映射到内核模式系统地址,从而使得该请求队列和完成队列可以由内核模式执行线程访问。从应用接收请求以便内核处理该请求队列中的数据,并且向该内核发布系统调用以便内核模式执行线程处理该请求。内核模式执行线程之后可以处理来自该应用的附加请求而无需发布附加的系统调用。

【技术实现步骤摘要】
【国外来华专利技术】用于数据通信的编程接口
技术介绍
目前,连接高性能联网应用与计算设备内核的应用编程接口(API)不能有效地应对联网应用的增加数据处理请求。例如,“WindowsSocket”API(即“Winsock”)被配置成促进由应用发布的操作,以便向与物理网络设备通信的内核层发送数据并且从内核层接收数据。一般地,在套接字(socket)的寿命过程期间发布多次发送和接收操作。因此,作为整体的发送和接收处理开销可以组成网络处理的大半并且有可能组成应用的大半。例如在传统的WinsockAPI中,启动发送和接收操作涉及做系统调用来将用户模式虚拟存储器锁定到物理存储器并且启动数据到内核中的传递。之后典型地需要附加的系统调用来获得传递的完成状态并且将用户模式虚拟存储器从物理存储器中解锁。因此,如果应用一次又一次地使用相同的存储器来发送和接收数据,那么现有的Winsock发送和接收API会招致多余的存储器锁定(pin)和解锁(unpin)。
技术实现思路

技术实现思路
被提供来介绍用于数据通信的编程接口的简化概念,并且这些概念将在下文的具体实施方式中得到进一步的描述和/或在附图中被示出。本
技术实现思路
不应当被看作是描述所要求保护的主题的本质特征,也不是用来确定或限制所要求保护的主题的范围。本文描述了用于数据通信的编程接口。在实施例中,可以从对应于应用的用户模式虚拟存储缓冲器分配请求队列。该请求队列可以被锁定到物理存储器并且之后被映射到内核模式系统地址从而使得内核模式执行线程可以访问该请求队列。可以为内核从应用接收请求来处理该请求队列中的数据,并且为该内核模式执行线程向内核发布(issue)系统调用来处理该请求。该内核模式执行线程之后可以处理来自该应用的附加请求而无需发布附加的系统调用。例如,I/O请求可以是一个系统调用,但是不需要任何存储器锁定开销,并且该I/O的完成将无需任何系统调用开销而发生。可以注册套接字来将数据请求从应用提供到内核。在实施例中,注册套接字包含向该套接字识别完成队列、从用户模式虚拟存储缓冲器分配请求队列,以及将该请求队列锁定到物理存储器。在其它的实施例中,将用户模式虚拟存储缓冲器注册为与应用对应。从该用户模式虚拟存储缓冲器分配完成队列并将该完成队列锁定到物理存储器。之后将该完成队列映射到内核中的内核模式系统地址。该完成队列经由内核模式系统地址接收来自内核模式执行线程的完成通知,并且使得该应用经由用户模式虚拟存储缓冲器能够访问该完成通知而无需任何内核进行用户系统调用的开销。附图说明参考下列附图来描述用于数据通信的编程接口的实施例。在附图中使用相同的数字来标记图中示出的类似特征和组件,其中:图1图示了一个示例计算设备,其中可以实现用于数据通信的编程接口的实施例。图2图示了根据一个或多个实施例,到内核的数据请求的一个示例。图3图示了根据一个或多个实施例,用于数据通信的编程接口的(多个)示例方法。图4图示了根据一个或多个实施例,用于数据通信的编程接口的(多个)附加示例方法。图5图示了可以实现用于数据通信的编程接口的多个实施例的一个示例设备的各种组件。具体实施方式本文描述了一种用于数据通信的编程接口。可以在计算设备的软件中实现“通信栈”来经由网络通信数据。典型的通信栈包含其中实现联网应用的应用层和其中实现操作系统内核的内核层。所述应用层为应用暴露从该通信栈的底层细节中抽象出来的接口。所述内核层与被配置成在网络上通信数据的联网设备交互。典型地,为了在网络上发送数据,应用推送数据通过用户模式应用编程接口(API),之后联网栈对该数据进行处理来构造(frame)用户模式和内核模式二者中的协议。根据本文所述,用户模式指的是一种执行模式,其中对诸如物理存储器和I/O设备之类的系统资源的访问受到操作系统的保护,以便在运行于同一系统中的多个应用之间提供隔离。根据本文所述,内核模式指的是一种执行模式,其中提供对所有系统资源的访问但是仅仅允许操作系统代码的特定部分运行在内核模式中。该数据之后被移动到内核层中的诸如网卡(NIC)之类的联网设备,该联网设备促进数据在网络上的通信。NIC是一种由系统使用来在网络上发送和接收数据的硬件设备。因此,应当指出的是,为了使应用在网络上通信数据,该应用必须首先将数据从应用层传输到内核层。编程接口(比如微软公司的“WindowsSocket”,即“Winsock”)被配置成连接应用层与内核层并且可以被用于促进应用层和内核层之间的数据传递。在传统的WinsockAPI中,启动(initiate)发送和接收操作涉及做系统调用来将用户模式虚拟存储器锁定到物理存储器并且启动数据到内核中的传递。如本文所述,“系统调用”指的是用于用户模式代码向运行在内核模式中的系统代码发布请求的一种机制。这就是用户模式应用如何以受保护的方式获取访问系统资源的权限并且使用系统资源的方式。另外,典型地使用附加的系统调用来得到该传递的完成状态并且之后从物理存储器解锁用户模式虚拟存储器。因此,如果该应用一次又一次地使用相同的存储器来发送和接收数据,那么现有的Winsock发送和接收API将招致多余的存储器锁定和解锁。对内核的系统调用的高频率通常导致内核上沉重的处理负载,该内核也许不能有效地应对高容量的联网数据处理请求,特别是对于联网应用的高速数据处理需求来说更是如此。因此,通信延迟(也被称作等待时间)通常由应用层和内核层之间的数据通信所导致。另外,联网应用在数据通信期间会经历抖动、等待时间的变化。在实施例中,描述了一种与现有通信栈、应用和网络协议兼容的编程接口。在使得能够实现高速数据通信方面的在先尝试已经尝试修改整个通信栈。应该理解本文描述的编程接口可以被实现为现有编程接口的修改,并且不会影响通信栈。该编程接口的实施例通过降低对内核的系统调用的数量,改进了处理器负载,缩短了网络通信的等待时间,并且减少了抖动。该编程接口将用户模式虚拟存储器到物理存储器的锁定和导出同数据传递请求启动和完成处理分离开来。因此,用户模式应用只要注册用户模式虚拟存储缓冲器一次(这可能涉及该存储缓冲器到该物理存储器位置的锁定),之后就可以将所注册的用户模式虚拟存储缓冲器用于多个数据传递请求而无需再注册或解锁该存储缓冲器。通过将数据传递启动和完成与存储器的锁定和解锁分离开来,该编程接口使得能够实现数据传递启动和完成处理而无需做多次系统调用。在实施例中,该编程接口使用请求队列来请求启动并且使用完成队列来用于找回(retrieve)请求完成。该请求队列和完成队列可以从对应于该应用的用户模式虚拟存储缓冲器被分配并且被锁定物理存储器。之后可以将该请求队列和完成队列映射到内核模式系统地址来使得内核模式执行线程能够访问请求队列和完成队列。这种配置使得用户模式应用能够连续将各个请求排队到请求队列中,同时内核模式执行线程(诸如系统线程或中断)连续从该请求队列中排出各个请求来处理各请求。由于在内核模式中完成各个请求,因此内核模式执行线程可以将完成通知排队到到完成队列中。之后用户模式应用可以直接将这些完成通知从完成队列中出列(dequeue)。应当指出的是,之后该编程接口只需要在没有内核模式执行线程已经被指派来处理来自请求队列的已排队请求时发布系统调用。尽管用于数据通信的编程接口的特征和本文档来自技高网...
用于数据通信的编程接口

【技术保护点】
一种计算机实现的方法,包括:注册对应于应用的用户模式虚拟存储缓冲器;从用户模式虚拟存储缓冲器分配完成队列并且将该完成队列锁定到物理存储器;将完成队列映射到内核中的第一内核模式系统地址,该完成队列被配置成经由该内核模式系统地址从内核模式执行线程接收完成通知并且使得该应用能够经由该用户模式虚拟存储缓冲器访问该完成通知;注册被配置成从应用向内核提供数据请求的套接字,所述注册套接字包括:从用户模式虚拟存储缓冲器分配请求队列并且将该请求队列锁定到物理存储器;将请求队列映射到第二内核模式系统地址,该请求队列被配置成经由该用户模式虚拟存储缓冲器从该应用接收数据并且使得内核模式执行线程能够经由第二内核模式系统地址访问该数据;以及向该套接字识别该完成队列。

【技术特征摘要】
【国外来华专利技术】2011.06.23 US 13/167,3111.一种计算机实现的方法,包括:注册对应于应用的用户模式虚拟存储缓冲器;发布系统调用到内核以便内核模式执行线程处理来自该应用的请求;从用户模式虚拟存储缓冲器分配完成队列并且将该完成队列锁定到物理存储器;将完成队列映射到内核中的第一内核模式系统地址,该完成队列被配置成经由该内核模式系统地址从内核模式执行线程接收完成通知并且使得该应用能够经由该用户模式虚拟存储缓冲器访问该完成通知;注册被配置成从应用向内核提供数据请求的套接字,所述注册套接字包括:从用户模式虚拟存储缓冲器分配请求队列并且将该请求队列锁定到物理存储器;将请求队列映射到第二内核模式系统地址,该请求队列被配置成经由该用户模式虚拟存储缓冲器从该应用接收数据并且使得内核模式执行线程能够经由第二内核模式系统地址访问该数据;向该套接字识别该完成队列;以及从应用接收附加请求以便内核模式执行线程处理请求队列中的附加数据,内核模式执行线程处理该附加请求而无需向内核发布附加系统调用。2.根据权利要求1所述的计算机实现的方法,其中所述注册用户模式虚拟存储缓冲器还包括向应用发送该缓冲器的注册识别符。3.根据权利要求2所述的计算机实现的方法,其中注册用户模式虚拟存储缓冲器包括:从该应用接收请求以便内核处理请求队列中的数据...

【专利技术属性】
技术研发人员:ON埃尔图盖KE霍尔顿J尼维尔特
申请(专利权)人:微软公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1