一种页表的修改方法、验证方法、装置及电子设备与流程

文档序号:33704668发布日期:2023-03-31 21:05阅读:42来源:国知局
1.本技术涉及处理器
技术领域
:,尤其涉及一种页表的修改方法、验证方法、装置、电子设备及可读存储介质。
背景技术
::2.分页在现代处理器和操作系统中具有重要的地位。大部分处理器早已支持分页机制,分页的基本任务是将进程中的虚拟地址映射到物理地址,这种映射是由操作系统控制,为用户应用程序提供一个连续的虚拟地址空间,能够起到进程间内存隔离及安全的作用。3.在处理器特性或页表属性验证工作中,会遇到改变页表等问题,而页表存放在物理内存中,由操作系统管理,这样,在验证工作中,页表的修改过程较为复杂,导致验证效率较低。技术实现要素:4.有鉴于此,本技术实施例提供一种页表的修改方法、验证方法、装置、电子设备及可读存储介质,便于提高对处理器的特性和/或页表的属性验证的效率。5.第一方面,本技术实施例提供一种页表的修改方法,包括:申请第一虚拟地址空间和第二虚拟地址空间;其中,所述第一虚拟地址空间通过第一页表映射到第一物理地址空间,所述第二虚拟地址空间通过第二页表映射到第二物理地址空间;将所述第一页表中的第m级页表的基地址,写入所述第二页表的第n级页表的页表项中,以形成第三页表;其中,m为大于等于1、小于等于所述第一页表的级数的整数;n为大于等于m、小于等于所述第二页表的级数的整数;根据所述第三页表,修改所述第一页表。6.根据本技术实施例的一种具体实现方式,所述申请第一虚拟地址空间和第二虚拟地址空间,包括:通过动态内存分配函数,申请所述第一虚拟地址空间和所述第二虚拟地址空间。7.根据本技术实施例的一种具体实现方式,所述将所述第一页表中的第m级页表的基地址,写入所述第二页表的第n级页表的页表项中,以形成所述第三页表,包括:获取第一页表中的第m级页表的基地址;将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中,以形成第三页表;所述第三页表依次包括所述第二页表的第一级页表至第n级页表、所述第一页表的第m级页表,以及所述第一页表中的第m级页表之后的t级页表;其中,t为大于等于0、小于等于所述第二页表的级数减去n再减1的差值;所述根据所述第三页表,修改所述第一页表,包括:根据所述第三页表,对所述第一页表的第m+t+1级页表中的页表项写入数据,以修改所述第一页表。8.根据本技术实施例的一种具体实现方式,所述获取所述第一页表中的第m级页表的基地址,包括:通过内核驱动模块获取所述第一页表的基地址;根据所述第一页表的基地址,获取所述第一页表中的第m级页表的基地址;所述将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中,包括:通过所述内核驱动模块获取所述第二页表的基地址;根据所述第二页表的基地址,获取所述第二页表中的第n级页表的页表项的地址;根据所述第n级页表的页表项的地址,将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中。9.根据本技术实施例的一种具体实现方式,所述第一页表的级数为4,所述第二页表的级数为四;m和n等于三;所述将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中,包括:将所述第一页表的第三级页表的基地址写入所述第二页表的第三级页表的页表项中。10.根据本技术实施例的一种具体实现方式,所述根据所述第三页表,对所述第一页表的第m+t+1级页表中的页表项写入数据,包括:确定第一虚拟地址范围;其中,所述第一虚拟地址范围与在所述第三页表上的、所述第一页表的第m+t+1级页表对应;根据所述第一虚拟地址范围以及所述第三页表,获取所述第m+t+1级页表的页表项;对所述第m+t+1级页表的页表项进行修改,并将修改后的所述第m+t+1级页表的页表项写入所述第m+t+1级页表的对应位置。11.根据本技术实施例的一种具体实现方式,所述确定第一虚拟地址范围,包括:在所述第二虚拟地址空间的基地址中,确定与所述第m+t+1级页表对应的目标比特位;在所述第一虚拟地址空间的基地址中,确定与所述目标比特位相等的比特位上的第一值;根据所述第一值和所述第二虚拟地址空间的基地址,确定所述第一虚拟地址范围的基地址;确定所述第一虚拟地址范围的大小;根据所述第一虚拟地址范围的基地址和所述第一虚拟地址范围的大小,确定所述第一虚拟地址范围。12.根据本技术实施例的一种具体实现方式,所述确定所述第一虚拟地址范围的大小,包括:根据所述第m+t+1级页表的页表项的项数和每个页表项的大小,确定所述第一虚拟地址范围的大小。13.根据本技术实施例的一种具体实现方式,在将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中之前,所述方法还包括:判断所述第n级页表的页表项的项数是否为1;如果为1,则执行将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中的步骤。14.根据本技术实施例的一种具体实现方式,在获取所述第一页表中的第m级页表的基地址之前,所述方法还包括:遍历所述第一页表和所述第二页表,确定所述第一页表和所述第二页表无缺页。15.根据本技术实施例的一种具体实现方式,在确定所述第一页表和所述第二页表无缺页之后,所述方法还包括:保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项。16.根据本技术实施例的一种具体实现方式,在保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项之后,所述方法还包括:使用保存的所述第二页表的第n级页表的页表项,对所述第二页表的第n级页表的页表项进行恢复;和/或,使用保存所述第一页表的第m+t+1级页表中的页表项,对所述第一页表的第m+t+1级页表中的页表项进行恢复。17.第二方面,本技术实施例一种验证方法,包括:测试代码通过页表获取目标数据;其中,所述测试代码用于验证处理器的特性和/或所述页表的属性;所述页表根据上述任一实施方式所述的页表的修改方法创建;所述测试代码运行在所述处理器上;根据所述目标数据,验证所述处理器的特性和/或所述页表的属性。18.第三方面,本技术实施例提供页表的修改装置,包括:申请模块,用于申请所述第一虚拟地址空间和所述第二虚拟地址空间;其中,所述第一虚拟地址空间通过第一页表映射到第一物理地址空间,所述第二虚拟地址空间通过第二页表映射到第二物理地址空间;写入模块,用于将所述第一页表中的第m级页表的基地址,写入所述第二页表的第n级页表的页表项中,以形成第三页表;其中,m为大于等于1、小于等于所述第一页表的级数的整数;n为大于等于m、小于等于所述第二页表的级数的整数;修改模块,用于根据所述第三页表,修改所述第一页表。19.根据本技术实施例的一种具体实现方式,所述申请模块,具体用于:通过动态内存分配函数,申请所述第一虚拟地址空间和所述第二虚拟地址空间。20.根据本技术实施例的一种具体实现方式,所述写入模块,包括:获取子模块,用于获取所述第一页表中的第m级页表的基地址;写入子模块,用于将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中,以形成所述第三页表;所述第三页表依次包括所述第二页表的第一级页表至第n级页表、所述第一页表的第m级页表,以及所述第一页表中的第m级页表之后的t级页表;其中,t为大于等于0、小于等于所述第二页表的级数减去n再减1的差值;所述修改模块,包括:修改子模块,用于根据所述第三页表,对所述第一页表的第m+t+1级页表中的页表项写入数据,以修改所述第一页表。21.根据本技术实施例的一种具体实现方式,所述获取子模块,具体用于:通过内核驱动模块获取所述第一页表的基地址;根据所述第一页表的基地址,获取所述第一页表中的第m级页表的基地址;所述修改子模块,具体用于:通过所述内核驱动模块获取所述第二页表的基地址;根据所述第二页表的基地址,获取所述第二页表中的第n级页表的页表项的地址;根据所述第n级页表的页表项的地址,将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中。22.根据本技术实施例的一种具体实现方式,所述第一页表的级数为4,所述第二页表的级数为四;m和n等于三;所述写入子模块,具体用于:将所述第一页表的第三级页表的基地址写入所述第二页表的第三级页表的页表项中。23.根据本技术实施例的一种具体实现方式,所述修改子模块,具体用于:确定第一虚拟地址范围;其中,所述第一虚拟地址范围与在所述第三页表上的、所述第一页表的第m+t+1级页表对应;根据所述第一虚拟地址范围以及所述第三页表,获取所述第m+t+1级页表的页表项;对所述第m+t+1级页表的页表项进行修改,并将修改后的所述第m+t+1级页表的页表项写入所述第m+t+1级页表的对应位置。24.根据本技术实施例的一种具体实现方式,所述修改子模块,具体用于:在所述第二虚拟地址空间的基地址中,确定与所述第m+t+1级页表对应的目标比特位;在所述第一虚拟地址空间的基地址中,确定与所述目标比特位相等的比特位上的第一值;根据所述第一值和所述第二虚拟地址空间的基地址,确定所述第一虚拟地址范围的基地址;确定所述第一虚拟地址范围的大小;根据所述第一虚拟地址范围的基地址和所述第一虚拟地址范围的大小,确定所述第一虚拟地址范围。25.根据本技术实施例的一种具体实现方式,所述修改子模块,具体用于:根据所述第m+t+1级页表的页表项的项数和每个页表项的大小,确定所述第一虚拟地址范围的大小。26.根据本技术实施例的一种具体实现方式,所述装置还包括:判断模块,用于在所述写入模块将所述第m级页表的基地址写入所述第二页表的第n级页表的页表项中之前,判断所述第n级页表的页表项的项数是否为1;执行模块,用于如果为1,则执行将所述第m级页表的基地址写入第二页表的第n级页表的页表项中的步骤。27.根据本技术实施例的一种具体实现方式,所述装置还包括:遍历模块,用于在所述获取子模块获取第一页表中的第m级页表的基地址之前,遍历所述第一页表和所述第二页表,确定所述第一页表和所述第二页表无缺页。28.根据本技术实施例的一种具体实现方式,所述装置还包括:保存模块,用于在所述遍历模块确定所述第一页表和所述第二页表无缺页之后,保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项。29.根据本技术实施例的一种具体实现方式,所述装置还包括:恢复模块,用于所述保存模块在保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项之后,使用保存的所述第二页表的第n级页表的页表项,对所述第二页表的第n级页表的页表项进行恢复;和/或,使用保存所述第一页表的第m+t+1级页表中的页表项,对所述第一页表的第m+t+1级页表中的页表项进行恢复。30.第四方面,本技术实施例提供一种验证装置,包括:获取模块,用于测试代码通过页表获取目标数据;其中,所述测试代码用于验证处理器的特性和/或所述页表的属性;所述页表根据前述任一实施方式所述的页表的修改方法创建;所述测试代码运行在所述处理器上;验证模块,用于根据所述目标数据,验证所述处理器的特性和/或所述页表的属性。31.第五方面,本技术实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实现方式所述的页表的修改方法和/或所述的验证方法。32.第六方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一实现方式所述的页表的修改方法和/或所述的验证方法。33.本实施例的页表的修改方法、处理器验证方法、装置、电子设备及可读存储介质,申请第一虚拟地址空间和第二虚拟地址空间;其中,第一虚拟地址空间通过第一页表映射到第一物理地址空间,第二虚拟地址空间通过第二页表映射到第二物理地址空间,将第一页表中的第m级页表的基地址,写入第二页表的第n级页表的页表项中,以形成第三页表,再根据第三页表,修改第一页表,这样,便于提高对处理器的特性和/或页表的属性验证的效率。附图说明34.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。35.图1为本技术一实施例提供的页表的修改方法的流程示意图;36.图2为本技术一具体实施例提供第三页表的示意图;37.图3为本技术一具体实施例提供的页表的修改方法的流程示意图;38.图4为本技术一实施例提供的验证方法的流程示意图;39.图5为本技术一具体实施例提供的验证方法的流程示意图;40.图6为本技术一实施例提供的页表的修改装置的结构示意图;41.图7为本技术一实施例提供的验证装置的结构示意图;42.图8为本技术一实施例提供的电子设备的结构示意图。具体实施方式43.下面结合附图对本技术实施例进行详细描述。应当明确,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。44.为使本领域技术人员更好地理解本技术实施例的技术构思、实施方案和有益效果,下面通过具体实施例进行详细说明。45.本技术一实施例提供的一种页表的修改方法,便于提高对处理器的特性和/或页表的属性验证的效率。46.图1为本技术一实施例提供的页表的修改方法的流程示意图,如图1所示,本实施例的页表的修改方法,可以包括:47.s101、申请第一虚拟地址空间和第二虚拟地址空间。48.向操作系统申请虚拟地址空间,并且为虚拟地址空间分配页表,以完成虚拟地址到物理地址的映射。49.本实施例中,第一虚拟地址空间通过第一页表映射到第一物理地址空间,第二虚拟地址空间通过第二页表映射到第二物理地址空间。50.本实施例的第一虚拟地址空间和第二虚拟地址空间大小可相同,也可不同。51.第一页表的级数可与第二页表的级数相等。52.在一些例子中,通过动态内存分配函数,申请第一虚拟地址空间和第二虚拟地址空间。53.本实施例中,动态内存分配函数可为malloc函数。54.s102、将第一页表中的第m级页表的基地址,写入第二页表的第n级页表的页表项中,以形成第三页表。55.本实施例中,m为大于等于1、小于等于第一页表的级数的整数;n为大于等于m、小于等于第二页表的级数的整数。56.如第一页表和第二页表为四级页表,第一页表中的第m级页表为第二级页表,则第二页表的第n级页表可为第二级、第三级或者第四级。57.第三页表的级数可与第一页表和第二页表的级数相等。58.在页表中,前一级页表中的页表项指向或索引到下一级页表,这样,将第一页表中的第m级页表的基地址,写入第二页表的第n级页表的页表项中,就可以由第二页表的第n级页表的页表项索引到第一页表中的第m级页表。59.s103、根据第三页表,修改第一页表。60.本实施例中,根据形成的第三页表,可以对第一页表进行修改,修改后的第一页表可以用来进行处理器验证。61.本实施例,申请第一虚拟地址空间和第二虚拟地址空间;其中,第一虚拟地址空间通过第一页表映射到第一物理地址空间,第二虚拟地址空间通过第二页表映射到第二物理地址空间,将第一页表中的第m级页表的基地址,写入第二页表的第n级页表的页表项中,以形成第三页表,再根据第三页表,修改第一页表,这样,便于提高对处理器的特性和/或页表的属性验证的效率,避免现有技术中由操作系统管理页表而导致的验证效率较低的问题。62.可以理解的是,上述过程可由用户态进程完成上述步骤,即在用户态下即可对第一页表进行修改。63.本技术又一实施例,与上述实施例基本相同,不同之处在于,本实施例的将第一页表中的第m级页表的基地址,写入所述第二页表的第n级页表的页表项中,以形成第三页表(s102),可以包括:64.s102a、获取第一页表中的第m级页表的基地址。65.在一些例子中,获取第一页表中的第m级页表的基地址(s102a)可以包括:66.a1、通过内核驱动模块获取第一页表的基地址。67.可以通过内核驱动模块与内核态或者操作系统进行交互,这样,可以通过内核驱动模块获取在内核态存储的第一页表的基地址,在一些例子中,第一页表的基地址存储在cr3寄存器中,即通过内核驱动模块获取cr3寄存器中的值。68.第一页表的基地址可为第一页表中的第一级页表的基地址。69.a2、根据第一页表的基地址,获取第一页表中的第m级页表的基地址。70.通过获得的第一页表的基地址即cr3寄存器的值,可以获得第一虚拟地址空间中各个页面的页表转换过程,即可获取第一页表中的第m级页表的基地址。71.s102b、将第m级页表的基地址写入第二页表的第n级页表的页表项中,以形成第三页表。72.本实施例中的第三页表依次包括第二页表的第一级页表至第n级页表、第一页表的第m级页表,以及第一页表中的第m级页表之后的t级页表;其中,t为大于等于0、小于等于第二页表的级数减去n再减1的差值,即从第二页表的第一级页表至第n级页表、第一页表的第m级页表直至第一页表中的第m级页表之后的t级页表的总的页表级数与第一页表的级数或第二页表的级数相等。73.将第m级页表的基地址写入第二页表的第n级页表的页表项中,这样,在形成的第三页表中,可由第二页表的第n级页表的页表项索引到第一页表的第m级页表。74.参见图2,以四级页表为例,第一页表的第一级页表的基地址可以写入第二页表的第一级页表、第二级页表、第三级页表或者第四级页表的页表项中;第一页表的第二级页表的基地址可以写入第二页表的第二级页表、第三级页表或者第四级页表的页表项中;第一页表的第三级页表的基地址可以写入第二页表的第三级页表或第四级页表的页表项中;第一页表的第四级页表的基地址可以写入第二页表的第四级页表的页表项中。75.参见图2,第一页表的第三级页表的基地址写入第二页表的第三级页表的页表项中,第三页表依次包括第二页表的第一级页表到第三级页表以及第二页表的第三级页表,而第一页表的第四级页表为第三页表对应的物理地址。76.可以理解的是,在一些例子中,将第m级页表的基地址写入第二页表的第n级页表的页表项中(s102b),可以包括:77.b1、通过内核驱动模块获取第二页表的基地址。78.可以通过内核驱动模块与内核态或者操作系统进行交互,这样,可以通过内核驱动模块获取在内核态存储的第二页表的基地址,在一些例子中,第二页表的基地址存储在cr3寄存器中,即通过内核驱动模块获取cr3寄存器中的值。本实施例中,同为第一虚拟地址空间对应的第一页表和第二虚拟地址空间对应的第二页表的基地址相同。79.第二页表的基地址可为第二页表中的第一级页表的基地址。80.b2、根据第二页表的基地址,获取第二页表中的第n级页表的页表项的地址。81.通过获得的第二页表的基地址即cr3寄存器的值,可以获得第二虚拟地址空间中各个页面的页表转换过程,即可获取第二页表中的第n级页表的页表项的地址。82.b3、根据第n级页表的页表项的地址,将第m级页表的基地址写入第二页表的第n级页表的页表项中。83.将第m级页表的基地址写入第二页表的第n级页表的页表项中,这样,第二页表项的第n级页表的页表项中的地址能够索引到第一页表的第m级页表。84.根据第三页表,修改第一页表(s103),可以包括:85.s103a、根据第三页表,对第一页表的第m+t+1级页表中的页表项写入数据,以修改第一页表。86.将第m级页表的基地址写入第二页表的第n级页表的页表项中,形成第三页表,第三页表的最后一级为第一页表的第m+t级页表,这样,第一页表的第m+t+1级页表中的页表项可以作为第三页表对应的物理地址,这样,可以通过第三页表,对第一页表的第m+t+1级页表中的页表项写入数据,这样,第一页表的第m+t+1级页表中的页表项被改变,对应地,第一页表中包括被改变页表项的第m+t+1级页表,即修改了第一页表。87.本技术再一实施例,与上述实施例基本相同,不同之处在于,本实施例中根据第三页表,对第一页表的第n+t+1级页表中的页表项写入数据(s103a),可以包括:88.c1、确定第一虚拟地址范围。89.本实施例中,第一虚拟地址范围与在第三页表上的、第一页表的第m+t+1级页表对应,并且,第一页表的第m+t+1级页表中的页表项可以作为第三页表对应的物理地址,这样,第一虚拟地址范围通过第三页表可以映射到第一页表的第m+t+1级页表。90.第一虚拟地址范围可以由基地址和虚拟地址范围的大小确定,在一些例子中,确定第一虚拟地址范围,可以包括:91.c11、在第二虚拟地址空间的基地址中,确定与第m+t+1级页表对应的目标比特位。92.第二虚拟地址空间的基地址包括多个比特位,其中包括与第m+t+1级页表对应的比特位即目标比特位。93.c12、在第一虚拟地址空间的基地址中,确定与目标比特位相等的比特位上的第一值。94.在第一虚拟地址空间的基地址中,查找到与目标比特位相等的比特位上的值即第一值。95.c13、根据第一值和第二虚拟地址空间的基地址,确定第一虚拟地址范围的基地址。96.第一虚拟地址范围的基地址需与第m+t+1级页表的基地址相等。如果在第二虚拟地址空间的基地址中,确定与第m+t+1级页表对应的目标比特位上的值为a,在第一虚拟地址空间的基地址中,确定与目标比特位相等的比特位上的第一值为b,那么第一虚拟地址范围的基地址为b*8byte与a的差值。97.c14、确定第一虚拟地址范围的大小。98.在一些例子中,根据第m+t+1级页表的页表项的项数和每个页表项的大小,确定第一虚拟地址范围的大小。99.第一虚拟地址范围的大小可为第m+t+1级页表的页表项的项数和每个页表项的大小的乘积,例如每个页表项的大小为8byte,那么第一虚拟地址范围的大小为第m+t+1级页表的页表项的项数与8byte的乘积。100.c15、根据第一虚拟地址范围的基地址和第一虚拟地址范围的大小,确定第一虚拟地址范围。101.c2、根据第一虚拟地址范围以及第三页表,获取第m+t+1级页表的页表项。102.第一虚拟地址范围通过第三页表可以映射到第一页表的第m+t+1级页表,这样,根据第一虚拟地址范围以及第三页表,获取第m+t+1级页表的页表项。103.c3、对第m+t+1级页表的页表项进行修改,并将修改后的第m+t+1级页表的页表项写入第m+t+1级页表的对应位置。104.将获取的第m+t+1级页表的页表项进行修改,再将修改后的第m+t+1级页表的页表项写入第m+t+1级页表的对应位置,即实现了对第m+t+1级页表的页表项的修改,从而第一页表中包括被改变页表项的第m+t+1级页表,即修改了第一页表。105.本技术再一实施例,与上述实施例基本相同,不同之处在于,本实施例的方法,在将第m级页表的基地址写入第二页表的第n级页表的页表项中之前,本实施例的方法还可以包括:106.s104、判断第n级页表的页表项的项数是否为1。107.由于第一页表的第m级页表的基地址为一个地址,而第二页表的第n级页表的页表项是存储地址的,为了与该一个地址对应,要求第二页表的第n级页表的页表项为一项。108.s105、如果为1,则执行将第m级页表的基地址写入第二页表的第n级页表的页表项中的步骤。109.在第n级页表的页表项的项数为1的情况下,将第m级页表的基地址写入第二页表的第n级页表的页表项中。110.本技术再一实施例,与上述实施例基本相同,不同之处在于,本实施例在获取第一页表中的第m级页表的基地址之前,本实施例的方法还可以包括:111.s106、遍历第一页表和第二页表,确定第一页表和所述第二页表无缺页。112.可以根据获取的cr3寄存器的值即第一页表和第二页表的基地址,可以遍历第一页表和第二页表,确定第一页表和所述第二页表无缺页。113.在一些例子中,在确定第一页表和第二页表无缺页之后,所述方法还可以包括:114.s107、保存第二页表的第n级页表的页表项。115.在将第一页表的第m级页表的基地址写入第二页表的第n级页表的页表项之前,可以保存第二页表的第n级页表的页表项,以便后续恢复第二页表的第n级页表的页表项。116.为了不对系统运行以及系统安全产生影响,在验证之后,需要恢复原来的页表,在一些例子中,在保存第二页表的第n级页表的页表项之后,所述方法还可以包括:117.s108、使用保存的第二页表的第n级页表的页表项,对第二页表的第n级页表的页表项进行恢复。118.在一些例子中,在确定第一页表和第二页表无缺页之后,所述方法还可以包括:119.s109、保存第一页表的第m+t+1级页表中的页表项。120.在一些例子中,还可以对第一页表的第m+t+1级页表中的页表项修改之前,保存第一页表的第m+t+1级页表中的页表项,以便后续恢复第一页表的第m+t+1级页表中的页表项。121.为了不对系统运行以及系统安全产生影响,在验证之后,需要恢复原来的页表,在一些例子中,在保存第一页表的第m+t+1级页表中的页表项之后,所述方法还可以包括:122.s110、使用保存第一页表的第m+t+1级页表中的页表项,对第一页表的第m+t+1级页表中的页表项进行恢复。123.参见图3,下面以一具体实施例,使用四级页表对本技术的方案进行详细说明。124.在操作系统的用户态程序中,申请两段虚拟地址空间v1_space和v2_space,两段虚拟空间的地址通过各自对应的页表映射到不同的物理地址空间上,获得页表基地址就可以遍历两段虚拟空间地址的页表转换的整个过程。125.由于每级页表项具有相同的bit位含义,这样,可以将虚拟地址v2_space的中的第三级页表项写入虚拟地址v1_space中的第三级页表项,这样,构成一个新的页表转换过程,对应地,v2_space中虚拟地址映射到的物理空间地址就是v1_space空间的四级页表项,通过在用户态v2_space中虚拟地址的值,就可以修改v1_space中对应虚拟地址的四级页表,进而可以改变v1_space中对应虚拟地址的页表映射关系,其中,四级页表包括第一级页表、第二级页表、第三级页表和第四级页表,其中第一级页表又称为4级页映射表,(pml4e:page-maplevel-4entry),第二级页表又称为页表目录指针表(pdpe,page-directorypointerentry),第三级页表又称为页表目录表(pde:page-directoryentry),第四级页表又称为页表(pte,pagetableentry)。126.本实施例的具体步骤如下:127.1、用户级程序中申请虚拟地址空间v1_space和虚拟地址空间v2_space。128.在操作系统用户级程序中,申请两段虚拟地址空间v1_space和v2_space,需要改变v1_space空间的页表,v2_space空间地址用于改变v1_space空间的页表;129.2、遍历虚拟地址空间v1_space和v2_space的页表面,确保各级页表转换无换页异常产生。130.确保各级页表转换无换页异常产生即所有页面可以正常转换,无缺页异常产生。131.这里需要获得页表基地址寄存器cr3的值,该值需要编写内核驱动来得到。132.3、将v1_space虚拟空间中对应的虚拟地址的第三级页表的基地址填写入v2_space虚拟空间相应虚拟地址的第三级页表项中。133.将v1_space虚拟空间中对应的虚拟地址的第三级页表的基地址填写入v2_space虚拟空间相应虚拟地址的第三级页表项中,这样,v2_space的虚拟地址对应的物理空间地址就是v1_space中相应虚拟地址的第四级页表项。134.4、保存v1_space虚拟空间中原第四级页表项,以及v2_space虚拟空间中原第三级页表项。135.5、修改v1_space空间中对应虚拟地址的页表。136.在用户级下通过v2_space虚拟空间中对应虚拟地址的值,即可使用指令修改v1_space空间中对应虚拟地址的页表映射关系。137.6、用户态程序退出之前,恢复v1_space虚拟空间的原第四级页表项,以及v2_space虚拟空间的原第三级页表项。138.本实施例,在操作系统用户态下实现对特定虚拟地址空间页表映射关系的改变,是在用户态进程中特定虚拟地址空间的所有页面内进行最后一级页表的修改,而且在该进程退出之前需要恢复原来虚拟地址空间的页表映射关系,所以不会对系统运行有任何影响,也不会对系统安全有影响。139.本实施例,依托于处理器分页机制和操作系统页表管理系统,可以将用户态的程序中虚拟地址空间的页表映射关系通过在用户态下通过指令快速改变,并且不会影响到cr3和tlb等硬件资源,提供了一种用户态下快速改变页表的方法,可以用于验证页面属性,用于处理器验证。140.本技术一实施例提供的一种验证方法,能够提高对处理器的特性和/或页表的属性验证的效率。141.图4为本技术一实施例提供的验证方法的流程示意图,如图4所示,本实施例的页表的修改方法,可以包括:142.s201、测试代码通过页表获取目标数据。143.本实施例中的测试代码运行在处理器上。144.测试代码用于验证处理器的特性和/或页表的属性,在验证处理器的特性时,目标数据是通过页表获取的物理地址,在验证页表的属性时,目标数据可为页表的属性。145.本实施例中的页表是根据上述任一实施例中的页表的修改方法创建的。146.s202、根据目标数据,验证处理器的特性和/或页表的属性。147.根据获取的目标数据,对处理器的特性和/或页表的属性进行验证。148.本实施例中,测试代码通过页表获取目标数据,根据目标数据,验证处理器的特性和/或页表的属性,由于在验证过程中,使用的页表是根据上述任一实施例中的页表的修改方法确定的,而上述任一实施例中的页表的修改是在用户态下修改的,这样,能够提高对处理器的特性和/或页表的属性验证的效率。149.参见图5,下面介绍一种在linux操作系统用户态下通过一条指令修改页表映射关系的实施例,用于验证处理器页面属性,本实施例的页表为四级页表,具体执行流程如下:150.1、通过内核驱动获得当前进程页表的基地址。151.在linux操作系统中,需要编写一个内核驱动程序,可以获得当前进程页表的基地址,即获得cr3寄存器的值。152.2、通过malloc函数申请申请4m虚拟地址空间v1_space和16k虚拟地址空间v2_space。153.linux操作系统一般使用4k页面大小,所以通过malloc函数申请一段1024*4k大小的虚拟地址空间,和一段4*4k大小的虚拟地址空间v2_space。154.3、遍历v1_space空间中1024个页面。155.通过获得的cr3寄存器的值,可以获得虚拟地址空间v1_space中1024个页面的页表转换过程,遍历所有页表,确保无缺页发生。156.4、保存v2_space空间的第三级页表,并将其映射到v1_space空间中对应地址的第三级页表。157.将v1_space空间中对应页表的第三级页表的基地址填写入v2_space空间中对应页表的第三级页表,即v2_space空间的虚拟地址映射到v1_space空间中对应页表的第四级页表上。158.5、确定v1_space空间所有页面的四级页表对应v2_space空间的虚拟地址范围,并保存v1_space空间所有页面的第四级页表项。159.获得v1_space空间中1024个页面的四级页表所对应的v2_space空间的基虚拟地址vaddr,v1_space空间所有页面的四级页表对应v2_space空间的虚拟地址范围就是[vaddr—vaddr+8k]。保存v1_space空间所有页面的第四级页表项。其中,8k是根据v1_space空间对应的页表的第四级页表项数1024与每项大小8byte的乘积得到。[0160]6、修改v1_space空间中虚拟地址的页表。[0161]从v2_space空间中虚拟地址[vaddr—vaddr+8k]中选取一个值,即可读取对应的物理地址即获取v1_space空间对应页面的第四级页表项,并对其修改,将修改后的页表项写入对应的位置,从而,修改v1_space空间中虚拟地址的页表。[0162]7、验证测试代码。[0163]8、在退出用户态程序之前,恢复v2_space空间的第三级页表,以及v1_space空间的第四级页表。[0164]本实施例,利用了处理器4k分页机制中页表项的一致性,通过修改虚拟地址空间中第三级页表项,来实现页表转换的改变,进而影响另外虚拟地址空间的页表映射,此外,在不换页和不影响tlb的情况下,通过用户态程序中指令快速改变页表。[0165]本技术一实施例提供的页表的修改装置,便于提高对处理器的特性和/或页表的属性验证的效率。[0166]图6为本技术一实施例提供的页表的修改装置的结构示意图,如图6所示,本实施例的页表的修改装置,包括:申请模块11,用于申请第一虚拟地址空间和第二虚拟地址空间;其中,所述第一虚拟地址空间通过第一页表映射到第一物理地址空间,所述第二虚拟地址空间通过第二页表映射到第二物理地址空间;写入模块12,用于将所述第一页表中的第m级页表的基地址,写入所述第二页表的第n级页表的页表项中,以形成第三页表;其中,m为大于等于1、小于等于所述第一页表的级数的整数;n为大于等于m、小于等于所述第二页表的级数的整数;修改模块13,用于根据所述第三页表,修改所述第一页表。[0167]本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[0168]本实施例的装置,申请第一虚拟地址空间和第二虚拟地址空间;其中,第一虚拟地址空间通过第一页表映射到第一物理地址空间,第二虚拟地址空间通过第二页表映射到第二物理地址空间,将第一页表中的第m级页表的基地址,写入第二页表的第n级页表的页表项中,以形成第三页表,再根据第三页表,修改第一页表,这样,便于提高对处理器的特性和/或页表的属性验证的效率,避免现有技术中由操作系统管理页表而导致的验证效率较低的问题。[0169]作为一可选实施方式,所述申请模块,具体用于:通过动态内存分配函数,申请第一虚拟地址空间和第二虚拟地址空间。[0170]作为一可选实施方式,所述写入模块,包括:获取子模块,用于获取第一页表中的第m级页表的基地址;写入子模块,用于将所述第m级页表的基地址写入第二页表的第n级页表的页表项中,以形成第三页表;所述第三页表依次包括所述第二页表的第一级页表至第n级页表、所述第一页表的第m级页表,以及所述第一页表中的第m级页表之后的t级页表;其中,t为大于等于0、小于等于所述第二页表的级数减去n再减1的差值;所述修改模块,包括:修改子模块,用于根据所述第三页表,对所述第一页表的第m+t+1级页表中的页表项写入数据,以修改所述第一页表。[0171]作为一可选实施方式,所述获取子模块,具体用于:通过内核驱动模块获取所述第一页表的基地址;根据所述第一页表的基地址,获取所述第一页表中的第m级页表的基地址;所述修改子模块,具体用于:通过所述内核驱动模块获取所述第二页表的基地址;根据所述第二页表的基地址,获取所述第二页表中的第n级页表的页表项的地址;根据所述第n级页表的页表项的地址,将所述第m级页表的基地址写入第二页表的第n级页表的页表项中。[0172]作为一可选实施方式,所述第一页表的级数为4,所述第二页表的级数为四;m和n等于三;所述写入子模块,具体用于:将所述第一页表的第三级页表的基地址写入所述第二页表的第三级页表的页表项中。[0173]作为一可选实施方式,所述修改子模块,具体用于:确定第一虚拟地址范围;其中,所述第一虚拟地址范围与在所述第三页表上的、所述第一页表的第m+t+1级页表对应;根据所述第一虚拟地址范围以及所述第三页表,获取所述第m+t+1级页表的页表项;对所述第m+t+1级页表的页表项进行修改,并将修改后的所述第m+t+1级页表的页表项写入所述第m+t+1级页表的对应位置。[0174]作为一可选实施方式,所述修改子模块,具体用于:在所述第二虚拟地址空间的基地址中,确定与所述第m+t+1级页表对应的目标比特位;在所述第一虚拟地址空间的基地址中,确定与所述目标比特位相等的比特位上的第一值;根据所述第一值和所述第二虚拟地址空间的基地址,确定所述第一虚拟地址范围的基地址;确定所述第一虚拟地址范围的大小;根据所述第一虚拟地址范围的基地址和所述第一虚拟地址范围的大小,确定所述第一虚拟地址范围。[0175]作为一可选实施方式,所述修改子模块,具体用于:根据所述第m+t+1级页表的页表项的项数和每个页表项的大小,确定所述第一虚拟地址范围的大小。[0176]作为一可选实施方式,所述装置还包括:判断模块,用于在所述写入模块将所述第m级页表的基地址写入第二页表的第n级页表的页表项中之前,判断所述第n级页表的页表项的项数是否为1;执行模块,用于如果为1,则执行将所述第m级页表的基地址写入第二页表的第n级页表的页表项中的步骤。[0177]作为一可选实施方式,所述装置还包括:遍历模块,用于在所述获取子模块获取第一页表中的第m级页表的基地址之前,遍历所述第一页表和所述第二页表,确定所述第一页表和所述第二页表无缺页。[0178]作为一可选实施方式,所述装置还包括:保存模块,用于在所述遍历模块确定所述第一页表和所述第二页表无缺页之后,保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项。[0179]作为一可选实施方式,所述装置还包括:恢复模块,用于所述保存模块在保存所述第二页表的第n级页表的页表项;和/或,保存所述第一页表的第m+t+1级页表中的页表项之后,使用保存的所述第二页表的第n级页表的页表项,对所述第二页表的第n级页表的页表项进行恢复;和/或,使用保存所述第一页表的第m+t+1级页表中的页表项,对所述第一页表的第m+t+1级页表中的页表项进行恢复。[0180]上述实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[0181]本技术一实施例提供的处理器验证装置,能够提高对处理器的特性和/或页表的属性验证的效率。[0182]图7为本技术一实施例提供的验证装置的结构示意图,如图7所示,本实施例的验证装置,包括:获取模块21,用于测试代码通过页表获取目标数据;其中,测试代码用于验证处理器的特性和/或页表的属性;页表根据上述任一实施例的页表的修改方法创建;测试代码运行在所述处理器上;验证模块22,用于根据目标数据,验证处理器的特性和/或页表的属性。[0183]本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[0184]本实施例的装置,测试代码通过页表获取目标数据,根据目标数据,验证处理器的特性和/或页表的属性,由于在验证过程中,使用的页表是根据上述任一实施例中的页表的修改方法确定的,而上述任一实施例中的页表的修改是在用户态下修改的,这样,能够提高对处理器的特性和/或页表的属性验证的效率。[0185]上述实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[0186]图8为本技术一实施例提供的电子设备的结构示意图,如图8所示,可以包括:壳体61、处理器62、存储器63、电路板64和电源电路65,其中,电路板64安置在壳体61围成的空间内部,处理器62和存储器63设置在电路板64上;电源电路65,用于为上述电子设备的各个电路或器件供电;存储器63用于存储可执行程序代码;处理器62通过读取存储器63中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例提供的任一种页表的修改方法或验证方法,因此也能实现相应的有益技术效果,前文已经进行了详细说明,此处不再赘述。[0187]上述电子设备以多种形式存在,包括但不限于:[0188](1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。[0189](2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。[0190](3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。[0191](4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。[0192](5)其他具有数据交互功能的电子设备。[0193]相应的,本技术的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种页表的修改方法或验证方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。[0194]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0195]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。[0196]尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0197]为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本技术时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。[0198]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。[0199]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1