交换操作的实现方法和装置的制造方法
【技术领域】
[0001] 本发明实施例涉及通信技术,尤其涉及一种交换操作的实现方法和装置。
【背景技术】
[0002] 交换(SWAP)分区虽然是存储介质(例如磁盘)上的一部分,但是被作为许多操作系 统(如Linux、Windows)的虚拟内存分区来使用。当操作系统检测到空闲物理内存不足或 耗尽的时候,操作系统启动SWAP换出操作,将部分物理内存页面中的数据迁移到SWAP分区 中,用于临时扩充物理内存资源的容量。由于SWAP分区本质上是存储介质,其性能会明显 比物理内存的性能差。如果SWAP分区中的数据需要频繁访问,则需要操作系统启动SWAP 换入操作,将SWAP分区中的数据换入到物理内存中。因此,操作系统需要负责将数据在物 理内存和SWAP分区间进行迁移,也就是SWAP操作。
[0003]现有技术中的SWAP操作,操作系统的开销比较大,影响计算机系统的性能。
【发明内容】
[0004] 本发明实施例提供一种交换操作的实现方法和装置,用W解决现有技术中操作系 统的开销大,影响计算机系统的性能的技术问题。
[0005] 第一方面,本发明实施例提供一种交换操作的实现方法,包括:
[0006] 内存控制器接收处理器发送的第一请求;其中,所述第一请求包括第一虚拟地址, 用于请求所述内存控制器为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页 面;
[0007] 所述内存控制器根据当前空闲物理内存空间状态和所述第一请求的优先级判断 是否为所述第一数据分配所述第一空闲物理内存页面;
[0008] 若所述内存控制器为所述第一数据分配了所述第一空闲物理内存页面,则所述内 存控制器根据剩余的空闲物理内存空间状态判断是否启动SWAP换出操作。
[0009] 结合第一方面,在第一方面的第一种可能的实施方式中,所述内存控制器根据当 前空闲物理内存空间状态和所述第一请求的优先级判断是否为所述第一数据分配所述第 一空闲物理内存页面,包括:
[0010] 所述内存控制器判断当前空闲物理内存空间是否大于第一阔值;
[0011] 若是,则所述内存控制器为所述第一数据分配所述第一空闲物理内存页面;若否, 则所述内存控制器判断所述第一请求的优先级是否大于第二阔值;
[0012] 若是,则所述内存控制器为所述第一数据分配所述第一空闲物理内存页面;
[001引若否,则所述内存控制器将所述第一数据存储至所述SWAP分区。
[0014] 结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式 中,若所述内存控制器为所述第一数据分配了所述第一空闲物理内存页面,则所述内存控 制器根据剩余的空闲物理内存空间状态判断是否启动SWAP换出操作,包括:
[0015] 若所述内存控制器判断剩余的空闲物理内存空间状态小于第H阔值,则所述内存 控制器启动SWAP换出操作。
[0016] 结合第一方面的第二种可能的实施方式,在第一方面的第H种可能的实施方式 中,所述内存控制器启动SWAP换出操作,具体包括:
[0017] 所述内存控制器确定访问频度小于第五阔值的物理内存页面;
[001引所述内存控制器在所述SWAP分区中选择第一磁盘片段;
[0019] 所述内存控制器将所述访问频度小于第五阔值的物理内存页面中的数据迁移至 所述第一磁盘片段;
[0020] 所述内存控制器将所述第一虚拟地址和所述第一磁盘片段的映射关系增加至 SWAP分区映射表中;其中,所述SWAP分区映射表包括各个虚拟地址和各个虚拟地址对应的 数据在所述SWAP分区中的存储位置之间的映射关系。
[0021] 结合第一方面,在第一方面的第四种可能的实施方式中,所述方法还包括:
[0022] 所述内存控制器根据当前SWAP分区的第二数据的访问频度判断是否启动SWAP换 入操作。
[0023] 结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式 中,所述内存控制器根据当前SWAP分区的第二数据的访问频度确定是否启动SWAP换入操 作,包括:
[0024] 若所述内存控制器判断当前SWAP分区中的第二数据的访问频度大于第四阔值, 则所述内存控制器启动SWAP换入操作。
[0025] 结合第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式 中,所述内存控制器启动SWAP换入操作,具体包括:
[0026] 所述内存控制器为所述第二数据分配第二空闲物理内存页面;
[0027] 所述内存控制器将所述第二数据迁移至所述第二空闲物理内存页面;
[002引所述内存控制器更新SWAP分区映射表。
[0029] 结合第一方面,在第一方面的第走种可能的实施方式中,所述方法还包括:
[0030] 若所述内存控制器判断所述当前空闲物理内存空间状态和当前未分配的SWAP分 区状态均小于第六阔值,则所述内存控制器通知操作系统执行缺页异常处理。
[0031] 结合第一方面至第一方面的第走种可能的实施方式中的任一项,在第一方面的第 八种可能的实施方式中,所述方法还包括:
[0032]所述内存控制器接收处理器发送的第二请求;其中,所述第二请求携带第二虚拟 地址;
[0033] 所述内存控制器判断所述第二虚拟地址是否合法;
[0034] 若不合法,则所述内存控制器上报所述第二虚拟地址错误给操作系统;
[0035] 若合法,则所述内存控制器根据页表判断所述内存控制器是否为所述第二虚拟地 址对应的第H数据分配了存储空间,获得判断结果;
[0036] 所述内存控制器根据所述判断结果执行第一操作。
[0037] 结合第一方面的第八种可能的实施方式,在第一方面的第九种可能的实施方式 中,若所述判断结果为所述内存控制器为所述第H数据分配了所述存储空间,则所述第一 操作包括:
[003引所述内存控制器根据所述页表判断所述第H数据是否存放于SWAP分区中;
[0039] 若是,则所述内存控制器根据SWAP分区映射表确定所述第H数据存储在所述 SWAP分区中的位置和长度信息;
[0040] 所述内存控制器根据所述第H数据存储在所述SWAP分区中的位置访问所述第H 数据;
[0041] 所述内存控制器将所述第H数据发送给所述处理器;
[0042] 若否,则所述内存控制器确定所述第H数据存储在物理内存空间中;
[0043] 所述内存控制器根据所述页表确定所述第H数据在所述物理内存空间中对应的 物理地址;
[0044] 所述内存控制器根据所述物理地址访问所述第H数据;
[0045] 所述内存控制器将所述第H数据发送给所述处理器。
[0046] 结合第一方面的第八种可能的实施方式,在第一方面的第十种可能的实施方式 中,若所述判断结果为所述内存控制器没有为所述第H数据分配所述存储空间,则所述第 一操作包括:
[0047] 所述内存控制器执行缺页中断处理,为所述第H数据分配所述存储空间。
[0048] 第二方面,本发明实施例提供一种交换操作的实现装置,包括:
[0049] 接收模块,用于接收处理器发送的第一请求;其中,所述第一请求包括第一虚拟地 址,用于请求为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页面;
[0050] 判断分配模块,用于根据当前空闲物理内存空间状态和所述第一请求的优先级判 断是否为所述第一数据分配所述第一空闲物理内存页面;还用于若所述判断分配模块为所 述第一数据分配了所述第一空闲物理内存页面,则根据剩余的空闲物理内存空间状态判断 是否启动SWAP换出操作。
[0051] 结合第二方面,在第二方面的第一种可能的实施方式中,所述判断分配模块,具体 用于判断当前空闲物理内存空间是否大于第一阔值;若是,则为所述第一数据分配所述第 一空闲物理内存页面;若否,则判断所述第一请求的优先级是否大于第二阔值;若是,则为 所述第一数据分配所述第一空闲物理内存页面;若否,则将所述第一数据存储至所述SWAP 分区。
[0052] 结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式 中,所述判断分配模块,具体用于若判断所述剩余的空闲物理内存空间状态小于第H阔值, 则确定启动SWAP换出操作。
[0053] 结合第二方面的第二种可能的实施方式,在第二方面的第H种可能的实施方式 中,所述判断分配模块,具体包括:
[0054] 确定单元,用于确定访问频度小于第五阔值的物理内存页面;
[00巧]选择单元,用于在所述SWAP分区中选择第一磁盘片段;
[0056] 第一迁移单元,用于将所述访问频度小于第五阔值的物理内存页面中的数据迁移 至所述第一磁盘片段;
[0057] 增加单元,用于将所述第一虚拟地址和所述第一磁盘片段的映射关系增加至SWAP 分区映射表中;其中,所述SWAP分区映射表包括各个虚拟地址和各个虚拟地址对应的数据 在所述SWAP分区中的存储位置之间的映射关系。
[0058] 结合第二方面,在第二方面的第四种可能的实施方式中,所述判断分配模块,还用 于
根据当前SWAP分区的第二数据的访问频度判断是否启动SWAP换入操作。
[0059] 结合第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式 中,所述判断分配模块,具体用于若判断当前SWAP分区中的第二数据的访问频度大于第四 阔值,则确定启动SWAP换入操作。
[0060] 结合第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式 中,所述判断分配模块,还包括:
[0061] 分配单元,用于为所述第二数据分配第二空闲物理内存页面;
[0062] 第二迁移单元,用于将所述第二数据迁移至所述第二空闲物理内存页面;
[0063] 更新单元,用于更新SWAP分区映射表。
[0064] 结合第二方面,在第二方面的第走种可能的实施方式中,所述判断分配模块还用 于若判断所述当前空闲物理内存空间状态和当前未分配的SWAP分区状态均小于第六阔 值,则通知操作系统执行缺页异常处理。
[0065] 结合第二方面至第二方面的第走种可能的实施方式中的任一项,在第二方面的第 八种可能的实施方式中,所述接收模块,还用于接收处理器发送的第二请求;其中,所述第 二请求携带第二虚拟地址;所述判断分配模块,还用于判断所述第二虚拟地址是否合法; 若不合法,则所述判断分配模块上报所述第二虚拟地址错误给操作系统;若合法,则所述判 断分配模块根据页表判断是否为所述第二虚拟地址对应的第H数据分配了存储空间,获得 判断结果;并根据所述判断结果执行第一操作。
[0066] 结合第二方面的第八种可能的实施方式,在第二方面的第九种可能的实施方式 中,所述装置还包括:发送模块和访问模块;若所述判断结果为所述判断分配模块为所述 第H数据分配了所述存储空间,则所述判断分配模块,具体用于根据所述页表判断所述第 H数据是否存放于SWAP分区中;
[0067] 若是,则所述判断分配模块根据SWAP分区映射表确定所述第H数据存储在所述 SWAP分区中的位置和长度信息;则所述访问模块,具体用于根据所述第H数据存储在所述 SWAP分区中的位置访问所述第H数据;所述发送模块,具体用于将所述第H数据发送给所 述处理器;
[0068] 若否,则所述判断分配模块确定所述第H数据存储在物理内存空间中,并根据所 述页表确定所述第H数据在所述物理内存空间中对应的物理地址;则所述访问模块,用于 根据所述物理地址访问所述第H数据;所述发送模块,用于将所述第H数据发送给所述处 理器。
[0069] 结合第二方面的第八种可能的实施方式,在第二方面的第十种可能的实施方式 中,若所述判断结果为所述判断分配模块没有为所述第H数据分配所述存储空间,则所述 判断分配模块,具体用于执行缺页中断处理,为所述第H数据分配所述存储空间。
[0070] 本发明实施例提供的交换操作的实现方法和装置,通过内存控制器接收处理器发 送的携带第一虚拟地址的第一请求,来请求内存控制器为该第一虚拟地址对应的第一数据 分配第一空闲物理内存页面;内存控制器根据当前空闲物理内存空间状态和第一请求的优 先级判断是否为该第一数据分配第一空闲物理内存页面;并且,当内存控制器为第一数据 分配了所述第一空闲物理内存页面之后,内存控制器根据剩余的空闲物理内存空间状态判 断是否启动SWAP换出操作。本发明实施例提供的方法,通过内存控制器来管理计算机系统 的物理内存资源,并通过内存控制器详细分析数据的访问频度w及访问模式,并根据该些 信息确定是否执行SWAP操作,从而降低了操作系统的开销,提高了计算机系统的性能。
【附图说明】
[0071]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可W 根据该些附图获得其他的附图。
[0072] 图1为本发明提供的交换操作的实现方法实施例一的流程示意图;
[0073] 图2为本发明提供的交换操作的实现方法实施例二的流程示意图;
[0074] 图3为本发明提供的交换操作的实现方法实施例H的流程示意图;
[0075] 图4为本发明提供的交换操作的实现装置实施例一的结构示意图;
[0076]图5为本发明提供的交换操作的实现装置实施例二的结构示意图;
[0077] 图6为本发明提供的交换操作的实现装置实施例H的结构示意图;
[0078] 图7为本发明提供的交换操作的实现装置实施例四的结构示意图。
【具体实施方式】
[0079] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0080] 本发明实施例适用于内存控制器代替操作系统来管理物理内存空间的场景,即物 理内存页面的分配和释放均是由内存控制器来控制。
[0081] 图1为本发明提供的交换操作的实现方法实施例一的流程示意图,该方法的执行 主体为内存控制器,该内存控制器可W是单独的实体设备,也可W集成在计算机系统中。如 图1所示,该方法包括:
[0082]S101;内存控制器接收处理器发送的第一请求;其中,该第一请求包括第一虚拟 地址,用于请求内存控制器为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页 面。
[0083] 具体的,内存控制器接收处理器发送的第一请求,该第一请求可W包括第一虚拟 地址,还可W包括该第一请求的进程号(processidentity,W下简称Pid)。该第一虚拟地 址与第一数据对应,实际上该第一请求是为了向内存控制器请求为第一数据分配大小合适 的第一空闲物理内存页面。需要说明的是,存储数据的空间可W是物理内存空间,也可W是 SWAP分区,物理内存空间的性能优于SWAP分区的性能。本发明实施例是从第一数据未来可 能被频繁访问的角度出发,因而该第一请求首先请求的是空闲的物理内存空间。
[0084]S102;内存控制器根据当前空闲物理内存空间状态和上述第一请求的优先级判断 是否为上述第一数据分配第一空闲物理内存页面。
[0085] 可选的,内存控制器可W通过判断当前空闲物理内存空间是否足W存储第一数据 来确定是否为第一数据分配第一空闲物理内存页面;或者,还可W是通过第一请求的优先 级的高低来判断是否为第一数据分配第一空闲物理内存页面;或者,还可w是通过当前空 闲物理内存空间和该第一请求的优先级结合来判断是否为第一数据分配第一空闲物理内 存页面,本发明实施例对此并不做限制。
[0086] S103;若内存控制器为上述第一数据分配了第一空闲物理内存页面,则内存控制 器根据剩余的空闲物理内存空间状态判断是否启动SWAP换出操作。
[0087] 具体的,若内存控制器确定为第一数据分配空闲物理内存页面,将该个空闲物理 内存页面标记为第一空闲物理内存页面,因为空闲物理内存空间中包括一个或多个空闲 物理内存页面,该里只是为了区分分配了的空闲物理内存页面和未分配的空闲物理内存页 面。当内存控制器为第一数据分配了第一空闲物理内存页面之后,内存控制器根据剩余的 空闲物理内存空间状态判断是否启动SWAP换出操作。需要说明的是,该里的剩余的空闲物 理内存空间状态可W为上述除去第一空闲物理内存页面后的空闲物理内存空间状态。
[0088] 本发明实施例提供的交换操作的实现方法,通过内存控制器接收处理器发送的携 带第一虚拟地址的第一请求,来请求内存控制器为该第一虚拟地址对应的第一数据分配第 一空闲物理内存页面;内存控制器根据当前空闲物理内存空间状态和第一请求的优先级判 断是否为该第一数据分配第一空闲物理内存页面;并且,当内存控制器为第一数据分配了 所述第一空闲物理内存页面之后,内存控制器根据剩余的空闲物理内存空间状态判断是否 启动SWAP换出操作。本发明实施例提供的方法,通过内存控制器来管理计算机系统的物理 内存资源,并通过内存控制器详细分析数据的访问频度W及访问模式,并根据该些信息确 定是否执行SWAP操作,从而降低了操作系统的开销,提高了计算机系统的性能。
[0089] 图2为本发明提供的交换操作的实现方法实施例二的流程示意图。在上述实施例 的基础上,作为本发明实施例一种可能的实施方式,本实施例涉及的是内存控制器为上述 第一数据分配第一空闲物理内存页面的具体过程,即是上述S102的具体描述。如图2所示, 上述S102包括:
[0090] S201 ;内存控制器判断当前空闲物理内存空间是否大于第一阔值;若是,则执行 S202 ;若否,则执行S203。
[0091] S202 ;内存控制器为第一数据分配第一空闲物理内存页面。
[0092] 具体的,当处理器请求内存控制器为第一数据分配第一空闲物理内存页面时,内 存控制器判断当前的空闲物理内存空间是否足W分配给第一虚拟地址对应的第一数据。可 选的,当前空闲物理内存空间状态可W包括空闲物理内存页面的状态,还可W包括其他已 经分配了的物理内存页面的访问频度。如果空闲物理内存页面较多,且数量大于第一
阔值, 内存控制器就将第一空闲物理内存页面分配给第一数据。
[0093] S203 ;内存控制器判断上述第一请求的优先级是否大于第二阔值。若是,则执行 S204 ;若否,则执行S205。
[0094] S204 ;内存控制器为上述第一数据分配第一空闲物理内存页面。
[0095] S205 ;内存控制器将上述第一数据存储至SWAP分区。
[0096] 具体的,当空闲物理内存页面的数量小于第一阔值,内存控制器会判断上述第一 请求的优先级是否大于第二阔值,若大于,则内存控制器会在为数不多的空闲物理内存页 面中选择第一空闲物理内存页面分配给第一数据;若上述第一请求的优先级小于第二阔 值,则内存控制器会将第一数据存储至SWAP分区中。该种优先级低于第二阔值的请求例 如可w是只访问一次的数据类型,因该数据只需要被访问一次,即访问频度低,则将该数据 存放至SWAP分区中就可W满足要求了。需要说明的是,内存控制器将第一数据直接存储 至SWAP分区中,是基于当前未分配的SWAP分区足够第一数据存储的前提的。也就是说,当 前SWAP分区的状态内存控制器是可知的,因为操作系统会将SWAP分区的信息传递给内存 控制器。该种信息传递的方式可W有多种,一种方式是通过操作系统与内存控制器的通路, 操作系统直接将SWAP分区的具体信息发送给内存控制器;另一种方式是操作系统将记录 SWAP分区信息的地址传递给内存控制器,由内存控制器直接去读取相应的信息。
[0097] 本发明实施例提供的交换操作的实现方法,通过内存控制器接收处理器发送的携 带第一虚拟地址的第一请求,来请求内存控制器为该第一虚拟地址对应的第一数据分配第 一空闲物理内存页面;内存控制器根据当前空闲物理内存空间状态和第一请求的优先级判 断是否为该第一数据分配第一空闲物理内存页面;并且,当内存控制器为第一数据分配了 所述第一空闲物理内存页面之后,内存控制器根据剩余的空闲物理内存空间状态判断是否 启动SWAP换出操作。本发明实施例提供的方法,通过内存控制器来管理计算机系统的物理 内存资源,并通过内存控制器详细分析数据的访问频度W及访问模式,并根据该些信息来 确定是否启动SWAP换出操作,从而降低了操作系统的开销,提高了计算机系统的性能。
[0098] 在上述实施例的基础上,作为本发明实施例的另一种可能的实施方式,本实施例 的涉及的方法是内存控制器为第一数据分配了第一空闲物理内存页面之后,确定是否执行 SWAP换出操作的具体过程,也就是上述S103的具体过程。上述S103具体为:若内存控制 器判断剩余的空闲物理内存空间状态小于第H阔值,则内存控制器启动SWAP换出操作
[0099] 具体的,当内存控制器为第一数据分配第一空闲物理内存页面之后,内存控制器 会检测除去第一空闲物理内存页面后的剩余空闲物理内存空间的状态,当检测到剩余的空 闲物理内存空间状态小于第H阔值时,内存控制器会在非空闲物理内存空间中确定访问频 度小于第五阔值的物理内存页面;并且,内存控制器在SWAP分区中选择第一磁盘片段,将 所述访问频度小于第五阔值的物理内存页面中的数据迁移至第一磁盘片段。可选的,内存 控制器可W将第一数据先写入到缓存中,再将缓存中的数据写入到SWAP分区中的指定位 置中(即第一磁盘片段)。进一步地,上述内存控制器将上述第一数据对应的第一虚拟地址 和所述第一磁盘片段的映射关系增加至SWAP分区映射表中;该SWAP分区映射表包括各个 虚拟地址和各个虚拟地址对应的数据在SWAP分区中的存储位置之间的映射关系。它既可 W存放在内存区域中,也可W存在于SRAM缓存中。表1所示的是SWAP分区映射表中的一 个条目,主要包括了请求的进程号及虚地址(Pid/vad化)、数据长度(length),W及数据在 SWAP分区中的偏移(SWAP-offset)。在内存控制器接收到处理器的数据访问的请求时,需 要判断数据是否在SWAP分区中。如果在SWAP分区中,则可W通过查找SWAP分区映射表, 确定数据在SWAP分区中的位置。
[0100] 表 1
[0101] Pid/vaddr length SWAP-offset
[0102] 本发明实施例提供的交换操作的实现方法,通过内存控制器接收处理器发送的携 带第一虚拟地址的第一请求,来请求内存控制器为该第一虚拟地址对应的第一数据分配第 一空闲物理内存页面;内存控制器根据当前空闲物理内存空间状态和第一请求的优先级判 断是否为该第一数据分配第一空闲物理内存页面;并且,当内存控制器为第一数据分配了 所述第一空闲物理内存页面之后,内存控制器根据剩余的空闲物理内存空间状态判断是否 启动SWAP换出操作。本发明实施例提供的方法,通过内存控制器来管理计算机系统的物理 内存资源,并通过内存控制器详细分析数据的访问频度W及访问模式,并根据该些信息来 确定是否启动SWAP换出操作,从而降低了操作系统的开销,提高了计算机系统的性能。
[0103] 进一步地,在上述实施例的基础上,作为本发明实施例的第H种可能的实施方式, 本实施例涉及的方法是内存控制器确定是否执行SWAP换入操作的具体过程。该过程可W 在上述实施例中的S101之前进行,也可W在S103之后进行,即本实施例的过程并不受限于 上述实施例中内存控制器是否为第一数据分配第一空闲物理内存页面的过程。
[0104]内存控制器可W根据当前SWAP分区的第二数据的访问频度确定是否执行SWAP换 入操作;可选的,还可W判断当前的空闲物理内存页面的数量来判断是否启动SWAP换入操 作。当内存控制器判断当前SWAP分区中的第二数据的访问频度大于第四阔值,即当前SWAP 分区中的第二数据被频繁访问,内存控制器启动SWAP换入操作。如果当前的空闲物理内存 页面较多,那么内存控制器直接分配一个第二空闲物理内存页面,将SWAP分区中的第二数 据迁移到物理页面中。SWAP换入操作的流程与上述SWAP换出操作的流程类似,只是数据 从SWAP分区读入到缓存中,再从缓存中写入到第二空闲物理内存页面中。并且,内存控制 器在执行SWAP换入操作之后,删除SWAP分区映射表中的第二数据对应的虚拟地址和第二 数据原来在SWAP分区中存储位置之间的映射关系,即更新SWAP分区映射表。
[0105] 进一步地,内存控制器还会在页表中增加一个属性,用于指定第一数据和第二数 据是存储在物理内存中,还是存储在SWAP分区中。
[0106] 可选的,内存控制器在判断当前空闲物理内存空间状态时,还会判断当前未分配 的SWAP分区的状态,当内存控制器判断当前空闲物理内存空间状态和当前未分配的SWAP 分区状态均小于第六阔值时,则内存控制器会通知操作系统执行缺页异常(pagefault)处 理。操作系统执行该异常处理的方式可W有很多种,一种方式是杀掉部分第一请求,释放该 第一请求对应的物理内存空间或是SWAP分区的资源。
[0107] 本发明实施例提供的交换操作的实现方法,通过内存控制器根据当前SWAP分区 中的第二数据的访问频度,确定是否启动SWAP换入操作。即本发明实施例通过内存控制器 来管理计算机系统的物理内存资源,并通过内存控制器详细分析数据的访问频度W及访问 模式,并根据该些信息来确定是否执行SWAP换入操作,从而降低了操作系统的开销,提高 了计算机系统的性能。
[010引图3为本发明提供的交换操作的实现方法实施例H的流程示意图。该方法中的所 有步骤可W在上述S101之前,也可W在上述S103之后,或者该方法的执行步骤可W和实施 例一中的方法并行进行;即本实施例的过程并不受限于上述实施例中内存控制器是否为第 一数据分配第一空闲物理内存页面的过程。如图3所示,该方法包括:
[0109]S301 ;内存控制器接收处理器发送的第二请求;其中,该第二请求携带第二虚拟 地址。
[0110] 具体的,第二请求中携带的第二虚拟地址是处理器需要访问的数据对应的第二虚 拟地址,该第二虚拟地址可W与上述第一虚拟地址相同,也可W不同。
[01U] S302 ;内存控制器判断上述第二虚拟地址是否合法;若否,则执行S303 ;若是,贝u 执行S304。
[0112] 可选的,操作系统在为数据分配虚拟地址时,它会有所分配的虚拟地址的范围,并 且会告知内存控制器;当内存控制器判断所接收到的第二请求中的第二虚拟地址越界时, 则就说明第二虚拟地址不合法。当然,内存控制器还可W通过其他的方式判断第二虚拟地 址是否合法,本发明实施例在此并不走限制。
[0113]S303 ;内存控制器上报第二虚拟地址错误给操作系统。
[0114] 可选的,内存控制器可W通过系统中断等方式,将该错误报告给操作系统。
[0115]S304;内存控制器根据页表判断内存控制器是否为上述第二虚拟地址对应的第H 数据分配了存储空间;若是,则执行S305 ;若否,则执行S313。
[0116] 具体的,内存控制器可W根据页表来判断是否为上述第二虚拟地址对应的第H数 据分配了存储空间,获得相应的判断结果。该存储空间可W是物理内存空间,还可W是SWAP 分区。
[0117]S305;内存控制器根据上述页表判断第H数据是否存放于SWAP分区中;若是,贝U 执行S306 ;若否,则执行S309。
[0118]S306 ;内存控制器根据SWAP分区映射表确定第H数据存储在所述SWAP
分区中的 位置和长度信息。
[0119]S307;内存控制器根据第H数据存储在所述SWAP分区中的位置访问第H数据。
[0120] S308 ;内存控制器将第H数据发送给处理器。
[0121] 具体的,当上述判断结果为内存控制器为第H数据分配了存储空间,则进一步地, 内存控制器还根据页表判断该第H数据是否存放于SWAP分区。当内存控制器根据页表判 断第H数据存放于SWAP分区,并根据SWAP分区映射表判断该第H数据在SWAP分区中的具 体存储位置和长度信息之后,内存控制器去该位置访问第H数据,并将该第H数据返回给 处理器,并结束该第二请求的流程。
[0122] S309 ;内存控制器确定第H数据存储在物理内存空间中。
[0123]S310;内存控制器根据上述页表确定第H数据在物理内存空间中对应的物理地 址。
[0124]S311;内存控制器根据所述物理地址访问第H数据。
[0125]S312;内存控制器将第H数据发送给处理器。
[0126] 具体的,当内存控制器根据页表判断第H数据没有存放于SWAP分区,而是存放在 物理内存空间中,则内存控制器根据页表确定第二虚拟地址对应的第H数据存在在物理内 存空间中的物理地址;之后,内存控制器会到该物理地址中访问第H数据,并将第H数据返 回给处理器,并结束该第二请求的流程。
[0127]S313;内存控制器执行缺页中断处理,为上述第H数据分配存储空间。
[012引具体的,当上述判断结果为内存控制器没有为第H数据分配存储空间,则内存控 制器会执行缺页中断处理,为该第H数据分配存储空间。需要说明的是,内存控制器为第二 虚拟地址对应的第H数据分配存储空间,可W参照图2所示的实施例,在此不再费述。
[0129] 当内存控制器为第H数据分配了存储空间,无论存储空间是物理内存空间,还是 SWAP分区中的某一个磁盘片段,并且无论该存储空间存在不存在未清零的其他数据,内存 控制器都会将存储空间里的内容返回给处理器,并结束流程。若存储空间里没有数据,则内 存控制器会返回一个空值为处理器;若存储空间里还有之前未清空的数据,则内存控制器 依然会将该些数据返回给处理器。
[0130] 本发明实施例提供的交换操作的实现方法,通过内存控制器接收处理器携带第二 虚拟地址的第二请求,并判断该第二虚拟地址是否合法;当该第二虚拟地址合法时,通过页 表来判断是否为第二虚拟地址对应的第H数据分配了存储空间,并根据页表或SWAP分区 映射表判断该第H数据存储在物理内存空间中还是SWAP分区中,并访问第H数据,将第H 数据返回给处理器。本发明实施例提供的方法,通过内存控制器来处理处理器发送的第二 请求,降低了操作系统的开销,提升了计算机系统的性能。
[0131] 本领域普通技术人员可W理解;实现上述各方法实施例的全部或部分步骤可W通 过程序指令相关的硬件来完成。前述的程序可W存储于一计算机可读取存储介质中。该程 序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括;ROM、RAM、磁碟 或者光盘等各种可W存储程序代码的介质。
[0132] 图4为本发明提供的交换操作的实现装置实施例一的结构示意图。该装置可W集 成在内存控制器中,也可W为内存控制器。如图4所示,该装置包括:接收模块10和判断 分配模块11。其中,接收模块10,用于接收处理器发送的第一请求;其中,所述第一请求包 括第一虚拟地址,用于请求为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页 面;判断分配模块11,用于根据当前空闲物理内存空间状态和所述第一请求的优先级判断 是否为所述第一数据分配所述第一空闲物理内存页面;还用于若所述判断分配模块11为 所述第一数据分配了所述第一空闲物理内存页面,则根据剩余的空闲物理内存空间状态判 断是否启动SWAP换出操作。
[0133] 本发明实施例提供的交换操作的实现装置,可W执行上述方法实施例中的技术方 案,其实现原理和技术效果类似,在此不再费述。
[0134] 在上述图4所示实施例的基础上,进一步地,上述判断分配模块11,具体用于判断 当前空闲物理内存空间是否大于第一阔值;若是,则为所述第一数据分配所述第一空闲物 理内存页面;若否,则判断所述第一请求的优先级是否大于第二阔值;若是,则为所述第一 数据分配所述第一空闲物理内存页面;若否,则将所述第一数据存储至所述SWAP分区。
[0135] 本发明实施例提供的交换操作的实现装置,可W执行上述方法实施例中的技术方 案,其实现原理和技术效果类似,在此不再费述。
[0136] 图5为本发明提供的交换操作的实现装置实施例二的结构示意图。上述判断分 配模块11,具体用于若判断所述剩余的空闲物理内存空间状态小于第H阔值,则确定启动 SWAP换出操作。在上述图4所示实施例的基础上,进一步地,该判断分配模块11,具体包括: 确定单元110、选择单元111、第一迁移单元112和增加单元113。其中,确定单元110,用于 确定访问频度小于第五阔值的物理内存页面;选择单元111,用于在所述SWAP分区中选择 第一磁盘片段;第一迁移单元112,用于将所述访问频度小于第五阔值的物理内存页面中 的数据迁移至所述第一磁盘片段;增加单元113,用于将所述第一虚拟地址和所述第一磁 盘片段的映射关系增加至SWAP分区映射表中;其中,所述SWAP分区映射表包括各个虚拟地 址和各个虚拟地址对应的数据在所述SWAP分区中的存储位置之间的映射关系。
[0137] 本发明实施例提供的交换操作的实现装置,可W执行上述方法实施例中的技术方 案,其实现原理和技术效果类似,在此不再费述。
[013引图6为本发明提供的交换操作的实现装置实施例H的结构示意图。上述判断分配 模块11,还用于根据当前SWAP分区的第二数据的访问频度判断是否启动SWAP换入操作,即 若判断当前SWAP分区中的第二数据的访问频度大于第四阔值,则确定启动SWAP换入操作。 在上述图5所示实施例的基础上,进一步地,上述判断分配模块11,还包括:分配单元114、 第二迁移单元115和更新单元116。其中,分配单元114,用于为所述第二数据分配第二空 闲物理内存页面;第二迁移单元115,用于将所述第二数据迁移至所述第二空闲物理内存 页面;更新单元116,用于更新SWAP分区映射表。
[0139]可选的,上述判断分配模块11还用于若判断所述当前空闲物理内存空间状态和 当前未分配的SWAP分区状态均小于第六阔值,则通知操作系统执行缺页异常处理。
[0140]本发明实施例提供的交换操作的实现装置,可W执行上述方法实施例中的技术方 案,其实现原理和技术效果类似,在此不再费述。
[0141]图7为本发明提供的交换操作的实现装置实施例四的结构示意图。在上述图6所 示实施例的基础上,进一步地,上述装置还包括:发送模块12和访问模块13。上述接收模块 10,还用于接收处理器发送的第二请求;其中,所述第二请求携带第二虚拟地址;所述判断 分配模块11,还用于判断所述第二虚拟地址是否合法;若不合法,则所述判断分配模块11 上报所述第二虚拟地址错误给操作系统;若合法,则所述判断分配模块11根据页表判断是 否为所述第二虚拟地址对应的第H数据分配了存储空间,获得判断结果;并根据所述判断 结果执行第一操作。
[0142]若所述判断结果为所述判断分配模块11为所述第H数据分配了所述存储空间, 则所述判断分配模块11,具体用于根据所述页表判断所述第H数据是否存放于SWAP分 区中;若是,则所述判断分配模块11根据SWAP分区映射表确定所述第H数据存储在所述 SWAP分区中的位置和长度信息;则所述访问模块13,具体用于根据所述第H数据存储在所 述SWAP分区中的位置访问所述第H数据;所述发送模块12,具体用于将所述第H数据发送 给所述处理器;若否,则所述判断分配模块11确定所述第H数据存储在物理内存空间中, 并根据所述页表确定所述第H数据在所述物理内存空间中对应的物理地址;则所述访问模 块13,用于根据所述物理地址访问所述第H数据;所述发送模块12,用于将所述第H数据 发送给所述处理器。
[0143]若所述判断结果为所述判断分配模块11没有为所述第H数据分配所述存储空 间,则所述判断分配模块11,具体用于执行缺页中断处理,为所述第H数据分配所述存储空 间。
[0144]本发明实施例提供的交换操作的实现装置,可W执行上述方法实施例中的技术方 案,其实现原理和技术效果类似,在此不再费述。
[0145] 最后应说明的是;W上各实施例仅用W说明本发明的技术方案,而非对其限制; 尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可W对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征 进行等同替换;而该些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技 术方案的范围。
【主权项】
1. 一种交换操作的实现方法,其特征在于,包括: 内存控制器接收处理器发送的第一请求;其中,所述第一请求包括第一虚拟地址,用于 请求所述内存控制器为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页面; 所述内存控制器根据当前空闲物理内存空间状态和所述第一请求的优先级判断是否 为所述第一数据分配所述第一空闲物理内存页面; 若所述内存
控制器为所述第一数据分配了所述第一空闲物理内存页面,则所述内存控 制器根据剩余的空闲物理内存空间状态判断是否启动交换SWAP换出操作。2. 根据权利要求1所述的方法,其特征在于,所述内存控制器根据当前空闲物理内存 空间状态和所述第一请求的优先级判断是否为所述第一数据分配所述第一空闲物理内存 页面,包括: 所述内存控制器判断当前空闲物理内存空间是否大于第一阈值; 若是,则所述内存控制器为所述第一数据分配所述第一空闲物理内存页面;若否,则所 述内存控制器判断所述第一请求的优先级是否大于第二阈值; 若是,则所述内存控制器为所述第一数据分配所述第一空闲物理内存页面; 若否,则所述内存控制器将所述第一数据存储至所述SWAP分区。3. 根据权利要求2所述的方法,其特征在于,若所述内存控制器为所述第一数据分配 了所述第一空闲物理内存页面,则所述内存控制器根据剩余的空闲物理内存空间状态判断 是否启动SWAP换出操作,包括 : 若所述内存控制器判断剩余的空闲物理内存空间状态小于第三阈值,则所述内存控制 器启动SWAP换出操作。4. 根据权利要求3所述的方法,其特征在于,所述内存控制器启动SWAP换出操作,具体 包括: 所述内存控制器确定访问频度小于第五阈值的物理内存页面; 所述内存控制器在所述SWAP分区中选择第一磁盘片段; 所述内存控制器将所述访问频度小于第五阈值的物理内存页面中的数据迁移至所述 第一磁盘片段; 所述内存控制器将所述第一虚拟地址和所述第一磁盘片段的映射关系增加至SWAP分 区映射表中;其中,所述SWAP分区映射表包括各个虚拟地址和各个虚拟地址对应的数据在 所述SWAP分区中的存储位置之间的映射关系。5. 根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述内存控制器根据当前SWAP分区的第二数据的访问频度判断是否启动SWAP换入操 作。6. 根据权利要求5所述的方法,其特征在于,所述内存控制器根据当前SWAP分区的第 二数据的访问频度确定是否启动SWAP换入操作,包括 : 若所述内存控制器判断当前SWAP分区中的第二数据的访问频度大于第四阈值,则所 述内存控制器启动SWAP换入操作。7. 根据权利要求6所述的方法,其特征在于,所述内存控制器启动SWAP换入操作,具体 包括: 所述内存控制器为所述第二数据分配第二空闲物理内存页面; 所述内存控制器将所述第二数据迁移至所述第二空闲物理内存页面; 所述内存控制器更新SWAP分区映射表。8. 根据权利要求1所述的方法,其特征在于,所述方法还包括: 若所述内存控制器判断所述当前空闲物理内存空间状态和当前未分配的SWAP分区状 态均小于第六阈值,则所述内存控制器通知操作系统执行缺页异常处理。9. 根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括: 所述内存控制器接收处理器发送的第二请求;其中,所述第二请求携带第二虚拟地 址; 所述内存控制器判断所述第二虚拟地址是否合法; 若不合法,则所述内存控制器上报所述第二虚拟地址错误给操作系统; 若合法,则所述内存控制器根据页表判断所述内存控制器是否为所述第二虚拟地址对 应的第三数据分配了存储空间,获得判断结果; 所述内存控制器根据所述判断结果执行第一操作。10. 根据权利要求9所述的方法,其特征在于,若所述判断结果为所述内存控制器为所 述第三数据分配了所述存储空间,则所述第一操作包括: 所述内存控制器根据所述页表判断所述第三数据是否存放于SWAP分区中; 若是,则所述内存控制器根据SWAP分区映射表确定所述第三数据存储在所述SWAP分 区中的位置和长度信息; 所述内存控制器根据所述第三数据存储在所述SWAP分区中的位置访问所述第三数 据; 所述内存控制器将所述第三数据发送给所述处理器; 若否,则所述内存控制器确定所述第三数据存储在物理内存空间中; 所述内存控制器根据所述页表确定所述第三数据在所述物理内存空间中对应的物理 地址; 所述内存控制器根据所述物理地址访问所述第三数据; 所述内存控制器将所述第三数据发送给所述处理器。11. 根据权利要求9所述的方法,其特征在于,若所述判断结果为所述内存控制器没有 为所述第三数据分配所述存储空间,则所述第一操作包括: 所述内存控制器执行缺页中断处理,为所述第三数据分配所述存储空间。12. -种交换操作的实现装置,其特征在于,包括: 接收模块,用于接收处理器发送的第一请求;其中,所述第一请求包括第一虚拟地址, 用于请求为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页面; 判断分配模块,用于根据当前空闲物理内存空间状态和所述第一请求的优先级判断是 否为所述第一数据分配所述第一空闲物理内存页面;还用于若所述判断分配模块为所述第 一数据分配了所述第一空闲物理内存页面,则根据剩余的空闲物理内存空间状态判断是否 启动交换SWAP换出操作。13. 根据权利要求12所述的装置,其特征在于,所述判断分配模块,具体用于判断当前 空闲物理内存空间是否大于第一阈值;若是,则为所述第一数据分配所述第一空闲物理内 存页面;若否,则判断所述第一请求的优先级是否大于第二阈值;若是,则为所述第一数据 分配所述第一空闲物理内存页面;若否,则将所述第一数据存储至所述SWAP分区。14. 根据权利要求13所述的装置,其特征在于,所述判断分配模块,具体用于若判断所 述剩余的空闲物理内存空间状态小于第三阈值,则确定启动SWAP换出操作。15. 根据权利要求14所述的装置,其特征在于,所述判断分配模块,具体包括: 确定单元,用于确定访问频度小于第五阈值的物理内存页面; 选择单元,用于在所述SWAP分区中选择第一磁盘片段; 第一迁移单元,用于将所述访问频度小于第五阈值的物理内存页面中的数据迁移至所 述第一磁盘片段; 增加单元,用于将所述第一虚拟地址和所述第一磁盘片段的映射关系增加至SWAP分 区映射表中;其中,所述SWAP分区映射表包括各个虚拟地址和各个虚拟地址对应的数据在 所述SWAP分区中的存储位置之间的映射关系。16. 根据权利要求12所述的装置,其特征在于,所述判断分配模块,还用于根据当前 SWAP分区的第二数据的访问频度判断是否启动SWAP换入操作。17. 根据权利要求16所述的装置,其特征在于,所述判断分配模块,具体用于若判断当 前SWAP分区中的第二数据的访问频度大于第四阈值,则确定启动SWAP换入操作。18. 根据权利要求17所述的装置,其特征在于,所述判断分配模块,还包括: 分配单元,用于为所述第二数据分配第二空闲物理内存页面; 第二迁移单元,用于将所述第二数据迁移至所述第二空闲物理内存页面; 更新单元,用于更新SWAP分区映射表。19. 根据权利要求12所述的装置,其特征在于,所述判断分配模块还用于若判断所述 当前空闲物理内存空间状态和当前未分配的SWAP分区状态均小于第六阈值,则通知操作 系统执行缺页异常处理。20. 根据权利要求12-19任一项所述的装置,其特征在于,所述接收模块,还用于接收 处理器发送的第二请求;其中,所述第二请求携带第二虚拟地址;所述判断分配模块,还用 于判断所述第二虚拟地址是否合法;若不合法,则所述判断分配模块上报所述第二虚拟地 址错误给操作系统;若合法,则所述判断分配模块根据页表判断是否为所述第二虚拟地址 对应的第三数据分配了存储空间,获得判断结果;并根据所述判断结果执行第一操作。21. 根据权利要求20所述的装置,其特征在于,所述装置还包括:发送模块和访问模 块;若所述判断结果为所述判断分配模块为所述第三数据分配了所述存储空间,则所述判 断分配模块,具体用于根据所述页表判断所述第三数据是否存放于SWAP分区中; 若是,则所述判断分配模块根据SWAP分区映射表确定所述第三数据存储在所述SWAP 分区中的位置和长度信息;则所述访问模块,具体用于根据所述第三数据存储在所述SWAP 分区中的位置访问所述第三数据;所述发送模块,具体用于将所述第三数据发送给所述处 理器; 若否,则所述判断分配模块确定所述第三数据存储在物理内存空间中,并根据所述页 表确定所述第三数据在所述物理内存空间中对应的物理地址;则所述访问模块,用于根据 所述物理地址访问所述第三数据;所述发送模块,用于将所述第三数据发送给所述处理器。22. 根据权利要求20所述的装置,其特征在于,若所述判断结果为所述判断分配模块 没有为所述第三数据分配所述存储空间,则所述判断分配模块,具体用于执行缺页中断处 理,为所述第三数据分配所述存储空间。
【专利摘要】本发明实施例提供一种交换操作的实现方法和装置。该方法包括:内存控制器接收处理器发送的第一请求;其中,所述第一请求包括第一虚拟地址,用于请求所述内存控制器为所述第一虚拟地址对应的第一数据分配第一空闲物理内存页面;所述内存控制器根据当前空闲物理内存空间状态和所述第一请求的优先级判断是否为所述第一数据分配所述第一空闲物理内存页面;若所述内存控制器为所述第一数据分配了所述第一空闲物理内存页面,则所述内存控制器根据剩余的空闲物理内存空间状态判断是否启动SWAP换出操作。本发明实施例提供的方法,降低了操作系统的开销,提升了计算机性能。
【IPC分类】G06F12/08, G06F3/06
【公开号】CN104881241
【申请号】CN201410072521
【发明人】黄永兵, 刘垚, 陈明宇
【申请人】华为技术有限公司, 中国科学院计算技术研究所
【公开日】2015年9月2日
【申请日】2014年2月28日
转载请注明原文地址:https://www.famiwei.com/read-8138831.html