一种数据交换方法及装置与流程

文档序号:32567956发布日期:2022-12-16 22:04阅读:50来源:国知局
一种数据交换方法及装置与流程

1.本技术涉及存储技术领域,尤其涉及一种数据交换方法及装置。


背景技术:

2.主机的正常运行离不开操作系统,如linux操作系统等。操作系统内核支持内存交换,即将主机的内存中的数据换出至存储设备,或将存储设备的数据换入至内存。主机上除了安装操作系统外还安装有各种应用。随着应用的多样化发展,各种应用对内存交换的需求呈现出多样化的趋势。例如,不同应用在内存交换时想要使用的存储设备可能不同。但是,操作系统内核进行内存交换时使用的存储设备通常是通用的固定设备,无法满足各种应用对存储设备的多样化需求。


技术实现要素:

3.本技术提供一种数据交换方法及装置,解决了操作系统内核的内存交换机制无法满足不同应用的多样化需求的问题。
4.为达到上述目的,本技术采用如下技术方案:
5.第一方面,本技术提供一种数据交换方法,应用于主机,主机安装有操作系统和目标应用,操作系统包括用户态空间,用户态空间设置有目标应用的用户态接口,用户态接口对应一个存储设备。具体方案包括:主机获取目标应用的交换请求,并根据该交换请求,调用用户态接口对存储设备执行操作。其中,该交换请求为换入请求或换出请求,换出请求用于请求将目标应用的数据从主机的内存写入存储设备。换入请求用于请求将存储设备中的数据写入内存。
6.这样,通过在用户态空间设置应用的用户态接口,并调用该用户态接口进行该应用的数据的换出或换入,实现了用户态的内存交换。从而,针对不同的应用能够设置不同的用户态接口,该不同的用户态接口对应的存储设备不同,为用户提供了定制化的用户态内存交换框架,满足了不同应用对存储设备的多样化需求,使得用户能够设计自己想要的内存交换机制。
7.在本技术的一种可能的实现方式中,交换请求为换出请求的情况下,上述“根据交换请求,调用用户态接口对存储设备执行操作”的方法可以包括:主机响应于换出请求,在内存中确定目标应用的第一数据,并解除预存的页表中的第一虚拟地址与第一物理地址的映射关系,为第一数据分配第二虚拟地址,建立第二虚拟地址与第一物理地址的映射关系。之后,主机调用用户态接口,将第二虚拟地址对应的第一物理地址指示的第一数据从内存写入存储设备,并在页表中建立第一虚拟地址与第一交换入口的映射关系。其中第一交换入口用于指示第一数据在存储设备中的位置。第一虚拟地址为第一数据在虚拟内存的虚拟地址,第一物理地址为第一数据在内存中的地址。
8.这样,实现了基于第二虚拟地址的第一数据的换出过程,保证了用户态空间的换出过程的正确性和可靠性。
9.在本技术的另一种可能的实现方式中,本技术提供的数据交换方法还可以包括:主机解除第二虚拟地址与第一物理地址的映射关系,删除内存中的第一数据。
10.通过释放内存中第一数据的存储空间,能够节省内存占用,提高内存占用率。
11.在本技术的另一种可能的实现方式中,本技术提供的数据交换方法还可以包括:主机将第一虚拟地址的状态信息设置为第一信息,第一信息用于指示第一虚拟地址对应的第一数据的交换类型为用户态交换类型。
12.在本技术的另一种可能的实现方式中,交换请求为换入请求的情况下,上述“获取目标应用的交换请求”的方法可以包括:主机获取待访问的第二数据的虚拟地址,并在第二数据的虚拟地址的状态信息为第一信息,第二数据为目标应用的数据,且内存中未包括第二数据的情况下,生成换入请求。其中,第一信息用于指示第二数据的交换类型为用户态交换类型。
13.在本技术的另一种可能的实现方式中,上述“根据交换请求,调用用户态接口对存储设备执行操作”的方法可以包括:主机响应于换入请求,根据预存的页表获取第二数据的虚拟地址对应的第二交换入口,调用用户态接口,将第二交换入口指示的第二数据从存储设备写入内存,之后在页表中建立第二数据的虚拟地址与第二数据的物理地址的映射关系。第二数据的物理地址为第二数据在内存中的地址。
14.这样,实现了基于缺页异常上报的第二数据的换入过程,保证了用户态空间的换入过程的正确性和可靠性。
15.在本技术的另一种可能的实现方式中,在主机获取目标应用的交换请求之前,本技术提供的数据交换方法还可以包括:主机在目标应用启动后,建立换出线程和换入线程。其中,换出线程用于执行第一数据的换出操作,换入线程用于执行第二数据的换入操作。
16.在本技术的另一种可能的实现方式中,上述“建立换出线程和换入线程”的方法可以包括:主机在目标应用包含在预存的白名单的情况下,建立换出线程和换入线程。白名单中包括至少一个支持内存交换的应用。
17.这样,通过预先设置白名单,仅支持部分特定的应用进行内存交换,能够节省内存的开销,从而提高主机的性能。
18.第二方面,本技术提供一种数据交换装置。该数据交换装置包括用于执行上述第一方面或上述第一方面的任一种可能的实现方式的数据交换方法的各个模块。
19.第三方面,本技术提供一种主机,该主机包括存储器和处理器。存储器和处理器耦合。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行计算机指令时,主机执行如第一方面及其任一种可能的实现方式的数据交换方法。
20.第四方面,本技术提供一种芯片系统,该芯片系统应用于主机。芯片系统包括一个或多个接口电路,以及一个或多个处理器。接口电路和处理器通过线路互联;接口电路用于从主机的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令。当处理器执行计算机指令时,主机执行如第一方面及其任一种可能的实现方式的数据交换方法。
21.第五方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当计算机指令在主机上运行时,使得主机执行如第一方面及其任一种可能的实现方式的数据交换方法。
22.第六方面,本技术提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在主机上运行时,使得主机执行如第一方面及其任一种可能的实现方式的数据交换方法。
23.本技术中第二方面到第六方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面到第六方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。
24.本技术的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
25.图1为本技术实施例提供的数据交换系统的一种示意图;
26.图2为本技术实施例提供的主机的一种结构示意图之一;
27.图3为本技术实施例提供的主机的一种结构示意图之二;
28.图4a为本技术实施例提供的用户态的数据换出的示意图;
29.图4b为本技术实施例提供的第一数据的换出的场景示意图;
30.图5为本技术实施例提供的用户态的数据换入的示意图;
31.图6为本技术实施例提供的数据交换方法的流程示意图;
32.图7为本技术实施例提供的数据交换装置的结构示意图之一;
33.图8为本技术实施例提供的数据交换装置的结构示意图之二。
具体实施方式
34.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
35.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
36.随着科技的发展,生活和工作中产生的数据越来越多。这些数据中冷数据指的是访问频率低,但仍需要长期保留的数据。为了降低冷数据的存储成本,可以通过内存交换机制将冷数据存储至存储设备中。
37.目前,操作系统内核执行内存交换的过程为:当主机的内存不足时,操作系统内核将内存中访问频率低的数据,即冷数据,从内存中写入存储设备,并删除内存中的该冷数据。当需要在内存访问写入存储设备的数据时,操作系统内核可以将该数据从存储设备中写入内存。但是,由于操作系统内核进行内存交换时使用的存储设备通常是通用的固定设备,因此无法满足各种应用对存储设备的多样化需求。
38.为了解决操作系统内核的内存交换机制无法满足不同应用的多样化需求的问题,本技术实施例提供一种数据交换方法,该方法应用于主机。该主机安装有操作系统和目标应用,操作系统包括用户态空间,该用户态空间设置有目标应用的用户态接口,用户态接口
对应一个存储设备。主机获取到目标应用的交换请求后,能够根据该交换请求调用用户态接口对存储设备执行操作。交换请求为换出请求时,用于请求将目标应用的数据从主机的内存写入存储设备,交换请求为换入请求时,用于请求将存储设备中的数据写入内存。这样,通过在用户态空间设置应用的用户态接口,并调用该用户态接口进行该应用的数据的换出或换入,实现了用户态的内存交换。从而,针对不同的应用能够设置不同的用户态接口,该不同的用户态接口对应的存储设备不同,满足了不同应用对存储设备的多样化需求。
39.为了便于本领域技术人员的理解,在此先对本技术实施例中涉及的术语进行简要介绍。
40.1、操作系统
41.操作系统是一台主机必不可少的系统软件,是整个主机的灵魂。常见的操作系统可以包括windows操作系统、linux操作系统等。
42.2、用户态空间(user space)和内核态空间(kernel space)
43.从逻辑上来说,操作系统可以包括用户态空间和内核态空间。其中用户态空间为应用的活动空间,用于存放应用的程序代码和数据。内核态空间为操作系统的活动空间,用于存放操作系统或操作系统内核的程序代码和数据。通常,用户态空间的应用或进程能访问的主机的硬件资源有限,仅能访问部分硬件资源。内核态空间的操作系统或内核拥有访问主机的所有硬件资源的权限,能访问主机的所有硬件资源。此外,用户态空间的应用无法直接访问主机的硬件资源,可以通过操作系统调用、库函数、脚本的方式访问硬件资源。
44.本技术实施例提供的数据交换方法适用于数据交换系统。图1示出了该数据交换系统的一种结构。如图1所示,该数据交换系统可以包括:主机11和存储设备12。主机11和存储设备12采用有线通信方式或无线通信方式建立连接。
45.主机11,用于获取主机11上安装的目标应用的交换请求,并根据交换请求,调用用户态空间中设置的该目标应用的用户态接口对用户态接口对应的存储设备12执行操作。其中,主机11上安装的操作系统包括用户态空间。
46.可以理解,主机11上安装有多个目标应用时,可以在用户态空间中设置每个目标应用的用户态接口,即一个目标应用对应一个用户态接口。不同的应用对应的用户态接口可以相同或不同。且,一个用户态接口对应一个存储设备。相同的用户态接口对应的存储设备可以相同或不同,不同的用户态接口对应的存储设备可以相同或不同。本技术实施例中,每个应用对应的用户态接口,以及每个用户态接口对应的存储设备是可以预先配置在主机中的,在此不做限定。
47.在一些实施例中,主机11可以为终端设备、服务器、云计算平台等。终端设备可以是手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、计算机等。图1中以主机为服务器为例示出。
48.在一些实施例中,存储设备12,可以为除主机11外的其他主机的内存,还可以为存储介质。该存储介质的类型可以为非易失性闪存(not and flash,nand flash)、存储级存储器(storage class memory,scm)等。
49.需要说明的是,在本技术实施例中,主机11上安装的操作系统除了包括用户态空间外,还可以包括内核态空间。该内核态空间可以设置内核态接口,该内核态接口对应一个存储设备,该存储设备为操作系统内核进行内存交换时使用的设备,该存储设备的类型通
常为nand flash、scm等。
50.另外,图1所示的数据交换系统仅用于举例,并非用于限制本技术实施例的技术方案。本领域的技术人员应当明白,在具体实现过程中,数据交换系统还可以包括其他节点,同时也可根据具体需要来确定节点的数量,不予限制。
51.图2示出了上述主机的一种结构。如图2所示,该主机可以包括处理器201、内存202,用于实现本技术实施例提供的数据交换方法。
52.处理器201可以是一个通用中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application-specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
53.示例性的,处理器201,用于处理来自主机外部,如其他主机的请求,还用于处理主机内部生成的请求。在本技术实施例中,处理器201可以用于处理主机获取到的交换请求,该交换请求为换出请求或换入请求。
54.内存202是指与处理器201直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存202包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,rom)。举例来说,随机存取存储器可以是动态随机存取存储器(dynamic random access memory,dram),或者scm。其中,dram是一种半导体存储器,与大部分随机存取存储器(random access memory,ram)一样,属于一种易失性存储器(volatile memory)。scm是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比dram慢,在成本上比dram更为便宜。需要说明的是,dram和scm在本技术实施例中只是示例性的说明,内存202还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,sram)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,prom)、可抹除可编程只读存储器(erasable programmable read only memory,eprom)等,但不限于此。另外,内存202还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,dimm),即由dram组成的模块,还可以是固态硬盘(solid state disk,ssd)。内存202可以是独立存在,并与处理器201相耦合。内存202也可以和处理器201集成在一起。
55.实际应用中,主机中可配置多个内存,该多个内存可以是相同类型的内存,也可以是不同类型的内存。本技术实施例不对主机的内存的数量和类型进行限定,图2中仅以一个内存202为例示出。此外,可对内存202进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存202中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
56.内存202中存储有主机上安装的应用的程序代码和数据,以及主机上安装的操作系统的代码和数据。其中,应用是运行在操作系统的基础之上的程序。
57.需要说明的是,图2中示出的结构并不构成对该主机的限定,除图2所示部件之外,该主机可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,主机还可以包括声卡、光驱、硬盘、显示器、键盘、鼠标、音响、手写板、话筒、摄像头等输入输出设备。
58.结合图1和图2,图3示出了主机的一种结构。如图3所示,主机上安装有操作系统和
至少一个目标应用。操作系统可以包括用户态空间和内核态空间。其中,用户态空间包括至少一个应用中每个应用的程序代码和数据,内核态空间包括操作系统内核的程序代码和数据。且,用户态空间设置有至少一个应用中每个应用的用户态接口。在具体的实现中,在用户态空间中,每个应用的程序代码中可以包括该应用的用户态接口对应的驱动程序或协议栈,通过运行驱动程序或协议栈便能调用应用的用户态接口。
59.在主机中,用户态空间可以包括预加载模块、换出模块、换入模块。内核态空间可以包括页表管理模块和缺页异常上报模块。这些模块能够配合完成用户态的内存交换机制。本技术实施例以一个目标应用为例对用户态的内存交换方法进行详细介绍,其他目标应用的内存交换方法均类似,在此不再赘述。
60.页表管理模块,用于管理主机的页表。页表是数据存储的一种结构,用于存储数据的虚拟地址(virtual address,va)和物理地址(physical address,pa)的映射关系。虚拟地址为数据在虚拟内存中的逻辑地址,物理地址为数据在内存中的真实地址。在一种实现方式中,页表存储的数据可以通过哈希表来实现。
61.预加载模块,用于在目标应用启动之后,建立换出线程和换入线程,初始化相关资源。其中,换出线程用于执行第一数据的换出操作,换入线程用于执行第二数据的换入操作。相关资源指的是第一数据的换出或第二数据的换入所需的各种资源。
62.示例性的,相关资源可以包括页表。可选的,该相关资源还可以包括交换存储器(swap cache)。交换存储器是从主机的内存中划分出来的一部分存储空间,用于将第一数据从内存换出至存储设备时,暂时存储第一数据。该交换存储器存满数据后,再将交换存储器中的数据存储至存储设备。
63.可选的,预加载模块,具体用于在目标应用启动之后,通过加载用户态空间中该目标应用的程序代码,来建立换出线程和换入线程,并初始化相关资源。
64.可选的,由于并不是每个应用都支持用户态的内存交换机制,因此预加载模块在建立换出线程和换入线程之前,可以先判断目标应用是否包含在预存的白名单中,该白名单中包括至少一个支持内存交换的应用。在确定目标应用包含在白名单的情况下,预加载模块建立换出线程和换入线程,否则,预加载模块不执行任何操作。白名单包括的应用可以是占用内存较大的应用,例如,游戏应用、视频应用等。日历、计算器等占用内存较小的应用通常不会包含在白名单中,因为该类应用的数据量小,没有进行内存交换的必要。这样,通过预先设置白名单,仅支持部分特定的应用进行内存交换,能够节省内存的开销,从而提高主机的性能。
65.预加载模块建立好换出线程和换入线程后,换出模块便可以等待接收换出请求,换入模块可以等待接收换入请求。下面先介绍换出模块接收到换出请求的情况。
66.图4a示出了第一数据的换出过程,如图4a所示,换出模块,用于获取目标应用的换出请求,并调用换出线程进行第一数据的换出。该换出请求用于请求将目标应用的数据从主机的内存写入目标应用的用户态接口对应的存储设备。
67.可以理解,换出模块可以响应于用户对目标应用的换出操作,生成该目标应用的换出请求。或者,换出模块也可以在确定运行目标应用的内存不足时,生成该目标应用的换出请求。本技术实施例在此对换出请求的触发方式不做限定。
68.示例性的,假设主机的内存容量为13g,该主机当前已经运行了两个应用,占用内
存10g。此时用户启动了另外一个应用。如果主机运行该另外一个应用需要占用5g内存,则主机在确定运行该另外一个应用的内存不足时,生成该另外一个应用的换出请求。
69.换出模块,还用于响应于目标应用的换出请求,在内存中确定目标应用的待换出的第一数据。该第一数据可以为目标应用的冷数据,即目标应用的访问频率低,但是需要长期存储的数据。示例性的,目标应用为游戏应用时,第一数据可以为该游戏应用的历史记录数据。
70.换出模块,还用于在确定出目标应用的第一数据之后,判断该第一数据是否允许换出。若确定该第一数据不允许换出,则换出模块结束第一数据的换出流程。若确定该第一数据允许换出,则换出模块可以通过调用定制化接口,向页表管理模块发送一个消息。该消息用于换出模块通知页表管理模块第一数据为待换出的数据。定制化接口指的是用户态空间和内核态空间通信的接口。
71.页表管理模块,在接收到换出模块发送的消息之后,可以解除预存的页表中第一数据的第一虚拟地址与第一物理地址的映射关系,并为该第一数据分配第二虚拟地址,且建立第二虚拟地址与第一物理地址的映射关系。最后,页表管理模块,还用于通过定制化接口,向换出模块返回第一数据的第二虚拟地址。其中,第一虚拟地址和第二虚拟地址是第一数据在虚拟内存中两个不同的虚拟地址,第一物理地址为第一数据在内存中的真实地址。
72.可选的,在本技术实施例中,页表管理模块,还用于在接收到来自用户态空间的换出模块的消息之后,将第一虚拟地址的状态信息设置为第一信息,该第一信息用于指示第一虚拟地址对应的第一数据的交换类型为用户态交换类型。或者,页表管理模块,还用于在接收到来自内核态空间的换出模块的消息后,将第一虚拟地址的状态信息设置为第二信息,该第二信息用于指示第一虚拟地址对应的第一数据的交换类型为内核态交换类型。
73.换出模块,还用于接收页表管理模块发送的第一数据的第二虚拟地址,通过运行目标应用的驱动程序或协议栈调用该目标应用的用户态接口,并根据页表中的第二虚拟地址和第一物理地址的映射关系,将第二虚拟地址对应的第一物理地址指示的第一数据从内存中写入用户态接口对应的存储设备中,写入到存储设备中的数据为第三数据。存储设备在将第三数据成功写入后,可以通过用户态接口向换出模块返回该第一交换入口(swap entry)。第一交换入口用于指示第三数据在该存储设备中的位置。
74.可选的,在本技术实施例中,如图4b所示,换出模块可以调用目标应用的用户态接口,先将第一数据从内存中写入交换存储器中,写入到交换存储器中的数据为交换数据。交换存储器的存储空间满了之后,可以将该交换数据从交换存储器中写入该用户态接口对应的存储设备中,此时写入存储设备中的数据为第三数据。
75.需要说明的是,本技术实施例中,第一数据、第三数据和交换数据分别为存储在内存、存储设备和交换存储器中的相同数据。只是数据的存储位置发生变化,数据的内容是相同的。且,将第一数据从内存中写入存储设备后,当需要在内存中访问第一数据时,可以将第三数据从存储设备写入内存。该情况下,写入内存的数据的虚拟地址与第一数据的虚拟地址是同一个虚拟地址。
76.换出模块,还用于在接收到第一交换入口后,通过定制化接口向页表管理模块发送该第一交换入口。
77.页表管理模块,还用于在接收到第一交换入口后,在页表中建立第一虚拟地址与
第一交换入口的映射关系。页表管理模块,还用于解除页表中第二虚拟地址与第一物理地址的映射关系,并删除内存中的第一数据。这样,便完成了第一数据的换出,通过释放内存中第一数据的存储空间,能够节省内存占用,提高内存占用率。
78.可选的,在本技术实施例中,页表管理模块,还用于在建立第一虚拟地址与第一交换入口的映射关系之后,设置第一交换入口的状态信息为第三信息,该第三信息用于指示该第一交换入口指示的第三数据为从内存换出至存储设备的数据。
79.这样,通过图4a实现了基于第二虚拟地址的第一数据的换出过程,保证了用户态空间的换出过程的正确性和可靠性。
80.在介绍完换出模块接收到换出请求的情况后,接下来介绍换入模块接收到换入请求的情况。
81.图5示出了第二数据的换入过程。如图5所示,换入模块,用于获取目标应用的换入请求,并调用换入线程进行第二数据的换入。该换入请求用于请求将目标应用的用户态接口对应的存储设备中的数据写入内存。
82.可以理解的是,当用户需要查看目标应用的第二数据时,可以在主机上进行查看操作。主机的处理器响应于用户的查看操作,生成数据访问请求,并向页表管理模块发送数据访问请求。该数据访问请求可以包括数据访问信息,例如,该数据访问信息可以为第二数据的虚拟地址。页表管理模块在接收到数据访问请求后,可以在页表中查询第二数据的虚拟地址。如果页表中第二数据的虚拟地址对应的数据位置信息为一个物理地址,则表明第二数据存储在内存中,此时可以根据该物理地址在内存获取第二数据。如果页表中第二数据的虚拟地址对应的数据位置信息的状态信息为第三信息,表明页表中存储的数据位置信息为第二交换入口,第二数据未存储在内存中。页表管理模块可以向缺页异常上报模块发送一指示消息,以触发缺页异常上报。缺页异常上报模块在接收到页表管理模块发送的指示消息之后,可以判断此次换入操作是内核态的换入还是用户态的换入。具体的,缺页异常上报模块可以确定页表中的第二数据的虚拟地址的状态信息是第一信息还是第二信息。如果第二数据的虚拟地址的状态信息为第一信息,则表明第二数据的交换类型为用户态交换类型。此时缺页异常上报模块可以在确定第二数据为目标应用的数据的情况下,生成目标应用的换入请求,之后通过用户异常处理函数(userfaultfd)或者信号处理函数(signal),向用户态空间中的换入模块发送目标应用的换入请求,该换入请求中可以包括第二数据的虚拟地址。这样,用户态空间中的换入模块可以获取到目标应用的换入请求。如果第二数据的虚拟地址的状态信息为第二信息,则表明第二数据的交换类型为内核态交换类型。此时,缺页异常上报模块可以向内核态空间中的换入模块发送换入请求,以便换入模块进行第二数据的换入。
83.需要说明的是,在本技术实施例中,上述第二数据为从内存中换出至存储设备的数据,上述userfaultfd或者signal可以是在第二数据的换出过程中注册的。具体的,可以是在换出模块确定第二数据允许换出后注册的。第二数据的换出过程与上述实施例第一数据的换出过程相同,在此不再赘述。
84.换入模块,还用于响应于目标应用的换入请求,调用定制化接口,通过页表管理模块,在页表中获取第二数据的虚拟地址对应的第二交换入口,并调用目标应用的用户态接口,将第二交换入口指示的第二数据从用户态接口对应的存储设备中写入内存中。
85.在具体的实现中,换入模块在将第二数据从存储设备写入内存之前,可以先申请一个第三虚拟地址和一个第三物理地址。申请好地址后,换入模块可以将第二数据从存储设备拷贝到第三物理地址对应的位置,并建立第三虚拟地址和第三物理地址的映射关系。此时,第三物理地址内存储的数据为第四数据。之后换入模块可以指示页表管理模块为第二数据申请新的物理地址,并将第三虚拟地址对应的第三物理地址指示的第四数据拷贝到该新的物理地址对应的位置,且在页表中建立第二数据的虚拟地址和第二数据的物理地址的映射关系,解除第三虚拟地址和第三物理地址的映射关系,删除第三物理地址存储的第四数据。第二数据的物理地址内存储的数据为第五数据。这样,便完成了第二数据的换入,可以在内存中进行数据的读写。
86.可选的,在本技术实施例中,换入模块可以调用目标应用的用户态接口,将第二数据从用户态接口对应的存储设备中写入缓冲器(buffer)中,写入缓冲器中的数据为缓冲数据。当为第二数据申请好第三虚拟地址和第三物理地址后,将缓冲数据从缓冲器写入第三物理地址对应的位置,写入第三物理地址的数据为第四数据。最后申请好第二数据的物理地址后,将第四数据从第三物理地址处拷贝到第二数据的物理地址对应的位置,写入第二数据的物理地址的数据为第五数据。
87.可以理解,上述缓冲器也是内存中划分出来的一部分存储空间,用于将存储设备中的第二数据换入至内存时,暂时存储数据。待在内存中为该第二数据申请好物理地址后,再将缓冲器中的数据写入申请好的物理地址,以避免由于存储设备的读写速度慢导致主机的交换速度慢的问题。
88.需要说明的是,本技术实施例中,第二数据、第四数据、第五数据和缓冲数据分别为存储在存储设备、内存的第三物理地址、内存的第二数据的物理地址和缓冲器的相同数据。只是数据的存储位置发生变化,数据的内容是相同的。且,如果第二数据是将初始数据从内存中写入至存储设备中的数据,那么初始数据的虚拟地址与第五数据的虚拟地址是同一个虚拟地址。
89.这样,通过图5实现了基于缺页异常上报的第二数据的换入过程,保证了用户态空间的换入过程的正确性和可靠性。
90.下面结合图1-图5对本技术实施例提供的数据交换方法进行具体阐述。
91.可以理解的,本技术实施例中同一个步骤或者具有相同功能的步骤或者技术特征在不同实施例之间可以互相参考借鉴。
92.可以理解的,本技术实施例中,主机可以执行本技术实施例中的部分或全部步骤,这些步骤仅是示例,本技术实施例还可以执行其它步骤或者各种步骤的变形。此外,各个步骤可以按照本技术实施例呈现的不同的顺序来执行,并且有可能并非要执行本技术实施例中的全部步骤。
93.在本技术实施例中,数据交换方法的执行主体的具体结构,本技术实施例并未特别限定,只要能够实现本技术实施例的提供的方法即可。例如,本技术实施例提供的数据交换方法的执行主体可以是主机,或者为应用于主机中的部件,例如,芯片,本技术实施例对此不进行限定。下述实施例以数据交换方法的执行主体为主机为例进行描述。
94.如图6示,本技术实施例提供的数据交换方法可以包括以下步骤601-步骤613。其中,步骤601为用户态空间中的预加载模块在进行内存交换前执行的准备操作。步骤602-步
骤608为第一数据从内存换出至存储设备的过程。步骤609-步骤613为第二数据从存储设备换入至内存的过程。
95.601、主机在目标应用启动后,在目标应用包含在预存的白名单的情况下,建立换出线程和换入线程。
96.其中,白名单中包括至少一个支持内存交换的应用。换出线程用于执行第一数据的换出操作,换入线程用于执行第二数据的换入操作。
97.需要说明的是,步骤601的具体描述可以参考另一实施例中预加载模块建立换出线程和换入线程的相关描述,在此不再赘述。
98.602、主机获取目标应用的换出请求。
99.603、主机响应于换出请求,在内存中确定目标应用的第一数据。
100.604、主机解除预存的页表的第一虚拟地址与第一物理地址的映射关系,将第一虚拟地址的状态信息设置为第一信息。
101.其中,第一虚拟地址为第一数据在虚拟内存的虚拟地址,第一物理地址为第一数据在内存中的地址。
102.605、主机为第一数据分配第二虚拟地址,并建立第二虚拟地址与第一物理地址的映射关系。
103.606、主机调用用户态接口,将第二虚拟地址对应的第一物理地址指示的第一数据从内存写入存储设备。
104.607、主机在页表中建立第一虚拟地址与第一交换入口的映射关系。
105.其中,第一交换入口用于指示第一数据在存储设备中的位置。
106.608、主机解除第二虚拟地址与第一物理地址的映射关系,删除内存中的第一数据。
107.需要说明的是,步骤602-步骤608的具体描述可以参考另一实施例中换出模块和页表管理模块将第一数据从内存换出至存储设备的相关描述,在此不再赘述。
108.609、主机获取待访问的第二数据的虚拟地址。
109.610、主机在第二数据的虚拟地址的状态信息为第一信息,第二数据为目标应用的数据,且内存中未包括第二数据的情况下,生成目标应用的换入请求。
110.611、主机响应于换入请求,根据预存的页表获取第二数据的虚拟地址对应的第二交换入口。
111.612、主机调用用户态接口,将第二交换入口指示的第二数据从存储设备写入内存。
112.613、主机在页表中建立第二数据的虚拟地址与第二数据的物理地址的映射关系。
113.第二数据的物理地址为第二数据在内存中的地址。
114.需要说明的是,步骤609-步骤613的具体描述可以参考另一实施例中换入模块、页表管理模块和缺页异常上报模块将第二数据从存储设备换入至内存的相关描述,在此不再赘述。
115.本技术实施例提供一种数据交换方法,该方法应用于主机。该主机安装有操作系统和目标应用,操作系统包括用户态空间,该用户态空间设置有目标应用的用户态接口,用户态接口对应一个存储设备。主机获取到目标应用的交换请求后,能够根据该交换请求调
用用户态接口对存储设备执行操作。交换请求为换出请求时,用于请求将目标应用的数据从主机的内存写入存储设备,交换请求为换入请求时,用于请求将存储设备中的数据写入内存。这样,通过在用户态空间设置应用的用户态接口,并调用该用户态接口进行该应用的数据的换出或换入,实现了用户态的内存交换。从而,针对不同的应用能够设置不同的用户态接口,该不同的用户态接口对应的存储设备不同,为用户提供了定制化的用户态内存交换框架,满足了不同应用对存储设备的多样化需求,使得用户能够设计自己想要的内存交换机制。
116.进一步的,由于用户态的读写流程比内核态的读写流程的速度快,因此用户态的内存交换的性能高于内核态的内存交换的性能。为了获取更高效的性能,目前存储设备的驱动程序或协议栈已上移到用户态,导致内核态的内存交换机制无法使用上移到用户态的存储设备。本技术实施例实现了用户态的内存交换机制,该机制能够使用上移到用户态的存储设备。在关系型数据库管理系统(mysql)和业务处理规范(transaction processing performance council,tpcc)场景下测试用户态的内存交换机制,换出或换入的时延为微秒级,实现了在用户无感知的情况下进行用户态的内存交换,提高了用户体验。
117.示例性的,假设在mysql和tpcc场景下,主机将内存中28%的数据换出。表2示出了用户态内存交换机制的性能的相关参数。由表1可知,主机将数据换出时,性能损失仅为2%,内核态内存交换机制的性能损失大于2%。
118.表1
[0119][0120]
上述主要从方法的角度对本技术实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0121]
如图7所示,为本技术实施例提供的一种数据交换装置70的结构示意图。该数据交换装置70可以是主机,也可以是主机中的cpu,还可以是主机中的控制模块,还可以是主机中的客户端。数据交换装置70用于执行图6所示的数据交换方法。数据交换装置70可以包括获取单元71和处理单元72。
[0122]
获取单元71,用于获取目标应用的交换请求,交换请求为换入请求或换出请求,换出请求用于请求将目标应用的数据从主机的内存写入存储设备,换入请求用于请求将存储设备中的数据写入内存。例如,结合图6,获取单元71可以用于执行步骤602、步骤610。处理单元72,用于根据获取单元71获取的交换请求,调用用户态接口对存储设备执行操作。
[0123]
可选的,交换请求为换出请求,处理单元72,具体用于响应于换出请求,在内存中确定目标应用的第一数据,解除预存的页表中的第一虚拟地址与第一物理地址的映射关系,为第一数据分配第二虚拟地址,建立第二虚拟地址与第一物理地址的映射关系。之后,
调用用户态接口,将第二虚拟地址对应的第一物理地址指示的第一数据从内存写入存储设备,并在页表中建立第一虚拟地址与第一交换入口的映射关系。其中第一交换入口用于指示第一数据在存储设备中的位置。第一虚拟地址为第一数据在虚拟内存的虚拟地址,第一物理地址为第一数据在内存中的地址。
[0124]
可选的,如图8所示,数据交换装置70还包括解除单元73和删除单元74。解除单元73,用于解除第二虚拟地址与第一物理地址的映射关系。例如,结合图6,解除单元73可以用于执行步骤608中的解除第二虚拟地址与第一物理地址的映射关系。删除单元74,用于删除内存中的第一数据。例如,结合图6,删除单元74可以用于执行步骤608中的删除内存中的第一数据。
[0125]
可选的,如图8所示,数据交换装置70还包括设置单元75。设置单元75,用于将第一虚拟地址的状态信息设置为第一信息,第一信息用于指示第一虚拟地址对应的第一数据的交换类型为用户态交换类型。
[0126]
可选的,交换请求为换入请求时,获取单元71,具体用于:获取待访问的第二数据的虚拟地址;在第二数据的虚拟地址的状态信息为第一信息,第二数据为目标应用的数据,且内存中未包括第二数据的情况下,生成换入请求,第一信息用于指示第二数据的交换类型为用户态交换类型。
[0127]
可选的,处理单元72,具体用于:响应于换入请求,根据预存的页表获取第二数据的虚拟地址对应的第二交换入口;调用用户态接口,将第二交换入口指示的第二数据从存储设备写入内存;在页表中建立第二数据的虚拟地址与第二数据的物理地址的映射关系,第二数据的物理地址为第二数据在内存中的地址。
[0128]
可选的,如图8所示,数据交换装置70还包括建立单元76。建立单元76,用于在目标应用启动后,建立换出线程和换入线程,换出线程用于执行第一数据的换出操作,换入线程用于执行第二数据的换入操作。例如,结合图6,建立单元76可以用于执行步骤601。
[0129]
可选的,建立单元76,具体用于在目标应用包含在预存的白名单的情况下,建立换出线程和换入线程,白名单中包括至少一个支持内存交换的应用。
[0130]
当然,本技术实施例提供的数据交换装置70包括但不限于上述模块。
[0131]
在实际实现时,获取单元71、处理单元72、解除单元73、删除单元74、设置单元75和建立单元76可以由图2所示的处理器201调用内存202中的程序代码来实现。其具体的执行过程可参考图6所示的数据交换方法部分的描述,这里不再赘述。
[0132]
本技术另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算机指令在主机上运行时,使得主机执行上述方法实施例所示的方法流程中主机执行的各个步骤。
[0133]
本技术另一实施例还提供一种芯片系统,该芯片系统应用于主机。芯片系统包括一个或多个接口电路,以及一个或多个处理器。接口电路和处理器通过线路互联。接口电路用于从主机的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令。当处理器执行计算机指令时,主机执行上述方法实施例所示的方法流程中主机执行的各个步骤。
[0134]
在本技术另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在主机上运行时,使得主机执行上述方法实施例所示的方法流程
中主机执行的各个步骤。
[0135]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0136]
以上所述,仅为本技术的具体实施方式。熟悉本技术领域的技术人员根据本技术提供的具体实施方式,可想到变化或替换,都应涵盖在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1