CN103718167A - 用于通过提供对数据的直接访问减少存储器复制开销而改进网络传送的方法、装置和计算机程序产品 - Google Patents
用于通过提供对数据的直接访问减少存储器复制开销而改进网络传送的方法、装置和计算机程序产品 Download PDFInfo
- Publication number
- CN103718167A CN103718167A CN201280037110.4A CN201280037110A CN103718167A CN 103718167 A CN103718167 A CN 103718167A CN 201280037110 A CN201280037110 A CN 201280037110A CN 103718167 A CN103718167 A CN 103718167A
- Authority
- CN
- China
- Prior art keywords
- data
- asked
- equipment
- network
- make
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004590 computer program Methods 0.000 title claims abstract description 35
- 230000015654 memory Effects 0.000 title abstract description 26
- 230000005540 biological transmission Effects 0.000 title description 37
- 230000004044 response Effects 0.000 claims abstract description 23
- 239000000872 buffer Substances 0.000 claims description 18
- 238000004891 communication Methods 0.000 description 72
- 238000010586 diagram Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 238000010295 mobile communication Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 241000264877 Hippospongia communis Species 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于提供经由网络传送数据的有效且可靠的方式的装置可以包括处理器以及存储可执行的计算机代码的存储器,该可执行计算机代码使得该装置至少执行包括从设备接收针对数据的请求并且使得能够向网络栈提供信息的操作。该信息可以包括指示所请求的数据的位置以便由网络栈或网络驱动器响应于该请求的接收而直接访问。该计算机程序代码可以进一步使得该装置至少部分地基于所指示的所请求的数据的位置而使得能够将所请求的数据提供至网络驱动器、或者使得网络驱动器能够获取所请求的数据。还提供了对应的方法和计算机程序产品。
Description
技术领域
本发明的示例实施例总体上涉及无线和/或有线通信技术,并且更具体地,涉及用于促进经由(多个)网络向一个或多个设备传送数据的有效并且可靠的机制的装置、方法和计算机程序产品。
背景技术
现代通信时代已经带来了有线和无线网络的迅猛发展。计算机网络、电视网络和电话网络在消费者需求的驱动下正在经历着前所未有的技术扩展。无线和移动联网技术已经解决了相关的消费者需求,同时提供更为灵活且迅捷的信息传送。
当前和未来的联网技术继续促进针对用户的信息传送便利和便捷性。由于电子通信设备目前的普遍属性,所有年龄和教育水平的人们都在使用电子设备来与其它个人或联系人进行通信,接收和/或分享信息、媒体和其它内容。其中需要提高信息传送便利性的一个领域涉及用于通过网络传送大量数据的服务。
例如,目前通过网络传输诸如编码视频、相片、运动图像专家组(MPEG)MPEG-2音频层III(MP3)文件和帧缓冲数据之类的大量数据是十分普遍的。通过网络传送的大量数据的一个示例涉及虚拟网络计算(VNC)数据。目前,VNC通常使得能够从一台计算机向另一台计算机远程共享图形桌面。例如,VNC可以通过网络将图形屏幕更新从一台计算机中继到另一台计算机。就此而言,VNC通常可以被用来将VNC服务器的用户界面复制到VNC客户端的显示器。为了实现所期望的用户体验,VNC服务器通常需要以高的帧速率将整个帧缓冲器传送到VNC客户端。从VNC服务器向VNC客户端传输大量数据通常消耗很多计算资源。然而,由于VNC服务器消耗的处理负载越多、前台应用所能够利用的处理能力就越少,所以使得最小化可能由NVC服务器所导致的处理负载可能是有利的。
通过网络传送大量数据的另一个示例涉及通用即插即用(UPnP)数据。就此而言,UPnP媒体服务器可以被用来向UPnP客户端分享并提供诸如音乐和视频之类的媒体。目前,UPnP媒体服务器支持诸如移动电话之类的设备,并且正在更有利地变成在不消耗大量处理能力的情况下支持这样的设备,以便减少对正在系统中执行的现有软件的不利影响。
通过网络传送大量数据的另外的示例可以涉及到流传送数据。例如,同时流传送多个视频的web服务器可能需要跨网络传送大量数据。如果每个流导致过多的处理能力被消耗,则处理负载会限制服务器可以能够支持的流的最大数量。然而,减少处理负载会产生更好的用户体验或者会增加给定服务器的总体能力,因为通过网络传送的大量数据通常消耗很多功率。
例如,以高帧速率传输的用户界面帧数据或大的媒体文件可能消耗很多中央处理器(CPU)功率,诸如例如通过VNC发送30fps的视频图形阵列(VGA)数据可能产生36.9MB/s的数据业务,这会导致大于24,500个以太网分组。使用基于软件的传输控制协议(TCP)和互联网协议(IP)(TCP/IP)栈处理这样大量的分组可能会是挑战,特别是对于处理能力有限的移动系统而言。当要在后台中进行这样的传输同时并不影响前台应用时,该问题会变得凸显。例如,在后台执行的VNC服务器或UPnP媒体服务器的CPU消耗应当被最小化,以避免影响到正在执行的前台应用。
通过TCP/IP栈的单纯数据传输通常涉及到将数据至少一次地从核心空间复制到后台服务器,并且随后该数据通常再次被复制到TCP/IP栈。由于大量数据被复制和传送,所以会消耗大量的处理能力。
考虑到以上缺陷,提供一种可以减少用于数据传送的计算资源数量的跨网络传送大量数据的更为有效且可靠的机制会是有利的。
发明内容
因此,提供了一种支持经由网络传送数据的有效且可靠的方式的方法、装置和计算机程序产品。本发明的示例实施例可以减少与经由网络向一个或多个设备传输大量数据相关联的存储器复制开销。就此而言,一些示例实施例可以向设备通知所请求的数据可以存储于其中的装置的位置并且可以使得该设备能够获取数据而无需在每个数据获取实例中复制所获取的数据,以便将所请求的数据传送至一个或多个请求设备。
示例实施例还可以使得能够在网络驱动器可以提供在对所请求的数据的直接访问的情况下完全去除存储器复制。一些示例实施例可以通知设备由一个或多个请求设备所请求的数据的位置,并且因此在获取数据以便进行传送时所涉及的一个或多个设备可以直接从该位置访问所请求的数据,这可以在将所请求的数据传送至请求设备之前使得所请求的数据的副本数量最小化。通过使得支持所请求的数据的传送所需要的副本数量最小化,一些示例实施例可以保存装置(例如,移动设备,例如移动电话等)的处理和/或存储器能力。
在一个示例实施例中,提供了一种使得能够经由网络传送数据的方法。该方法可以包括从设备接收针对数据的请求,并且使得能够向网络栈提供信息。该信息可以包括指示所请求的数据的位置的内容以便由网络栈或网络驱动器响应于该请求的接收而直接访问。该方法可以进一步包括使得能够将所请求的数据提供至网络驱动器,或者使得网络驱动器能够获取所请求的数据。所请求的数据的提供可以至少部分地基于所指示的所请求的数据的位置。
在另一个示例实施例中,提供了一种使得能够经由网络传送数据的装置。该装置可以包括处理器以及包括计算机程序代码的存储器。该存储器和计算机程序代码被配置为与该处理器一起使得该装置至少执行包括从设备接收针对数据的请求并且使得能够向网络栈提供信息的操作。该信息可以包括指示所请求的数据的位置以便由网络栈或网络驱动器响应于该请求的接收而直接访问。该计算机程序代码可以进一步使得该装置使得能够将所请求的数据提供至网络驱动器,或者使得网络驱动器能够获取所请求的数据。所请求的数据的提供可以至少部分地基于所指示的所请求的数据的位置。
在另一个示例实施例中,提供了一种使得能够经由网络传送数据的计算机程序产品。该计算机程序产品包括至少一个具有存储于其中的计算机可执行程序代码部分的计算机可读存储介质。该计算机可执行程序代码指令可以包括被配置为促进从设备接收针对数据的请求并且使得能够向网络栈提供信息的程序代码指令。该信息可以包括指示所请求的数据的位置以便由网络栈或网络驱动器响应于该请求的接收而直接访问。该程序代码指令还可以被配置为使得能够将所请求的数据提供至网络驱动器,或者使得网络驱动器能够获取所请求的数据。所请求的数据的提供可以至少部分地基于所指示的所请求的数据的位置。
本发明的示例实施例由于设备可以更有效且可靠地促进向请求设备传送数据从而可以提供更好的用户体验。作为结果,该设备可以保存处理和/或存储器资源并且可以基于所保存的资源而利用有所提高的能力来执行。
附图说明
由此已经在总体上对本发明进行了描述,现在将参考附图,其并非必然依比例进行绘制,并且其中:
图1A是图示向设备传输数据的VNC服务器的机制的图;
图1B是图示向设备传输数据的HTTP服务器的机制的图;
图2是根据本发明的示例实施例的系统的示意性框图;
图3是根据本发明的示例实施例的装置的示意性框图;
图4A是根据本发明的示例实施例的一体化内核系统的示意性框图;
图4B是根据本发明的示例实施例的微内核系统的示意性框图;
图5是根据本发明的示例实施例的通信设备的示意性框图;
图6是根据本发明的示例实施例的使得能够经由网络传送数据的装置的示意性框图;
图7A&7B是根据本发明的示例实施例的用于传输指示所请求的数据的位置的直接访问信息的分组的图;
图8A&8B是根据本发明的示例实施例的用于传输指示所请求的数据的位置的直接访问信息的备选分组的图;
图9是根据本发明的示例实施例的使得能够经由网络传送数据的装置的示意性框图;
图10是根据本发明的示例实施例的使得能够经由网络传送数据的装置的示意性框图;以及
图11图示了根据本发明的示例实施例的使得能够经由网络传送数据的流程图。
具体实施方式
下文将参考附图对本发明的一些实施例进行更为全面地描述,附图中示出了本发明的一些而非全部实施例。实际上,本发明的各个实施例可以以许多不同方式来实现,而并不应当被理解为局限于本文所给出的实施例;相反,提供这些实施例以便本公开内容满足可用的法律要求。相同的附图标记通篇指代相同元素。如这里所使用的,术语“数据”、“内容”、“信息”以及类似术语可以互换地使用以指代能够依据本发明的实施例而被传输、接收和/或存储的数据。因此,使用任何这样的术语并不应当被理解为对本发明实施例的精神和范围进行限制。
如这里所使用的,术语“电路系统”是指(a)仅硬件的电路实施方式(例如,仅以模拟电路系统和/或数字电路系统的实施方式);(b)电路和(多个)计算机程序产品的组合,该计算机程序产品包括存储在一个或多个计算机可读存储器上的共同工作以使得装置执行这里所描述的一个或多个功能的软件和/或固件指令;以及(c)电路,例如,(多个)微处理器或(多个)微处理器的一部分,其需要软件或固件以进行操作,即使软件或固件并非物理存在。“电路系统”的这个定义应用于该术语在本文、包括任意权利要求的所有使用。作为进一步的示例,如这里所使用的,术语“电路系统”还将包括包含一个或多个处理器和/或其(多个)部分并且伴随有件和/或固件的实施方式。作为另一个示例,如这里所使用的术语“电路系统”例如还包括移动电话中的基带集成电路或应用处理器集成电路,或者蜂窝网络设备、其它网络设备和/或其它计算设备中类似的集成电路。
如这里所定义的,指代非瞬时物理存储介质(例如,易失性或非易失性存储器设备)的“计算机可读存储介质”可以与指代电磁信号的“计算机可读传输介质”有所不同。
现在参考图1A,提供了使得能够复制和传送数据的VNC服务器的示意性框图。在图1A中,客户端设备可以向常规VNC服务器发送针对显示数据的请求。就此而言,VNC服务器可以从设备驱动器请求对应的数据并且该设备驱动器通常复制所请求的显示数据并且将其发送至VNC服务器。参见操作1。当从显示驱动器接收到所复制的显示数据时,常规VNC服务器通常制作所接收的显示数据的另一个副本(例如,第二副本)并且将显示数据的该副本发送至TCPIP栈。参见操作2。TCP IP栈可以制作所显示的数据的另一个副本(例如,第三副本)并且可以将所显示数据的这个副本发送至网络驱动器。参见操作3。网络驱动器通常将所接收的显示数据的副本发送至请求客户端设备。这样,现有的VNC服务器可能需要对相同显示数据进行多达三次的复制以便发送至客户端设备。这样的现有VNC服务器可能是低效的并且可能比所期望的消耗更多的处理和存储器资源。
现在参考图1B,提供了使得能够复制和传送媒体数据的超文本传输协议(HTTP)服务器的示意性框图。在图1B中,客户端设备可以向常规HTTP服务器发送针对媒体文件的请求。就此而言,该请求可以经由TCP IP栈被接收并且经由HTTP GET请求而被发送至HTTP服务器。参见操作1。就此而言,HTTP服务器可以从文件系统请求对应的媒体文件并且该文件系统可以读取对应的媒体文件并且制作可能被发送至HTTP服务器的所读取的媒体文件的副本(例如,第一副本)。参见操作2。此后,常规HTTP服务器通常制作先前所复制的媒体文件的另一个副本(例如,第二副本)并且将所复制的媒体文件发送至TCP IP栈。参见操作3。TCP IP栈可以将从HTTP服务器接收的复制媒体文件发送至网络设备。参见操作4。该网络设备可以将所复制的媒体文件发送至请求客户端设备。在一些情况下,TCP IP栈还会复制从HTTP服务器接收的媒体文件并且随后将所复制的媒体文件(例如,第三副本)发送至网络驱动器以便发送至请求客户端设备。这样,现有的HTTP服务器可能生成相同媒体数据的多达三次的副本以便发送至客户端设备。就此而言,现有HTTP服务器在向请求客户端设备提供媒体数据时通常是低效的并且可能比所期望的消耗更多的处理和存储器资源。
图2图示了一般系统图,其中在根据一些示例实施例的通信环境中示出了诸如移动终端10的设备。如图2所示,依据一些示例实施例的系统可以包括能够经由网络30互相通信的第一通信设备(例如,移动终端10)和第二通信设备20。在一些情况下,本发明的实施例可以进一步包括一个或多个另外的通信设备,其中之一在图2中被描绘为第三通信设备25。在一些实施例中,并非所有采用本发明实施例的系统都可以包括本文所图示和/或描述的所有设备。虽然可以出于示例的目的而图示并随后描述移动终端10和/或第二和第三通信设备20和25的示例实施例,其他类型的终端、诸如便携式数字助理(PDA)、传呼机、移动电视、移动电话、游戏设备、笔记本计算机、相机、视频录影机、音频/视频播放器、收音机、全球定位系统(GPS)和/或全球导航卫星系统(GLONASS)设备、蓝牙耳机、通用串行总线(USB)设备或者前面所提到的任何组合,以及其它类型的语音和文本通信系统可以轻易采用本发明的实施例。此外,诸如服务器和个人计算机之类的非移动的设备也可以轻易采用本发明的实施例。
网络30可以包括可以经由对应的有线和/或无线接口互相通信的各种不同节点(其中第二和第三通信设备20和25可以作为示例)、设备或功能的集合。这样,图2的图示应当被理解为是系统的某些元素的宽泛视图的示例而并非是系统或网络30的无所不包或详细的视图。根据一些示例实施例,网络30可以能够支持依据多种第一代(1G)、第二代(2G)、2.5G、第三代(3G)、3.5G、3.9G、第四代(4G)移动通信协议、长期演进(LTE)或演进型通用陆地无线电接入网络(E-UTRAN)、LTE内的自优化/组织网络(SON)、无线电接入技术(RAT)间的网络等中的任意一个或多个的通信。根据一些示例实施例,网络30可以是点对点(P2P)网络。
诸如移动终端10以及第二和第三通信设备20和25的一个或多个通信终端可以经由网络30互相通信,并且各自均可以包括用于向一个或多个基本站点传输信号以及从一个或多个基本站点接收信号的一个或多个天线。该基本站点例如可以是作为一个或多个蜂窝或移动网络的一部分的一个或多个基站(BS)、或者是可以耦合至数据网络的一个或多个接入点(AP),该数据网络诸如局域网(LAN)、无线局域网(WLAN)、Wi-Fi网络、城域网(MAN)和/或诸如互联网的广域网(WAN)。进而,诸如处理器元件(例如,个人计算机、服务器计算机等)的其它设备可以经由网络30耦合至移动终端10以及第二和第三通信设备20和25。通过将移动终端10与第二和第三通信设备20和25(和/或其它设备)直接地或间接地连接到网络30,使得移动终端10与第二和第三通信设备20和25可以能够与其它设备通信或者互相进行通信。例如,移动终端10与第二和第三通信设备20和25以及其它设备可以根据包括超文本传输协议(HTTP)等的多种通信协议互相进行通信,由此分别执行移动终端10与第二和第三通信设备20和25的各种通信或者其它功能。
此外,移动终端10与第二和第三通信设备20和25例如可以依据通用串行总线(USB)、射频(RF)、蜂窝、近场通信(NFC)、蓝牙(BT)、红外(IR)或任意多种不同有线或无线通信技术进行通信,包括局域网(LAN)、无线LAN(WLAN)、全球微波接入互操作性(WiMAX)、无线高保真(Wi-Fi)、超宽带(UWB)、Wibree技术等。这样,可以使得移动终端10与第二和第三通信设备20和25可以能够通过多种不同访问机制中的任意机制与网络360通信以及互相进行通信。例如,诸如宽带码分多址(W-CDMA)、CDMA2000、全球移动通信系统(GSM)、通用分组无线服务(GPRS)等的移动访问机制可以得到支持,诸如WLAN、WiMAX等的无线访问机制和诸如数字用户线路(DSL)、有线调制解调器、以太网等的固定访问机制等也可以得到支持。
根据一些示例实施例,第一通信设备(例如,移动终端10)可以是移动通信设备,诸如例如无线电话或其它设备,诸如个人数字助理(PDA)、移动计算设备、相机、视频录影机、音频/视频播放器、定位设备、游戏设备、电视设备、无线电设备或者各种其它类似设备或其组合。第二通信设备20和第三通信设备25可以是移动或固定通信设备。然而,在一个示例中,第二通信设备20和第三通信设备25可以是服务器、远程计算机或者诸如个人计算机(PC)或笔记本计算机之类的终端。
根据一些示例实施例,网络30可以是被部署为智能空间的adhoc网络或分布式网络。因此,设备可以进入和/或离开网络30并且网络30的设备可以能够基于其它设备的进入和/或离开而调节操作以考虑到相应设备或节点及其对应能力的增加或减少。
根据一些示例实施例,移动终端以及第二和第三通信设备20和25可以采用能够根据本发明的示例实施例进行工作的装置(例如,图3的装置)。在一些示例实施例中,第二和第三通信设备20和25可以是客户端设备(例如,图5的通信设备90),但是并非需要如此。通信设备20和25可以从移动终端10和/或互相请求数据。
图3图示了根据一些示例实施例的支持经由(多个)网络传送数据的有效且可靠的方式的装置的示意性框图。现在将参考图3对本发明的一些示例实施例进行描述,其中显示了装置50的某些元件。图3的装置50例如可以在移动终端10(和/或第二通信设备20或第三通信设备25)上被采用。备选地,装置50可以被体现在网络30的网络设备上。然而,装置50可以备选地被体现在移动和固定的各种其它设备(例如,以上所列出的任意设备)处。在一些情况下,实施例可以在设备的组合上得以被采用。因此,本发明的一些实施例可以整体被体现在单个设备(例如,移动终端10)处实现,由多个设备以分布式方式(例如,在P2P网络中的一个或多个设备上)来体现,或者由处于客户端/服务器关系的设备来实现。此外,应当注意的是,以下所描述的设备或元件可以并非是强制性的并且因此其中的设备或元件一些可以在一些实施例中被省略。
现在参考图3,装置50可以包括处理器70、用户接口67、通信接口74、存储器76、显示器85、(多个)可选文件系统71、(多个)可选显示驱动器73、应用模块78、网络栈75、(多个)可选媒体驱动器77、(多个)网络驱动器79以及主机操作系统87,或者以其它方式与它们进行通信。例如,OS87可以对活动进行协调以便使得能够向一个或多个设备传送数据。在一个示例实施例中,OS87可以包括一体化内核架构(例如,图4A的一体化内核架构)。在另一个备选示例实施例中,OS87可以包括微内核架构(例如,图4B的微内核架构)。根据一些示例实施例,显示器85可以是触摸屏显示器。存储器设备76例如可以包括易失性和/或非易失性存储器。例如,存储器设备76可以是电子存储设备(例如,计算机可读存储介质),其包括被配置为存储可由机器(例如,如处理器70的计算设备)所获取的数据(例如,比特)的门电路。在一些实施例中,存储器设备76可以是并非瞬时的有形存储器设备。存储器设备76可以被配置为存储信息、数据、文件、应用(例如,Web应用(例如,超文本传输协议(HTTP)应用等))、指令等以使得该装置能够依据本发明的示例实施例执行各种功能。例如,存储器设备76可以被配置为缓冲由处理器70所处理的输入数据。除此之外或备选地,存储器设备76可以被配置为存储由处理器70执行的指令。作为又另一种备选方式,存储器设备76可以是存储信息和/或媒体内容(例如,图片、视频、桌面的图形图像等)的多个数据库之一。
根据一些示例实施例,装置50可以是移动终端(例如,移动终端10)或者被配置为采用本发明的示例实施例的固定通信设备或者计算设备。根据一些示例实施例,装置50可以被实现为芯片或芯片组。换句话说,装置50可以包括一个或多个物理封装(例如,芯片),其包括结构组件(例如,基板)上的材料、部件和/或连线。该结构组件可以为其上所包括的部件电路系统提供物理强度、尺寸保持和/或电交互限制。因此,装置50在一些情况下可以被配置为在单个芯片上实施本发明的实施例或者将其实施为单个“片上系统”。这样,在一些实施例中,芯片或芯片组可以构成执行用于提供这里所描述的一种或多种功能的一个或多个操作的器件。除此之外或备选地,芯片或芯片组可以构成用于使得用户接口能够关于这里所描述的功能和/或服务进行导航的器件。
处理器70可以以多种不同方式来实现。例如,处理器70可以被实现为诸如协同处理器、微处理器、控制器、数字信号处理器(DSP)、具有或不具有所附DSP的处理电路之类的各种处理器件中的一个或多个,或者包括集成电路的各种其它处理设备,该集成电路例如ASIC(应用特定集成电路)、FPGA(现场可编程门阵列)、微控制器单元(MCU)、硬件加速器、专用计算机芯片等。在一些示例实施例中,处理器70可以被配置为执行存储器设备76中所存储或者处理器可以以其它方式所访问的指令。这样,无论是以硬件或软件方法还是其组合进行配置,处理器70都可以表示在被相应配置的同时能够执行根据本发明实施例的操作的实体(例如,以电路物理实现)。因此,例如,当处理器70被实现为ASIC、FPGA等时,处理器70可以是用于进行这里所描述的操作的特殊配置的硬件。备选地,作为另一个示例,当处理器70被实现为软件指令的执行器时,该指令可以对处理器进行特殊配置以在该指令被执行时实施这里所描述的算法和/或操作。然而,在一些情况下,处理器70可以是适于通过用于执行这里所描述的算法和操作的指令而以处理器70另外的配置来采用本发明示例性实施例的处理器或具体设备(例如,移动终端或网络设备)。除了其它之外,处理器70还可以包括被配置为支持处理器70的操作的时钟、算术逻辑单元(ALU)和逻辑门。
在一些示例实施例中,处理器70可以被配置为对诸如浏览器(例如,Web浏览器)等的连接程序进行操作。就此而言,该连接程序可使得装置50例如能够根据无线应用协议(WAP)(例如,HTML应用协议)传输和接收Web内容,例如基于位置的内容或其它适当内容(例如,应用)。
通信接口74可以是诸如以硬件、软件或者硬件和软件的组合所实现的设备或电路的任意器件,其被配置为往来于网络和/或与装置50进行通信的其它设备或模块接收和/或传输数据。就此而言,通信接口74例如可以包括天线(或多个天线)以及用于使得能够与无线通信网络(例如,网络30)进行通信的支持硬件和/或软件。在固定环境中,通信接口74可以备选地或者还可以支持有线通信。这样,通信接口74可以包括通信调制解调器和/或用于支持经由线缆、数字用户线缆(DSL)、通用串行总线(USB)、以太网、高清多媒体接口(HDMI)或其它机制的通信的其它硬件/软件。
用户接口67可以与处理器70进行通信以在用户接口67处接收用户输入的指示和/或向用户提供听觉、视觉、机械或其它输出。这样,用户接口67可以包括例如键盘、鼠标、操纵杆、显示器、触摸屏、麦克风、扬声器或者其它输入/输出机制。在装置被实现为服务器或一些其它网络设备的示例实施例中,用户接口67可以是受限的、远程定位的或者被去除。处理器70可以包括被配置为对用户接口的一个或多个元件的至少一些功能进行控制的用户接口电路系统,上述用户接口例如扬声器、振铃器、麦克风、显示器等。处理器70和/或包括处理器70的用户接口电路系统可以被配置为通过存储在处理器70可访问的存储器(例如,存储器设备76等)上的计算机程序指令(例如,软件和/或固件)来控制用户接口的一个或多个元件的一个或多个功能。
(多个)文件系统71可以是或者包括用于存储和组织可由应用模块78、处理器70和/或OS87所获取的数据、文件(例如,媒体文件)、文件夹等的集合的存储器(例如,易失性和/或非易失性存储器)、数据库等。在一个示例实施例中,(多个)文件系统71可以存储在存储器设备76中。(多个)显示驱动器73可以是诸如以硬件或者硬件和软件的组合所实现的设备或电路的任意器件,其被配置为使得应用能够与如这里所描述的例如显示器的硬件设备进行交互。在一个示例实施例中,显示驱动器73可以是用于(多个)视频卡的图形驱动器。显示驱动器73可以将数据(例如,桌面的图形平面、其它显示数据等)存储在帧缓冲器中以便进行显示(例如,经由显示器85或者任意其它显示器(例如,通信设备的外部显示器))。该帧缓冲器可以是可以从存储一个或多个数据帧(例如,一个或多个图像、视频数据等)的存储器缓冲器(例如,存储器设备76)驱动显示的视频输出设备,但并非需要如此。
网络栈75例如可以对应于用于使得能够跨网络(例如,网络30(例如,互联网))进行通信的一组通信协议(例如,传输控制协议(TCP)和互联网协议(IP)(TCP/IP))。(多个)媒体驱动器77可以是用于存储媒体文件以及任意其它适当文件的硬盘存储器。在一个示例实施例中,对应于(多个)媒体驱动器77的硬盘存储器可以被存储在存储器设备76中。(多个)网络驱动器79可以是诸如以硬件或者硬件和软件的组合所实现的设备或电路的器件,其被配置为如这里所描述的激活通过网络进行的数据传输和接收。
在一些示例实施例中,处理器70可以被实现为、可以包括或者以其它方式控制应用模块78。应用模块78可以是诸如依据软件进行操作或者以其它方式以硬件或者硬件和软件的组合所实现的诸如设备或电路系统的任意器件(例如,在软件控制下进行操作的处理器70、被实现为被特别配置为执行这里所描述的操作的ASIC或FPGA的处理器70,或者其组合),由此对设备或电路进行配置以执行如以上所描述的应用模块78的相对应功能。因此,在采用软件的示例中,执行软件的设备或电路(例如,一个示例中的处理器70)形成与这样的器件相关联的结构。
在示例实施例中,应用模块78被配置为作为服务器进行操作/工作并且可以促进针对(例如,经由网络)从一个或多个设备所接收的数据的一个或多个请求。在一个示例实施例中,应用模块78可以作为web服务器(例如,HTTP服务器)进行操作,其被配置为输送可以由一个或多个设备所请求的网页、媒体文件、文档(例如,web文档(例如,HTML文档))、图像、视频等。应用模块78可以跨网络(例如,网络30(例如,互联网))向一个或多个设备输送所请求的数据。
在另一个备选示例实施例中,应用模块78可以被配置为作为VNC服务器进行操作/工作。就此而言,应用模块78可以促进一个或多个数据项(例如,图形项目(例如,桌面项目))的共享、在互相远离的设备之间从另一设备(例如,用户的家庭计算机等)访问一个设备(例如,工作计算机)上的文件。就此而言,响应于从一个或多个设备接收到针对一个或多个项目的请求,应用模块78可以通过网络将对应的(多个)项目(例如,显示器的图形屏幕)发送至请求设备。
在示例实施例中,应用模块78可以部分地基于经由与所请求的数据的位置相关的网络栈75直接读取数据,使得能够向一个或多个设备传送数目减少的数据的存储器副本。就此而言,不同于向网络栈75发送复制数据,应用模块78可以将指定所请求的对应数据的位置的信息提供至网络栈75,并且如以下更为全面描述地,网络栈75可以复制对应的数据以便经由网络驱动器79发送至请求设备,但并非需要如此。以这种方式,应用模块78可以减少用于经由网络向设备发送所请求的数据的副本数量,并且例如可以保存处理器70的处理资源而且还可以保存一个或多个存储器设备(例如,存储器设备76)的存储器容量。
现在参考图4A和4B,提供了根据一些示例实施例的操作系统的图。在图4A的示例实施例中,提供了根据示例实施例的一体化内核架构。就此而言,内核(例如,主机OS87)和用户空间可以被划分并且网络栈(例如,网络栈75(例如,TCP/IP栈))和(多个)文件系统(例如,(多个)文件系统71)可以属于内核空间。在图4B的示例实施例中,提供了根据示例实施例的所划分的微内核架构(例如,主机OS87)。在图4B的示例实施例中,网络栈(例如,网络栈75(例如,TCP/IP栈))和(多个)文件系统(例如,(多个)文件系统71)可以属于用户空间。
在图4A和4B的示例实施例中,(多个)应用(例如,应用模块78)可以包括但并不局限于服务器,例如VNC服务器、web服务器(例如,HTTP服务器等)或者可以在用户空间中执行的任意其它适当设备,而硬件访问可以通过执行(例如,经由处理器70执行一个或多个设备驱动器(例如,(多个)显示驱动器(例如,(多个)显示驱动器73)、(多个)媒体驱动器(例如,(多个)媒体驱动器77)、(多个)网络驱动器(例如,(多个)网络驱动器79)等)而在内核空间中执行。
在图4A的示例实施例中,处理器(例如,处理器70)和/或在用户空间中执行的(多个)应用(例如,应用模块78)可以部分地基于与网络栈以及在内核空间中执行的(多个)文件系统的通信,而促进数据的一个或多个副本经由网络进行传送。另一方面,在图4B的示例实施例中,在用户空间中执行的(多个)应用(例如,应用模块78)可以部分地基于与网络栈以及同样在用户空间中执行的(多个)文件系统进行通信以及使得能够与内核空间中执行的一个或多个驱动器(例如,(多个)网络驱动器、(多个)媒体驱动器、(多个)显示驱动器、其它驱动器等)进行通信,而促进数据的副本经由网络进行传送。
现在参考图5,提供了通信设备的示例实施例的框图。如图5所示,通信设备90(例如,网络设备(例如,服务器)、个人计算机、笔记本计算机、无线电话、移动电话等)通常包括处理器94和相关联的存储器96。存储器96可以包括易失性和/或非易失性存储器,并且可以存储内容、数据等。存储器96可以存储客户端应用、指令等以便处理器94执行通信设备90的各种操作。
处理器94可以连接至至少一个通信接口98或其它器件以便显示、传输和/或接收数据、内容等。用户输入接口95可以包括允许网络实体从用户接收数据的多个设备中的任意设备,诸如键盘、触摸屏91、操纵杆或其它输入设备。就此而言,处理器94可以包括被配置为至少控制用户输入界面的一个或多个元素的至少一些功能的用户接口电路系统。处理器和/或处理器的用户接口电路系统可以被配置为通过存储在可由处理器所访问的存储器(例如,易失性存储器、非易失性存储器等)上的计算机程序指令(例如,软件和/或固件)来控制用户界面的一个或多个元素的一个或多个功能。在示例实施例中,处理器94可以促进与一个或多个设备(例如,装置50)的一种或多种通信。就此而言,处理器94可以针对数据(例如,VNC数据(例如,显示器的图形项)、媒体文件等)生成一个或多个请求,该请求可以被发送至一个或多个装置50。响应于该请求的接收,应用模块78和/或处理器70可以促进获取所请求的数据以便发送至通信设备90。
现在参考图6,提供了图示根据示例实施例的用于经由网络传送数据的有效且可靠的方式的图。在图6的示例实施例中,装置50可以从例如通信设备90的设备接收针对数据的请求。在该示例实施例中,所请求的数据可以涉及VNC数据,但并非需要如此。例如,该请求可以涉及针对另一个设备(例如,另一个通信设备90)的图形显示的请求。然而,应当指出的是,所请求的数据可以对应于任意适当数据(例如,媒体文件、图像、视频数据、音频数据等)而并不局限于VNC数据。应用模块78例如可以作为VNC服务器进行工作和/或操作。就此而言,响应于该请求的接收,应用模块78可以识别所请求的数据(例如,VNC数据(例如,另一设备的图形显示))的位置并且可以向网络栈75发送指示所请求的数据的位置的消息(在本文中也被称作帧缓冲器信息)。参见操作600。应用模块78所生成的消息还可以包括指示数据大小的数据并且可以指示请求该数据的设备(例如,通信设备90)。此外,该消息可以包括指导网络栈75从该位置获得所请求的数据以便发送至请求设备(例如,通信设备90)的数据。
响应于来自应用模块78的消息的接收,网络栈75(例如,TCP/IP栈)可以从(多个)显示驱动器73的帧缓冲器(或者与(多个)显示驱动器73相关联的帧缓冲器)获得所请求的数据。就此而言,网络栈75可以向(多个)显示驱动器73发送消息以获得或得到所请求的数据。参见操作605。就此而言,显示驱动器73可以复制来自帧缓冲器的所请求的数据(例如,VNC数据(例如,另一设备的图形显示))并且可以将所复制的数据发送至网络栈75。参见操作610。响应于从(多个)显示驱动器73接收到该数据(例如,所复制的数据),网络栈75可以复制所接收的数据并且可以将所复制的数据发送至(多个)网络驱动器79,但并非需要如此。参见操作615。就此而言,(多个)网络驱动器79可以将该数据发送至请求该数据的通信设备90(例如,请求设备)。
在备选的示例实施例中,响应于网络栈75向(多个)网络驱动器79发送指示所请求的数据的位置处于(多个)显示驱动器73的帧缓冲器中的消息,由(多个)网络驱动器79所控制的直接存储器访问(DMA)设备可以与显示驱动器73的帧缓冲器直接通信以在不复制该数据的情况下读取并获取该数据。这样,(多个)网络驱动器79可以将DMA所获取的数据发送至请求通信设备90。在该备选的示例实施例中,装置50可以使得所请求的数据能够被获取并且由(多个)网络驱动器在不复制所请求的数据的情况下发送至请求设备。
通过将所请求的数据的位置提供至网络栈(例如,网络栈75),示例实施例的应用模块78可以使得为了将所请求的数据经由网络发送至请求设备而对其进行复制的次数有所减少。这样减少的复制数据可以保存装置50的处理资源和存储器资源。
下表示出了可以消息或分组的直接访问信息数据结构的示例实施例,该消息或分组由应用模块78提供至网络栈75以提供识别可以由网络栈直接访问的数据的信息。在下表中,分组偏移(例如,TCP分组偏移)和宽度可以是可选的。此外,文件句柄(file handle)、源偏移和长度可以多次重复以允许将来自不同文件或驱动器的数据合并为单个分组。
文件句柄可以对应于指示由设备(例如,通信设备90)所请求的数据(例如,VNC数据、(多个)媒体文件、(多个)图像等)的位置的一个或多个唯一标识符。这些唯一标识符可以是如下的地址,该地址指示存储器(例如,显示驱动器或存储器设备76中的帧缓冲器)或设备的存储器中的数据的位置,但并非需要如此。源偏移可以识别出要获取用于发送至设备的数据(例如,文件)的哪个部分或位置。出于说明而非限制的目的,所请求的数据的一部分可以处于具有1000GB大小的文件中。然而,所请求的数据的大小可能为100kB。这样,源偏移量信息可以指示在所请求的100kB数据的起始位置处开始获取并且在所请求的100kB数据的结束位置处停止获取数据。
数据访问信息数据结构的长度内容可以指定由设备所请求的数据的长度。该长度数据还可以指示帧缓冲器中要传送至请求设备的文件或数据的大小。分组偏移(例如,TCP分组偏移)可以指示数据、文件、帧缓冲器数据等在由应用模块78发送至网络栈(例如,网络栈75)的分组(例如,TCP分组)内的位置。数据访问信息数据结构的宽度内容例如可以指定针对请求设备进行传输的数据或图像(例如,帧缓冲器的二维(2-D)数据)的宽度。
现在参考图7A,提供了用于从应用模块向网络栈发送的分组的示例实施例的图。在图7A的示例实施例中,应用模块78(在本文中也称作应用)可以生成分组(例如,TCP分组)以使得其包括词语(这里也被称作魔法词语(magic word)),其表示在该分组中提供可能与其它数据(例如,报头A和/或报尾B)不同和/或与其它数据的数据结构不同的直接访问信息(例如,上表的直接访问信息数据结构的信息)。该词语例如可以是字符(例如,数字)的连续串。该词语还可以表示分组中该字之后的数据是指示由设备所请求的数据的位置的直接访问信息。在接收到分组时,网络栈75可以通过检查所有分组以搜索可以将该数据结构与其它数据唯一加以区分的魔法词语字符(例如,数字)序列,来检测该数据结构的存在。
现在参考图7B,提供了用于从网络栈向网络驱动器发送的分组的另一示例实施例的图。在图7B的示例实施例中,网络栈75可以重新构造从应用模块78所接收的分组以包括与设备所请求的数据相关的直接访问的数据(例如,所请求的数据(例如,另一设备的桌面的图形显示等))。就此而言,网络栈75可以将重新构造的分组发送至(多个)网络驱动器79以使得(多个)网络驱动器79能够将直接访问的数据发送至请求设备。
现在参考图8A,提供了用于从应用模块发送至网络栈的分组的另一个示例实施例。在图8A的示例实施例中,应用模块78可以生成分组(例如,TCP分组)以包括识别设备所请求的信息(例如,媒体文件)的位置(例如,显示驱动器(例如,(多个)显示驱动器73)的帧缓冲器)的直接访问信息。如以上所描述的,针对整个分组的该直接访问信息可以由应用模块78经由输入输出控制(IOCTL)应用编程接口(API)系统调用发送至网络栈75。响应于发送具有直接访问信息的分组,应用模块78随后可以发送该分组的报头(例如,报头A)和报尾(例如,报尾B)。就此而言,该分组的报尾(例如,报尾B)可以与直接访问信息有所偏移。通过利用IOCTL API系统调用向网络栈75发送具有直接访问信息的分组,网络栈75可以无需通过检查整个分组数据(例如,直接访问信息、报头A和报尾B)来检测直接访问信息的存在,因为在图8A的示例实施例中并没有词语(例如,魔法词语)。由于通常在检查从应用模块78所发送的整个分组数据以搜索词语(例如,魔法词语)时并不涉及到开销,所以图8A的经由IOCTL API系统调用而被发送的分组的示例实施例会带来更好的性能。
现在参考图8B,提供了用于从网络栈向网络驱动器发送的分组的另一示例实施例的图。在图8B的示例实施例中,网络栈75可以重新构造从应用模块78所接收的分组以包括与设备所请求的数据相关的直接访问的数据(例如,所请求的数据(例如,媒体文件等))。在该示例实施例中,网络栈75可以包括报头A和报尾B之间的直接访问数据。网络栈75可以将重新构造的分组发送至(多个)网络驱动器79以使得(多个)网络驱动器79能够将直接访问数据发送至请求设备。
参考图9,提供了图示根据示例实施例的用于经由网络传送数据的有效且可靠的机制的图。在图9的示例实施例中,应用模块78可以作为服务器进行工作/操作,诸如例如web服务器(例如,HTTP服务器)。在图9的示例实施例中,装置50可以从诸如例如通信设备90的设备接收针对数据的请求。在这一示例实施例中,所请求的数据可以例如涉及文件,但并非需要如此。然而,所请求的数据可以涉及任意其它适当数据。在该示例中,请求设备可以向装置50发送例如HTTP GET请求的请求。
网络栈75可以从请求设备(例如,通信设备90)接收该请求并且可以将该请求发送至应用模块78。参见操作900。响应于该请求的接收,应用模块78可以生成指示所请求的数据的位置的消息(例如,(多个)分组(例如,图7A或8A的(多个)分组)),并且可以将这一消息发送至网络栈75。参见操作905。由应用模块78所生成的消息指示所请求的数据(例如,文件)的位置处于(多个)文件系统71中。参见操作910。在示例实施例中,在网络栈75可以访问该文件的实例中,(多个)文件系统71可以复制对应的文件并且将所复制的文件发送至网络栈75。参见操作915。响应于所复制的文件的接收,网络栈75可以生成该文件的另一个副本并且可以将所复制的这一文件发送至(多个)网络驱动器79以使得(多个)网络驱动器79能够将所复制的文件发送至请求设备(例如,通信设备90),但并非需要如此。参见操作920。
在备选的示例实施例中,响应于网络栈75向网络驱动器79发送指示所请求的数据的位置处于(多个)文件系统71中的消息,由(多个)网络驱动器79所控制的直接存储器访问(DMA)设备可以直接与(多个)文件系统71进行通信以读取并且获取例如文件的数据而并不复制该文件。这样,(多个)网络驱动器79可以将DMA所获取的数据发送至请求设备(例如,通信设备90)。在这一备选示例实施例中,装置50可以使得所请求的数据能够被(多个)网络驱动器79获取并且发送至请求设备而并不复制所请求的数据(例如,文件)。
现在参考图10,提供了图示根据示例实施例的用于经由网络传送数据的有效且可靠的机制的图。在图10的示例实施例中,应用模块78可以作为服务器进行工作/操作,例如web服务器(例如,HTTP服务器)。在图10的示例实施例中,装置50可以从诸如例如通信设备90的设备接收针对数据的请求。所请求的数据例如可以涉及媒体信息,但并非需要如此。然而,所请求的数据可以涉及任意其它适当数据而并不背离本发明的精神和范围。请求媒体信息的请求设备可以向装置50发送请求、诸如例如HTTP GET请求。
该请求(HTTP GET请求)可以被网络栈75从请求设备接收,网络栈75可以将该请求发送至应用模块78。参见操作1000。就此而言,应用模块78可以向(多个)文件系统71发送指示应用模块78想要得到或获得所请求的媒体信息的位置的消息。参见操作1005。响应于来自应用模块78的该消息的接收,(多个)文件系统71可以向应用模块78发送指示所请求的媒体信息的位置(在这里也称作文件位置)的消息。参见操作1010。在图10的示例实施例中,(多个)文件系统71可以在该消息中包括指示所请求的媒体信息的位于(多个)媒体驱动器77的硬盘上的信息。响应于从(多个)文件系统71接收到指示所请求的媒体信息的位置的消息,应用模块78可以生成消息并且可以将指示所请求的媒体信息的位置的该消息发送至网络栈75。参见操作1015。该消息可以对应于包括直接访问信息的(多个)分组(例如,图7A或8A的(多个)分组)。就此而言,网络栈75可以向(多个)网络驱动器79发送指示所请求的媒体信息的位置的消息,以便由(多个)网络驱动器79直接访问。参见操作1020。以这种方式,(多个)网络驱动器79可以直接访问并且读取(多个)媒体驱动器77的硬盘中的所请求的媒体信息。参见操作1025。响应于从(多个)媒体驱动器77的硬盘读取并且访问所请求的媒体信息,(多个)网络驱动器79可以将所请求的媒体信息发送至请求设备(例如,通信设备90)。由于图10的示例实施例的(多个)网络驱动器79可以直接从(多个)媒体驱动器77读取文件数据,所以图10的装置50的示例实施例可以无需复制所请求的媒体信息。就此而言,装置50的处理资源和/或存储器资源可以得以被保存并且装置50可以更有效地进行操作。
现在参考图11,提供了用于提供经由网络传送数据的有效且可靠的方式的流程图的示例实施例。在操作1100,装置(例如,应用模块78)可以从设备(例如,通信设备90)接收针对数据(例如,VNC数据、媒体文件、(多个)图像等)的请求(例如,HTTP GET请求)。在操作1105,装置(例如,应用模块78)可以使得能够向网络栈(例如,网络栈75)提供信息。响应于该请求的接收,该信息可以包括指示所请求的数据的位置(例如,与(多个)显示驱动器73相关联的帧缓冲器、(多个)文件系统71的存储器等)的内容以便由网络栈或网络驱动器(例如,(多个)网络驱动器79)直接进行访问。
在操作1110,装置(例如,应用模块78)可以至少部分地基于所指示的所请求的数据的位置而使得能够将所请求的数据提供至网络驱动器,或者使得网络驱动器能够获取所请求的数据。可选地,在操作1115,装置可以促进经由网络驱动器将所请求的数据发送至设备(例如,通信设备90)。
应当指出的是,图11是根据本发明的一些示例实施例的系统、方法和计算机程序产品的流程图。将要理解的是,流程图中的每个框以及流程图中框的组合可以通过各种手段来实施,诸如硬件、固件、处理器、电路和/或与包括一个或多个计算机程序指令的软件的执行相关联的其它设备。例如,以上所描述的一个或多个过程可以由包括计算机程序指令的计算机程序产品来实现。就此而言,在一些示例实施例中,体现以上所描述过程的计算机程序指令可以由存储器设备(例如,存储区设备76、存储器96)所存储并且由处理器(例如,处理器70、处理器94、应用模块78)来执行。如将要意识到的,任何这样的计算机程序指令都可以被加载到计算机或其它可编程装置(例如,硬件)上以生产机器,以便在计算机或其它可编程装置上执行的指令使得流程图框中所指定的功能得以被实施。在一些示例实施例中,计算机程序指令存储在计算机可读存储器中,其能够指示计算机或其它可编程装置以特定方式工作,以使得存储在计算机可读存储器中的指令产生包括实施流程图框中所指定的(多个)功能的指令的制造品。计算机程序指令还可以被加载到计算机或其它可编程装置上以使得在计算机或其它可编程装置上执行一系列操作而产生计算机实施的处理,以使得在计算机或其它可编程装置上执行的指令实施流程图框中所指定的功能。
因此,流程图中的框支持用于执行指定功能的手段的组合。还将要理解的是,流程图中的一个或多个框以及流程图中框的组合可以由执行所指定功能的基于专用硬件的计算机系统或者特殊用途的硬件和计算机指令的组合来实施。
在一些示例实施例中,用于执行以上图11的方法的装置可以包括被配置为执行以上所描述操作(1100-1115)中的一些或每个操作的处理器(例如,处理器70、处理器94、应用模块78)。该处理器例如可以被配置为通过执行硬件实施的逻辑功能、执行所存储的指令或者执行用于实施每个操作的算法来执行操作(1100-1115)。备选地,该装置可以包括用于执行以上所描述的每个操作的器件。就此而言,根据一些示例实施例,用于执行操作(1100-1115)的器件的示例例如可以包括处理器70(,例如,作为用于执行以上所描述的任意操作的器件)、应用模块78、处理器94和/或用于执行指令或者执行算法以便如以上所描述地处理信息的设备或电路。
这里所给出的本发明的许多修改和其它实施例将使得本发明所涉及领域的技术人员意识到从以上描述和附图中所给出的教导而获益。因此,所要理解的是,本发明并不局限于所公开的具体实施例,并且修改和其它实施例已在包括在所附权利要求的范围之内。此外,虽然以上描述和附图以元件和/或功能的某些示例组合为背景对示例实施例进行了描述,但是应当意识到的是,可以由备选实施例提供元件和/或功能的不同组合而并不背离所附权利要求的范围。就此而言,例如,不同于以上所明确描述的元件和/或功能的不同组合也被预期于一些所附权利要求中被给出。虽然这里采用了具体术语,但是它们仅以一般和描述性含义被使用而并非用于限制的目的。
Claims (20)
1.一种方法,包括:
从设备接收针对数据的请求,
响应于所述请求的接收,使得能够向网络栈提供信息,所述信息包括指示所请求的数据的位置的内容以便由所述网络栈或网络驱动器直接访问;以及
经由处理器,至少部分地基于所指示的所请求的数据的位置而使得能够将所请求的数据提供至所述网络驱动器、或者使得所述网络驱动器能够获取所请求的数据。
2.根据权利要求1所述的方法,进一步包括:
促进将所请求的数据经由所述网络驱动器发送至所述设备。
3.根据权利要求1所述的方法,其中指示所述位置的所述内容包括表示所述位置对应于与设备驱动器相关联的帧缓冲器、文件系统的存储器或媒体驱动器的硬盘中的至少一个的数据。
4.根据权利要求1所述的方法,其中使得能够提供所请求的数据包括生成所请求的数据的副本并且促进将所请求的数据的所述副本发送至所述网络栈。
5.根据权利要求4所述的方法,其中生成所述副本包括生成在所述位置处的所请求的数据的第一副本,其中所述方法进一步包括:
使得所述网络栈能够获得所请求的数据的所述第一副本;
经由所述网络栈生成所请求的数据的第二副本;以及
促进将所请求的数据的所述第二副本发送至所述网络驱动器,以使得所述网络驱动器能够促进将所请求的数据的所述第二副本提供至所述设备。
6.根据权利要求1所述的方法,其中使得所述网络驱动器能够获取所请求的数据包括使得所述网络驱动器的直接访问存储器能够从与驱动器或文件系统相关联的存储器获取在所述位置处的所请求的数据。
7.根据权利要求1所述的方法,其中使得所述网络设备能够获取所请求的数据包括使得所述网络设备能够直接访问并且获得在所述位置处的所请求的数据,并且所述方法进一步包括:
促进经由所述网络驱动器将所请求的数据发送至所述设备。
8.根据权利要求1所述的方法,其中在使得能够提供所述信息之前,所述方法进一步包括:
生成至少一个包括所述信息的分组;
使得所述网络栈能够响应于所述分组的接收而重新构造所述分组的所述信息以获得另一个分组,所述信息的重新构造至少部分地基于重新配置指示与所述分组中所指定的所述位置相对应的直接访问的信息;以及
使得能够将所述另一个分组提供至所述网络驱动器以使得所述网络驱动器能够促进将所请求的数据发送至所述设备。
9.一种装置,包括:
至少一个处理器;以及
包括计算机程序代码的至少一个存储器,所述计算机程序代码被配置为与所述至少一个处理器一起使得所述装置至少执行以下操作:
从设备接收针对数据的请求,
响应于所述请求的接收,使得能够向网络栈提供信息,所述信息包括指示所请求的数据的位置的内容以便由所述网络栈或网络驱动器直接访问;以及
至少部分地基于所指示的所请求的数据的位置而使得能够将所请求的数据提供至所述网络驱动器、或者使得所述网络驱动器能够获取所请求的数据。
10.根据权利要求9所述的装置,其中所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
促进将所请求的数据经由所述网络驱动器发送至所述设备。
11.根据权利要求9所述的装置,其中指示所述位置的所述内容包括表示所述位置对应于与设备驱动器相关联的帧缓冲器、文件系统的存储器或媒体驱动器的硬盘中的至少一个的数据。
12.根据权利要求9所述的装置,其中所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
使得能够通过生成所请求的数据的副本而提供所请求的数据;以及
促进将所请求的数据的所述副本发送至所述网络栈。
13.根据权利要求12所述的装置,其中生成所述副本包括生成在所述位置处的所请求的数据的第一副本,并且其中所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
使得所述网络栈能够获得所请求的数据的所述第一副本;
经由所述网络栈生成所请求的数据的第二副本;以及
促进将所请求的数据的所述第二副本发送至所述网络驱动器,以使得所述网络驱动器能够促进将所请求的数据的所述第二副本提供至所述设备。
14.根据权利要求9所述的装置,其中所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
通过使得所述网络驱动器的直接访问存储器能够从与驱动器或文件系统相关联的存储器获取在所述位置处的所请求的数据而使得所述网络驱动器能够获取所请求的数据。
15.根据权利要求9所述的装置,其中所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
通过使得所述网络设备能够直接访问并且获得在所述位置处的所请求的数据而使得所述网络设备能够获取所请求的数据;以及
促进经由所述网络驱动器将所请求的数据发送至所述设备。
16.根据权利要求9所述的装置,其中在使得能够提供所述信息之前,所述存储器和计算机程序代码被配置为与所述处理器一起使得所述装置:
生成至少一个包括所述信息的分组;
使得所述网络栈能够响应于所述分组的接收而重新构造所述分组的所述信息以获得另一个分组,所述信息的重新构造至少部分地基于重新配置指示与所述分组中所指定的所述位置相对应的直接访问的信息;以及
使得能够将所述另一个分组提供至所述网络驱动器,以使得所述网络驱动器能够促进将所请求的数据发送至所述设备。
17.一种计算机程序产品,包括至少一个具有存储于其中的计算机可读程序代码部分的有形计算机可读存储介质,所述计算机可读程序代码部分包括:
被配置为促进从设备接收针对数据的请求的程序代码指令;
被配置为响应于所述请求的接收而使得能够向网络栈提供信息的程序代码指令,所述信息包括指示所请求的数据的位置的内容以便由所述网络栈或网络驱动器直接访问;以及
被配置为至少部分地基于所指示的所请求的数据的位置而使得能够将所请求的数据提供至所述网络驱动器、或者使得所述网络驱动器能够获取所请求的数据的程序代码指令。
18.根据权利要求17所述的计算机程序产品,进一步包括:
被配置为促进将所请求的数据经由所述网络驱动器发送至所述设备的程序代码指令。
19.根据权利要求17所述的计算机程序产品,其中指示所述位置的所述内容包括表示所述位置对应于与设备驱动器相关联的帧缓冲器、文件系统的存储器或媒体驱动器的硬盘中的至少一个的数据。
20.根据权利要求17所述的计算机程序产品,进一步包括:
被配置为使得能够通过生成所请求的数据的副本而向所述网络驱动器提供所请求的数据的程序代码指令;以及
被配置为促进将所请求的数据的所述副本发送至所述网络栈的程序代码指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/173,744 | 2011-06-30 | ||
US13/173,744 US8688799B2 (en) | 2011-06-30 | 2011-06-30 | Methods, apparatuses and computer program products for reducing memory copy overhead by indicating a location of requested data for direct access |
PCT/FI2012/050557 WO2013001151A1 (en) | 2011-06-30 | 2012-06-05 | Methods, apparatuses and computer program products for improving network transmission by reducing memory copy overhead by providing direct access to data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103718167A true CN103718167A (zh) | 2014-04-09 |
Family
ID=47391768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280037110.4A Pending CN103718167A (zh) | 2011-06-30 | 2012-06-05 | 用于通过提供对数据的直接访问减少存储器复制开销而改进网络传送的方法、装置和计算机程序产品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8688799B2 (zh) |
EP (1) | EP2726995B1 (zh) |
CN (1) | CN103718167A (zh) |
WO (1) | WO2013001151A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112055058A (zh) * | 2020-08-19 | 2020-12-08 | 广东省新一代通信与网络创新研究院 | 数据的存储方法、装置及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9712599B2 (en) * | 2011-10-03 | 2017-07-18 | International Business Machines Corporation | Application peak load processing |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998052320A2 (en) * | 1997-05-14 | 1998-11-19 | Citrix Systems, Inc. | System and method for managing the connection between a server and a client node |
US20060221965A1 (en) * | 2005-03-31 | 2006-10-05 | Peter Bosch | Method of transferring data packets in a communications network |
US20080126369A1 (en) * | 2006-11-29 | 2008-05-29 | Daniel Ellard | Referent-controlled location resolution of resources in a federated distributed system |
US20080253395A1 (en) * | 2002-06-11 | 2008-10-16 | Pandya Ashish A | Tcp/ip processor and engine using rdma |
US7921178B2 (en) * | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
US7937449B1 (en) * | 2007-10-08 | 2011-05-03 | Empirix, Inc. | System and method for enabling network stack processes in user mode and kernel mode to access kernel memory locations |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5247636A (en) * | 1975-10-15 | 1977-04-15 | Toshiba Corp | Control method for transmitting information |
JPS5255446A (en) * | 1975-10-31 | 1977-05-06 | Toshiba Corp | Information transfer control system |
JPS5840214B2 (ja) * | 1979-06-26 | 1983-09-03 | 株式会社東芝 | 計算機システム |
US5175825A (en) * | 1990-02-02 | 1992-12-29 | Auspex Systems, Inc. | High speed, flexible source/destination data burst direct memory access controller |
US5598568A (en) * | 1993-05-06 | 1997-01-28 | Mercury Computer Systems, Inc. | Multicomputer memory access architecture |
US5867661A (en) * | 1996-02-15 | 1999-02-02 | International Business Machines Corporation | Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol |
US6061796A (en) * | 1997-08-26 | 2000-05-09 | V-One Corporation | Multi-access virtual private network |
US6185598B1 (en) * | 1998-02-10 | 2001-02-06 | Digital Island, Inc. | Optimized network resource location |
US6889256B1 (en) * | 1999-06-11 | 2005-05-03 | Microsoft Corporation | System and method for converting and reconverting between file system requests and access requests of a remote transfer protocol |
US6651117B1 (en) * | 1999-11-03 | 2003-11-18 | Adaptec, Inc. | Network stack layer interface |
US6832239B1 (en) * | 2000-07-07 | 2004-12-14 | International Business Machines Corporation | Systems for managing network resources |
US6983325B1 (en) * | 2000-12-28 | 2006-01-03 | Mcafee, Inc. | System and method for negotiating multi-path connections through boundary controllers in a networked computing environment |
EP1221647A1 (en) * | 2001-01-04 | 2002-07-10 | Lucent Technologies Inc. | Virtual insertion of cells from a secondary source into a fifo |
US7149817B2 (en) * | 2001-02-15 | 2006-12-12 | Neteffect, Inc. | Infiniband TM work queue to TCP/IP translation |
US6889266B1 (en) * | 2001-09-05 | 2005-05-03 | Xilinx, Inc. | Method for delivering packet boundary or other metadata to and from a device using direct memory controller |
US20050210243A1 (en) * | 2001-09-28 | 2005-09-22 | Archard Paul L | System and method for improving client response times using an integrated security and packet optimization framework |
US7370082B2 (en) * | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US8578040B2 (en) * | 2003-08-14 | 2013-11-05 | International Business Machines Corporation | Method, system and article for client application control of network transmission loss tolerance |
US7543037B2 (en) * | 2003-12-02 | 2009-06-02 | International Business Machines Corporation | RDMA completion and retransmit system and method |
JP4408692B2 (ja) * | 2003-12-19 | 2010-02-03 | 富士通株式会社 | 通信装置管理プログラム |
US8713180B2 (en) | 2005-06-22 | 2014-04-29 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
US20070033301A1 (en) | 2005-07-18 | 2007-02-08 | Eliezer Aloni | Method and system for transparent TCP offload with dynamic zero copy sending |
US7721299B2 (en) * | 2005-08-05 | 2010-05-18 | Red Hat, Inc. | Zero-copy network I/O for virtual hosts |
US20070162639A1 (en) | 2005-11-30 | 2007-07-12 | Chu Hsiao-Keng J | TCP-offload-engine based zero-copy sockets |
US7735099B1 (en) * | 2005-12-23 | 2010-06-08 | Qlogic, Corporation | Method and system for processing network data |
US8701010B2 (en) * | 2007-03-12 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods of using the refresh button to determine freshness policy |
US7996482B1 (en) * | 2007-07-31 | 2011-08-09 | Qurio Holdings, Inc. | RDMA based real-time video client playback architecture |
US8271700B1 (en) * | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
-
2011
- 2011-06-30 US US13/173,744 patent/US8688799B2/en active Active
-
2012
- 2012-06-05 EP EP12805220.6A patent/EP2726995B1/en active Active
- 2012-06-05 WO PCT/FI2012/050557 patent/WO2013001151A1/en active Application Filing
- 2012-06-05 CN CN201280037110.4A patent/CN103718167A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998052320A2 (en) * | 1997-05-14 | 1998-11-19 | Citrix Systems, Inc. | System and method for managing the connection between a server and a client node |
US20080253395A1 (en) * | 2002-06-11 | 2008-10-16 | Pandya Ashish A | Tcp/ip processor and engine using rdma |
US20060221965A1 (en) * | 2005-03-31 | 2006-10-05 | Peter Bosch | Method of transferring data packets in a communications network |
US20080126369A1 (en) * | 2006-11-29 | 2008-05-29 | Daniel Ellard | Referent-controlled location resolution of resources in a federated distributed system |
US7937449B1 (en) * | 2007-10-08 | 2011-05-03 | Empirix, Inc. | System and method for enabling network stack processes in user mode and kernel mode to access kernel memory locations |
US7921178B2 (en) * | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112055058A (zh) * | 2020-08-19 | 2020-12-08 | 广东省新一代通信与网络创新研究院 | 数据的存储方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20130007197A1 (en) | 2013-01-03 |
EP2726995A1 (en) | 2014-05-07 |
EP2726995B1 (en) | 2022-09-14 |
US8688799B2 (en) | 2014-04-01 |
EP2726995A4 (en) | 2015-06-03 |
WO2013001151A1 (en) | 2013-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11611863B2 (en) | Method and apparatus for low energy discovery | |
CN107077441B (zh) | 用于提供使用rdma和主动消息的异构i/o的方法和装置 | |
EP2664214B1 (en) | Method for multipath scheduling based on a lookup table | |
US20150220556A1 (en) | Methods, apparatuses and computer program products for providing a protocol to resolve synchronization conflicts when synchronizing between multiple devices | |
CN104965848B (zh) | 一种前端资源加载方法及装置 | |
JP2013512512A (ja) | 軽量クライアントを使用してネットワーク上で仮想化コンピューティングサービスとインターフェースするための方法 | |
CN104105150A (zh) | 利用预定义属性协议来促进切换的方法和装置 | |
US10298997B2 (en) | Methods for uploading file to television set and playing file, television set and user equipment | |
CN103699635B (zh) | 信息处理方法和装置 | |
US9628979B2 (en) | Method and apparatus for utilizing advertisements in conjunction with device discovery | |
WO2018006841A1 (zh) | 二维码信息传输方法、装置以及设备 | |
JP5936755B2 (ja) | ページ化更新プロトコルの方法および装置 | |
CN105700821A (zh) | 半导体装置及其压缩/解压缩方法 | |
JP2006252218A (ja) | 分散処理システム及びプログラム | |
US8977616B2 (en) | Methods, apparatuses and computer program products for generating indexes using a journal in a key value memory device | |
US20150142804A1 (en) | Methods, apparatuses and computer program products for utilizing subtyping to support evolution of data types | |
CN103718167A (zh) | 用于通过提供对数据的直接访问减少存储器复制开销而改进网络传送的方法、装置和计算机程序产品 | |
US20160037509A1 (en) | Techniques to reduce bandwidth usage through multiplexing and compression | |
JP2015102742A (ja) | 画像処理装置及び画像処理方法 | |
CN113126985B (zh) | 用于页面渲染的方法、装置、电子设备和计算机可读介质 | |
CN107798008B (zh) | 内容推送系统、方法及装置 | |
CN107294948A (zh) | 处理媒体数据的计算机实现方法、装置及数据处理系统 | |
US8588537B2 (en) | Methods, apparatuses and computer program products for utilizing wireless links for communication of compressed data | |
CN108616552B (zh) | 网页访问方法、装置和系统 | |
US10142771B2 (en) | Virtual sensor apparatus and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160126 Address after: Espoo, Finland Applicant after: Technology Co., Ltd. of Nokia Address before: Espoo, Finland Applicant before: Nokia Oyj |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140409 |