实现内存与外部存储器交换功能的方法和装置、安全处理器与流程

文档序号:17585981发布日期:2019-05-03 21:19阅读:386来源:国知局
本发明涉及虚拟化
技术领域
:,具体而言,涉及一种实现内存与外部存储器交换功能的方法和装置、安全处理器。
背景技术
::linux是一种操作系统,也是虚拟化技术中虚拟机管理程序hypervisor使用的操作系统。linux的内存与外部存储器交换功能,又称swap,是指当linux的可用内存不足,将部分长时间不使用的内存存储到外部存储上,从而释放出这部分内存。当需要使用被存储到外部存储上的内存内容时,linux会分配一个新的页面,将内容从外部存储上复制过来。发明人在研究中发现,虚拟化技术中对物理内存的加密方式下产生的密文是与物理内存的地址相关的,将该密文换出到外部存储后再换入时,会利用新分配的物理内存的地址解密该密文,而该密文原来存储的物理内存的地址与新分配的物理内存的地址不同,此会造成解密失败,即在虚拟化技术中无法实现swap功能。当整个linux的内存使用紧张时,某些长时间不使用的内存内容依然会占据内存空间,这必然降低了内存的使用效率,弱化了linux处理突发大规模内存请求的能力。技术实现要素:有鉴于此,本发明的目的在于提供一种实现swap功能的方法和装置、安全处理器,以提高内存的使用效率,增强linux处理突发大规模内存请求的能力。第一方面,本发明实施例提供了一种实现swap功能的方法,包括:在针对所述内存的第一内存页面进行页面换出时,执行包括以下的处理:从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,以及将所述第一密文存储在所述外部存储器中作为第二内容;以及在针对所述外部存储器中的所述第二内容进行页面换入时,执行包括以下的处理:对所述第二内容进行解密得到第二明文,为所述第二内容分配所述内存的第二内存页面,对所述第二明文和所述第二内存页面的地址进行混淆得到混淆结果,对所述混淆结果进行加密得到第二密文,以及将所述第二密文存储在所述第二内存页面中。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,包括:判断所述第一内容是否是密文;若所述第一内容是密文,从所述第一内容中解析出第一明文;其中,所述对所述第二内容进行解密得到第二明文,包括:判断所述第二内容是否为密文,若所述第二内容是密文,则对所述第二内容进行解密得到第二明文。结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述判断所述第一内容是否是密文,包括:获取嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值;若判断获知所述第一内存页面对应的页表项的第n1比特位的值为第一数值,则确定所述第一内容是密文,否则,则确定所述第一内容不是密文;其中,在所述将所述第一密文存储在所述外部存储器中作为第二内容之后,包括:设置所述第一内存页面对应的页表项的第n2比特位的值为第二数值,其中,n1和n2是整数,且52≤n1≤62,52≤n2≤62。结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述判断所述第二内容是否为密文,包括:获取所述第一内存页面对应的页表项的第n2比特位的值,判断所述第一内存页面对应的页表项的第n2比特位的值是否为所述第二数值,若所述第一内存页面对应的页表项的第n2比特位的值是所述第二数值,则确定所述第二内容是密文,否则,则确定所述第二内容不是密文;其中,在所述将所述第二密文存储在所述第二内存页面中之后,还包括:设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第一数值。结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述若所述第一内容是密文,从所述第一内容中解析出第一明文,还包括:若所述第一内容不是密文,则将所述第一内容存储在所述外部存储器中;其中,所述若所述第二内容是密文,则对所述第二内容进行解密得到第二明文,还包括:若所述第二内容不是密文,则为所述第二内容分配所述内存的第三内存页面,将所述第二内容存储在所述第三内存页面中,并设置嵌套分页表中所述第三内存页面对应的页表项的第n1比特位的值为第三数值。结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,包括:使用第一加密密钥从所述第一内容中解析出第一明文,使用第二加密密钥对所述第一明文进行加密得到第一密文;其中,所述对所述第二内容进行解密得到第二明文,包括:使用所述第二加密密钥对所述第二内容进行解密得到第二明文;所述对所述混淆结果进行加密得到第二密文,包括:使用所述第一加密密钥对所述混淆结果进行加密得到第二密文。结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,在所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文之前,还包括:在所述第一内存页面分配后,判断所述第一内存页面是否需要加密;若所述第一内存页面需要加密,则设置所述嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值为所述第一数值,否则,则设置所述嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值为第三数值;其中,在所述为所述第二内容分配所述内存的第二内存页面之后,还包括:判断所述第二内存页面是否需要加密;若所述第二内存页面需要加密,则设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第一数值,否则,则设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第三数值。第二方面,本发明实施例还提供了一种实现swap功能的装置,包括:换出单元,用于在针对所述内存的第一内存页面进行页面换出时,执行包括以下的处理:从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,以及将所述第一密文存储在所述外部存储器中作为第二内容;以及换入单元,用于在针对所述外部存储器中的所述第二内容进行页面换入时,执行包括以下的处理:对所述第二内容进行解密得到第二明文,为所述第二内容分配所述内存的第二内存页面,对所述第二明文和所述第二内存页面的地址进行混淆得到混淆结果,对所述混淆结果进行加密得到第二密文,以及将所述第二密文存储在所述第二内存页面中。结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述换出单元,包括:判断子单元,用于判断所述第一内容是否是密文;解析子单元,用于若所述判断子单元确定出所述第一内容是密文,从所述第一内容中解析出第一明文;其中,所述换入单元,包括:解密子单元,用于判断所述第二内容是否为密文,若所述第二内容是密文,则对所述第二内容进行解密得到第二明文。结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述判断子单元,具体用于:获取嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值;若判断获知所述第一内存页面对应的页表项的第n1比特位的值为第一数值,则确定所述第一内容是密文,否则,则确定所述第一内容不是密文;其中,所述换出单元,还用于:在将所述第一密文存储在所述外部存储器中作为第二内容之后,设置所述第一内存页面对应的页表项的第n2比特位的值为第二数值,其中,n1和n2是整数,且52≤n1≤62,52≤n2≤62。结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述解密子单元,具体用于:获取所述第一内存页面对应的页表项的第n2比特位的值,判断所述第一内存页面对应的页表项的第n2比特位的值是否为所述第二数值,若所述第一内存页面对应的页表项的第n2比特位的值是所述第二数值,则确定所述第二内容是密文,否则,则确定所述第二内容不是密文;其中,所述换入单元,还用于:在将所述第二密文存储在所述第二内存页面中之后,设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第一数值。结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述解析子单元,还用于:若所述第一内容不是密文,则将所述第一内容存储在所述外部存储器中;其中,所述解密子单元,还用于:若所述第二内容不是密文,则为所述第二内容分配所述内存的第三内存页面,将所述第二内容存储在所述第三内存页面中,并设置嵌套分页表中所述第三内存页面对应的页表项的第n1比特位的值为第三数值。结合第二方面,本发明实施例提供了第二方面的第五种可能的实施方式,其中,所述换出单元,具体用于:使用第一加密密钥从所述第一内容中解析出第一明文,使用第二加密密钥对所述第一明文进行加密得到第一密文;其中,所述换入单元,具体用于:使用所述第二加密密钥对所述第二内容进行解密得到第二明文,使用所述第一加密密钥对所述混淆结果进行加密得到第二密文。结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第六种可能的实施方式,其中,所述装置还包括:第一判断单元,用于在所述换出单元工作之前,在所述第一内存页面分配后,判断所述第一内存页面是否需要加密;第一设置单元,用于若所述第一判断单元确定出所述第一内存页面需要加密,则设置所述嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值为所述第一数值,否则,则设置所述嵌套分页表中所述第一内存页面对应的页表项的第n1比特位的值为第三数值;第二判断单元,用于在所述换入单元分配第二内存页面之后,判断所述第二内存页面是否需要加密;第二设置单元,用于若所述第二判断单元确定出所述第二内存页面需要加密,则设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第一数值,否则,则设置所述嵌套分页表中所述第二内存页面对应的页表项的第n1比特位的值为所述第三数值。第三方面,本发明实施例还提供了一种安全处理器,包括:接收单元和处理单元;其中,所述接收单元,用于接收操作系统发送的第一命令和第二命令;所述处理单元,用于在所述接收单元接收到所述第一命令时,执行第一方面以及第一方面的各种可能的实施方式所述的针对所述内存的第一内存页面进行页面换出时的处理,或者用于在所述接收单元接收到所述第二命令时,执行第一方面以及第一方面的各种可能的实施方式所述的针对所述外部存储器中的所述第二内容进行页面换入时的处理。本发明实施例提供的实现swap功能的方法和装置、安全处理器,页面换出过程换出到外部存储器的第一密文是直接对从第一内容中解析出的第一明文加密生成,与第一内存页面的地址不相关,这就使得在对所述第一密文进行页面换入时,直接对所述第一密文解密即可获得对应的明文,与因换出到外部存储器的密文与内存页面的地址相关会导致页面换入失败的现有技术相比,本方案在页面换入时能够解析出外部存储器的密文内容,因而能够在页面换出后实现页面换入,即在虚拟化技术中能够实现swap功能,从而能够提高内存的使用效率,增强linux处理突发大规模内存请求的能力。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本发明实施例所提供的一种实现swap功能的方法的流程图;图2示出了本发明实施例所提供的另一种实现swap功能的方法的流程图;图3示出了本发明实施例所提供的又一种实现swap功能的方法的部分流程图;图4示出了本发明实施例所提供的又一种实现swap功能的方法的部分流程图;图5示出了本发明实施例所提供的一种实现swap功能的装置的结构示意图;图6示出了本发明实施例所提供的另一种实现swap功能的装置的结构示意图;图7示出了本发明实施例所提供的又一种实现swap功能的装置的结构示意图;图8示出了本发明实施例所提供的一种安全处理器的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到现有技术无法在虚拟化技术中实现swap功能,基于此,本发明实施例提供了一种实现swap功能的方法和装置、安全处理器,下面通过实施例进行描述。首先需要说明的是,本发明实施例应用于需要在虚拟化技术中实现swap功能的场景。实施例1参看图1,本发明公开一种实现swap功能的方法,包括:s10、在针对所述内存的第一内存页面进行页面换出时,执行包括以下的处理:从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,以及将所述第一密文存储在所述外部存储器中作为第二内容;以及本实施例中,可以理解的是,步骤s10进行页面换出的第一内容为密文,与第一内存页面的物理地址相关。在对第一内容进行页面换出时,首先需要从第一内容中解析出第一明文,解析出第一明文后,为了防止第一明文被窃取,需要对第一明文进行加密,将加密得到的第一密文存储在外部存储器中。在将第一密文存储在外部存储器中后,释放第一内存页面。s11、在针对所述外部存储器中的所述第二内容进行页面换入时,执行包括以下的处理:对所述第二内容进行解密得到第二明文,为所述第二内容分配所述内存的第二内存页面,对所述第二明文和所述第二内存页面的地址进行混淆得到混淆结果,对所述混淆结果进行加密得到第二密文,以及将所述第二密文存储在所述第二内存页面中。本实施例中,可以理解的是,步骤s11进行页面换入的第二内容为密文,与内存页面的物理地址不相关。在对第二内容进行页面换入时,首先需要对第二内容进行解密得到第二明文,之后为第二明文分配第二内存页面,并按照虚拟化技术中对物理内存的加密方式加密第二明文,得到第二密文。第二密文为密文,能够防止被窃取。本发明实施例提供的实现swap功能的方法,页面换出过程换出到外部存储器的第一密文是直接对从第一内容中解析出的第一明文加密生成,与第一内存页面的地址不相关,这就使得在对所述第一密文进行页面换入时,直接对所述第一密文解密即可获得对应的明文,与因换出到外部存储器的密文与内存页面的地址相关会导致页面换入失败的现有技术相比,本方案在页面换入时能够解析出外部存储器的密文内容,因而能够在页面换出后实现页面换入,即在虚拟化技术中能够实现swap功能,从而能够提高内存的使用效率,增强linux处理突发大规模内存请求的能力。实施例2图2示出了本发明实施例所提供的另一种实现swap功能的方法的流程图,参看图2,在实施例1的基础上,所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,可以包括:s20、判断所述第一内容是否是密文;s21、若所述第一内容是密文,从所述第一内容中解析出第一明文;其中,所述对所述第二内容进行解密得到第二明文,可以包括:s23、判断所述第二内容是否为密文,若所述第二内容是密文,则对所述第二内容进行解密得到第二明文。图2中步骤s22和s24同实施例1中对应的过程,此处不再赘述。本实施例中,可以理解的是,在进行内存页面换出和换入时,均需要先判断出内存页面换出、换入的内容是否是密文,当内存页面换出、换入的内容是密文时,按照实施例2中对应的流程执行。实施例3在实施例2的基础上,所述判断所述第一内容是否是密文,可以包括:获取嵌套分页表(nestedpagetable,npt)中所述第一内存页面对应的页表项(pagetableentry,pte)的第n1比特位的值;若判断获知所述第一内存页面对应的页表项的第n1比特位的值为第一数值,则确定所述第一内容是密文,否则,则确定所述第一内容不是密文;其中,在所述将所述第一密文存储在所述外部存储器中作为第二内容之后,包括:设置所述第一内存页面对应的pte的第n2比特位的值为第二数值,其中,n1和n2是整数,且52≤n1≤62,52≤n2≤62。本实施例中,在判断所述第一内容是否是密文时,可以根据npt中第一内容存储的第一内存页面对应的pte的第n1比特位的值来判断。第n1比特位是pte的第52比特位和第62比特位之间的一个比特位(比如第62比特位),用于标识对应的第一内容是否是密文。具体地,可以预先设置第一数值表示密文。在判断所述第一内容是否是密文时,只需要获取第一内容对应的第n1比特位的值,判断第n1比特位的值是否是第一数值即可。当第n1比特位的值是第一数值,说明第一内容是密文,否则,则说明第一内容不是密文。第一数值可以根据需要设置(比如设置为1),此处不再赘述。pte的第n2比特位是pte的第52比特位和第62比特位之间的一个比特位(比如第61比特位),其与第n1比特位各占一个比特位,用于标识从第一内存页面换出到外部存储器中的内容是否已加密,当其取值为第二数值时说明已加密。第二数值可以根据需要设置(比如设置为1),此处不再赘述。本实施例中通过pte的第n1比特位的值来确定对应的第一内容是否是密文,能够保证判断处理的效率。实施例4在实施例3的基础上,所述判断所述第二内容是否为密文,可以包括:获取所述第一内存页面对应的页表项的第n2比特位的值,判断所述第一内存页面对应的页表项的第n2比特位的值是否为所述第二数值,若所述第一内存页面对应的页表项的第n2比特位的值是所述第二数值,则确定所述第二内容是密文,否则,则确定所述第二内容不是密文;其中,在所述将所述第二密文存储在所述第二内存页面中之后,还可以包括:设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值。本实施例中,所述第一内存页面对应的页表项的第n2比特位的值用于标识所述第一内存页面的内容换出到外部存储器中的内容是否已加密。所述第一内存页面的内容换出到外部存储器中的内容为第二内容,在判断第二内容是否为密文时,可以根据所述第一内存页面对应的页表项的第n2比特位的值来确定。当所述第一内存页面对应的页表项的第n2比特位的值为第二数值时说明第二内容是密文。在将第二内容换入到第二内存页面后,需要设置npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值,以便于对所述第二内存页面进行页面换出时,可以快速地确定出所述第二内存页面的内容是否已加密,从而提高所述第二内存页面的页面换出效率。实施例5在实施例2的基础上,所述若所述第一内容是密文,从所述第一内容中解析出第一明文,还可以包括:若所述第一内容不是密文,则将所述第一内容存储在所述外部存储器中;其中,所述若所述第二内容是密文,则对所述第二内容进行解密得到第二明文,还可以包括:若所述第二内容不是密文,则为所述第二内容分配所述内存的第三内存页面,将所述第二内容存储在所述第三内存页面中,并设置npt中所述第三内存页面对应的pte的第n1比特位的值为第三数值。本实施例中,当第一内容不是密文时,为了确保第一内容能够被其它对象获取,此时不能对第一内容进行加密,而是直接将第一内容存储在外部存储器中。同样,当第二内容不是密文时,基于同样的理由,也需要将第二内容直接存储在第三内存页面中,而不能对第二内容进行加密。实施例6在实施例1的基础上,所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,可以包括:使用第一加密密钥从所述第一内容中解析出第一明文,使用第二加密密钥对所述第一明文进行加密得到第一密文;其中,所述对所述第二内容进行解密得到第二明文,可以包括:使用所述第二加密密钥对所述第二内容进行解密得到第二明文;所述对所述混淆结果进行加密得到第二密文,可以包括:使用所述第一加密密钥对所述混淆结果进行加密得到第二密文。本实施例中,需要说明的是,所述第一加密密钥为与内存的物理地址有关的加密密钥,使用所述第一加密密钥可以从包含所述第一内存页面的物理地址的所述第一内容中解析出第一明文。所述第二加密密钥为与内存的物理地址无关的加密密钥,使用所述第二加密密钥对所述第一明文进行加密得到的第一密文中不包含内存的物理地址。所述第一加密密钥和所述第二加密密钥,具体采用何种加密密钥可以根据需要设置(比如所述第一加密密钥选择虚拟机加密密钥,所述第二加密密钥选择数据加密算法加密密钥),此处不再赘述。实施例7图3和图4示出了本发明实施例所提供的另一种实现swap功能的方法的流程图,参看图3和图4,在实施例3的基础上,在所述从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文之前,还可以包括:s30、在所述第一内存页面分配后,判断所述第一内存页面是否需要加密;s31、若所述第一内存页面需要加密,则设置所述npt中所述第一内存页面对应的pte的第n1比特位的值为所述第一数值,否则,执行步骤s32;s32、设置所述npt中所述第一内存页面对应的pte的第n1比特位的值为第三数值;其中,在所述为所述第二内容分配所述内存的第二内存页面之后,还可以包括:s38、判断所述第二内存页面是否需要加密;s39、若所述第二内存页面需要加密,则设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值,否则,执行步骤s310;s310、设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第三数值。本实施例中,步骤s33至s37以及步骤s311与实施例3一致,此处不再赘述。可以理解的是,在每次分配一个内存页面后,为了便于后续在页面换出过程识别出该内存页面存储的内容是否加密,均需要根据该内存页面是否需要加密来设置其对应的pte的第n1比特位的值:当该内存页面需要加密,则设置其对应的pte的第n1比特位的值为第一数值,否则,则设置其对应的pte的第n1比特位的值为第三数值。而一个内存页面是否需要加密可以根据该内存页面的物理地址的第47比特位来确定,此处不再赘述。第三数值具体可以根据需要设置为与第一数值不同的值,此处不再赘述。另外,设置pte的第n1比特位的值可以通过向hypervisor发送携带有pte的第n1比特位的值的消息,由hypervisor根据该消息进行设置。实施例8参看图5,本发明公开一种实现内存与外部存储器交换功能的装置,包括:换出单元50,用于在针对所述内存的第一内存页面进行页面换出时,执行包括以下的处理:从所述第一内存页面的以密文形式存储的第一内容中解析出第一明文,对所述第一明文进行加密得到第一密文,以及将所述第一密文存储在所述外部存储器中作为第二内容;以及本实施例中,可以理解的是,换出单元50进行页面换出的第一内容为密文,与第一内存页面的物理地址相关。在对第一内容进行页面换出时,首先需要从第一内容中解析出第一明文,解析出第一明文后,为了防止第一明文被窃取,需要对第一明文进行加密,将加密得到的第一密文存储在外部存储器中。在将第一密文存储在外部存储器中后,释放第一内存页面。换入单元51,用于在针对所述外部存储器中的所述第二内容进行页面换入时,执行包括以下的处理:对所述第二内容进行解密得到第二明文,为所述第二内容分配所述内存的第二内存页面,对所述第二明文和所述第二内存页面的地址进行混淆得到混淆结果,对所述混淆结果进行加密得到第二密文,以及将所述第二密文存储在所述第二内存页面中。本实施例中,可以理解的是,换入单元51进行页面换入的第二内容为密文,与内存页面的物理地址不相关。在对第二内容进行页面换入时,首先需要对第二内容进行解密得到第二明文,之后为第二明文分配第二内存页面,并按照虚拟化技术中对物理内存的加密方式加密第二明文,得到第二密文。第二密文为密文,能够防止被窃取。本发明实施例提供的实现swap功能的装置,页面换出过程换出到外部存储器的第一密文是直接对从第一内容中解析出的第一明文加密生成,与第一内存页面的地址不相关,这就使得在对所述第一密文进行页面换入时,直接对所述第一密文解密即可获得对应的明文,与因换出到外部存储器的密文与内存页面的地址相关会导致页面换入失败的现有技术相比,本方案在页面换入时能够解析出外部存储器的密文内容,因而能够在页面换出后实现页面换入,即在虚拟化技术中能够实现swap功能,从而能够提高内存的使用效率,增强linux处理突发大规模内存请求的能力。实施例9图6示出了本发明实施例所提供的另一种实现swap功能的装置的流程图,参看图6,所述换出单元50,可以包括:判断子单元60,用于判断所述第一内容是否是密文;解析子单元61,用于若所述判断子单元确定出所述第一内容是密文,从所述第一内容中解析出第一明文;其中,所述换入单元51,可以包括:解密子单元62,用于判断所述第二内容是否为密文,若所述第二内容是密文,则对所述第二内容进行解密得到第二明文。本实施例中,可以理解的是,在进行内存页面换出和换入时,均需要先判断出内存页面换出、换入的内容是否是密文,当内存页面换出、换入的内容是密文时,按照实施例8中对应的流程执行。实施例10在实施例9的基础上,所述判断子单元,具体可以用于:获取npt中所述第一内存页面对应的pte的第n1比特位的值;若判断获知所述第一内存页面对应的pte的第n1比特位的值为第一数值,则确定所述第一内容是密文,否则,则确定所述第一内容不是密文;其中,所述换出单元,还可以用于:在将所述第一密文存储在所述外部存储器中作为第二内容之后,设置所述第一内存页面对应的pte的第n2比特位的值为第二数值,其中,n1和n2是整数,且52≤n1≤62,52≤n2≤62。本实施例中,在判断所述第一内容是否是密文时,可以根据npt中第一内容存储的第一内存页面对应的pte的第n1比特位的值来判断。第n1比特位是pte的第52比特位和第62比特位之间的一个比特位(比如第62比特位),用于标识对应的第一内容是否是密文。具体地,可以预先设置第一数值表示密文。在判断所述第一内容是否是密文时,只需要获取第一内容对应的第n1比特位的值,判断第n1比特位的值是否是第一数值即可。当第n1比特位的值是第一数值,说明第一内容是密文,否则,则说明第一内容不是密文。第一数值可以根据需要设置(比如设置为1),此处不再赘述。pte的第n2比特位是pte的第52比特位和第62比特位之间的一个比特位(比如第61比特位),其与第n1比特位各占一个比特位,用于标识从第一内存页面换出到外部存储器中的内容是否已加密,当其取值为第二数值时说明已加密。第二数值可以根据需要设置(比如设置为1),此处不再赘述。本实施例中通过pte的第n1比特位的值来确定对应的第一内容是否是密文,能够保证判断处理的效率。实施例11在实施例10的基础上,所述解密子单元,具体可以用于:获取所述第一内存页面对应的页表项的第n2比特位的值,判断所述第一内存页面对应的页表项的第n2比特位的值是否为所述第二数值,若所述第一内存页面对应的页表项的第n2比特位的值是所述第二数值,则确定所述第二内容是密文,否则,则确定所述第二内容不是密文;其中,所述换入单元,还可以用于:在将所述第二密文存储在所述第二内存页面中之后,设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值。本实施例中,所述第一内存页面对应的页表项的第n2比特位的值用于标识所述第一内存页面的内容换出到外部存储器中的内容是否已加密。所述第一内存页面的内容换出到外部存储器中的内容为第二内容,在判断第二内容是否为密文时,可以根据所述第一内存页面对应的页表项的第n2比特位的值来确定。当所述第一内存页面对应的页表项的第n2比特位的值为第二数值时说明第二内容是密文。在将第二内容换入到第二内存页面后,需要设置npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值,以便于对所述第二内存页面进行页面换出时,可以快速地确定出所述第二内存页面的内容是否已加密,从而提高所述第二内存页面的页面换出效率。实施例12在实施例9的基础上,所述解析子单元,还可以用于:若所述第一内容不是密文,则将所述第一内容存储在所述外部存储器中;其中,所述解密子单元,还可以用于:若所述第二内容不是密文,则为所述第二内容分配所述内存的第三内存页面,将所述第二内容存储在所述第三内存页面中,并设置npt中所述第三内存页面对应的pte的第n1比特位的值为第三数值。本实施例中,当第一内容不是密文时,为了确保第一内容能够被其它对象获取,此时不能对第一内容进行加密,而是直接将第一内容存储在外部存储器中。同样,当第二内容不是密文时,基于同样的理由,也需要将第二内容直接存储在第三内存页面中,而不能对第二内容进行加密。实施例13在实施例8的基础上,所述换出单元,具体可以用于:使用第一加密密钥从所述第一内容中解析出第一明文,使用第二加密密钥对所述第一明文进行加密得到第一密文;其中,所述换入单元,具体可以用于:使用所述第二加密密钥对所述第二内容进行解密得到第二明文,使用所述第一加密密钥对所述混淆结果进行加密得到第二密文。本实施例中,需要说明的是,所述第一加密密钥为与内存的物理地址有关的加密密钥,使用所述第一加密密钥可以从包含所述第一内存页面的物理地址的所述第一内容中解析出第一明文。所述第二加密密钥为与内存的物理地址无关的加密密钥,使用所述第二加密密钥对所述第一明文进行加密得到的第一密文中不包含内存的物理地址。所述第一加密密钥和所述第二加密密钥,具体采用何种加密密钥可以根据需要设置(比如所述第一加密密钥选择虚拟机加密密钥,所述第二加密密钥选择数据加密算法加密密钥),此处不再赘述。实施例14图7示出了本发明实施例所提供的另一种实现swap功能的装置的流程图,参看图7,在实施例10的基础上,所述装置还可以包括:第一判断单元70,用于在所述换出单元50工作之前,在所述第一内存页面分配后,判断所述第一内存页面是否需要加密;第一设置单元71,用于若所述第一判断单元70确定出所述第一内存页面需要加密,则设置所述npt中所述第一内存页面对应的pte的第n1比特位的值为所述第一数值,否则,则设置所述npt中所述第一内存页面对应的pte的第n1比特位的值为第三数值;第二判断单元72,用于在所述换入单元51分配第二内存页面之后,判断所述第二内存页面是否需要加密;第二设置单元73,用于若所述第二判断单元72确定出所述第二内存页面需要加密,则设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第一数值,否则,则设置所述npt中所述第二内存页面对应的pte的第n1比特位的值为所述第三数值。本实施例中,可以理解的是,在每次分配一个内存页面后,为了便于后续在页面换出过程识别出该内存页面存储的内容是否加密,均需要根据该内存页面是否需要加密来设置其对应的pte的第n1比特位的值:当该内存页面需要加密,则设置其对应的pte的第n1比特位的值为第一数值,否则,则设置其对应的pte的第n1比特位的值为第三数值。而一个内存页面是否需要加密可以根据该内存页面的物理地址的第47比特位来确定,此处不再赘述。第三数值具体可以根据需要设置为与第一数值不同的值,此处不再赘述。另外,设置pte的第n1比特位的值可以通过向hypervisor发送携带有pte的第n1比特位的值的消息,由hypervisor根据该消息进行设置。实施例15参看图8,本发明公开一种安全处理器,其特征在于,包括:接收单元80和处理单元81;其中,所述接收单元80,用于接收操作系统发送的第一命令和第二命令;所述处理单元81,用于在所述接收单元80接收到所述第一命令时,执行实施例1至7所述的针对所述内存的第一内存页面进行页面换出时的处理,或者用于在所述接收单元80接收到所述第二命令时,执行实施例1至7所述的针对所述外部存储器中的所述第二内容进行页面换入时的处理。可以理解的是,所述操作系统可以为x86系统,第一命令可以包括实施例1至7中针对所述内存的第一内存页面进行页面换出时的处理对应的指令,第二命令可以包括实施例1至7中针对所述外部存储器中的所述第二内容进行页面换入时的处理对应的指令。操作系统判断是否需要实现swap功能,根据判断的结果选择向安全处理器发送第一命令或第二命令,由安全处理器根据相应的命令执行对应的页面换出、页面换入流程。比如,当当前内存紧张时,操作系统选择将长期未使用的物理内存m换出到外部存储器,则会向安全处理器发送相应的第一命令,由安全处理器执行所述相应的第一命令,实现将物理内存m的内容换出到外部存储器,以释放物理内存m的存储空间。又比如,当需要使用外部存储器中的内容n时,由会向安全处理器发送相应的第二命令,由安全处理器根据所述相应的第二命令对所述内容n进行页面换入。本发明实施例提供的安全处理器,通过接收操作系统发送的第一命令和第二命令,根据所述第一命令和第二命令执行实施例1至7的页面换出、页面换入过程,在虚拟化技术中,能够在页面换出后实现页面换入,即在虚拟化技术中能够实现swap功能,从而能够提高内存的使用效率,增强linux处理突发大规模内存请求的能力。基于上述分析可知,本发明实施例提供的实现内存与外部存储器交换功能的方法及装置、安全处理器,通过在页面换出时将内存页面的物理地址剔除,从而能够成功实现页面换入,即能在虚拟化技术中实现swap功能。本发明实施例所提供的进行实现内存与外部存储器交换功能的方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。本发明实施例所提供的实现内存与外部存储器交换功能的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1