内核空间隔离方法、空间管理实体及系统的制作方法

文档序号:6480077阅读:244来源:国知局
专利名称:内核空间隔离方法、空间管理实体及系统的制作方法
技术领域
本发明涉及网络技术领域,特别涉及内核空间隔离方法、空间管理实体及系统。
背景技术
现有的Linux/Unix中的SMP( Symmetrical Multi-Processing ,对称多处理)系统中,多个CPU核都映射到相同的内核空间,为了方便描述,以SMP系统采用具体的CPU,如X86架构CPU核为例进行说明,当采用X86架构的CPU核时,CPU核采用两级映射关系,包括页目录和页表;
Linux的虚拟地址空间为0-4G,将这4G空间分为两部分,将最高的1G字节(从虚拟地址OxCOOOOOOO到OxFFFFFFFF )供内核使用,称为内核地址空间(简称内核空间)。而将4K氐的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),作为用户地址空间。其中,内核地址空间中保存有内核页目录和内核页表,用于将内核中虚拟地址映射到对应的物理内存空间;其中,内核页目录包括多个页目录项,每个页目录项对应一个内核页表,即每个页目录项中保存有对应内核页表的地址,内核页表中包括多个页表项,每个页表项对应一个物理页,即每个页表项中有对应物理页的物理地址。
现有的Linux/Unix中的SMP( Symmetrical Multi-Processing,对称多处理)系统中,在创建进程时,进程页目录中前部分页目录项(固定数目的页目录项)映射到用户地址空间,后部分映射到内核地址空间,其内核地址空间都指向相同的物理地址。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题现有的SMP系统中,对于所有内核态业务(如内核线程),内核空间都是相同的,因此内核空间被所有内核态业务共享,使不同CPU核运行内核态业务时所需要的物理空间(内核地址空间所映射的物理空间)也相同,难以保证内核态业务在CPU上运行时的安全性。

发明内容
本发明实施例提供一种内核空间隔离方法、空间管理实体及SMP系统,实现不同CPU核间的内核空间隔离。
有鉴于此,本发明实施例提供 一种内核空间隔离方法,包括
当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间 中的非公共系统空间部分分配该CPU核的私有虚拟空间; 确定所述CPU核的物理空间;
建立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使 得运行在所述CPU核上的内核态业务才艮据所述私有虚拟空间以及所述映射关 系访问所述物理空间;其中,该CPU核的虚拟空间与其他CPU核的虚拟空间相 互独立。
一种空间管理实体,包括
确定单元,用于当运行在CPU核上的内核态业务请求物理空间时,在该 CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间,确 定所述CPU核的物理空间,其中,该CPU核的虚拟空间与其他CPU核的虚拟空 间相互独立;
第一建立单元,用于建立所述CPU核的私有虚拟空间到所述CPU核的物理 空间的映射关系,使得运行在所述CPU核上的内核态业务根据所述私有虚拟 空间以及所述映射关系访问所述物理空间。
一种对称多处理SMP系统,该系统包含多个CPU核和私有空间管理实体, 其中
所述私有空间管理实体,用于当运行在CPU核上的内核态业务请求物理 空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有 虚拟空间,确定所述CPU核的物理空间,建立所述CPU核的私有虚拟空间到所 述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据 所述私有虚拟空间以及所述映射关系访问所述物理空间,其中,该CPU核的 虚拟空间与其他CPU核的虚拟空间相互独立。
本发明实施例中,每个CPU核对应一个独立的虚拟空间,当运行在CPU 核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统 空间部分分配该CPU核的私有虚拟空间,确定所述CPU核的物理空间,建立所空间到所述CPU核的物理空间的映射关系,使运行在所述 CPU核上的内核态业务能够利用该CPU核的私有虚拟空间及已建立的映射关 系访问该CPU核的物理空间,实现不同CPU核间的内核空间隔离,从而能够保 证CPU核运行内核态业务的安全性。


图l是本发明实施例一提供的内核空间隔离方法流程图2是本发明实施例二提供的内核空间隔离方法流程图3是本发明实施例提供的内核空间分配第 一示意图4是本发明实施例提供的内核空间分配第二示意图5是本发明实施例提供的内核空间分配第三示意图6是本发明实施例提供的一种建立CPU核的私有虚拟空间到物理空间 的映射方法流程图7是本发明实施例提供的另 一种建立CPU核的私有虚拟空间到物理空 间的映射方法流程图8是本发明实施例三提供的在SMP系统上仿真AMP系统的方法流程图9是本发明实施例四提供的空间管理实体结构示意图IO是本发明实施例五提供的SMP系统逻辑示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例4是供一种内核空间隔离方法,该方法包括当运行在CPU 核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统 空间部分分配该CPU核的私有虚拟空间,确定所述CPU核的物理空间,建立所 述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使得运行在所 述CPU核上的内核态业务能够#>据所述私有虚拟空间以及所述映射关系访问 所述物理空间;其中,所述CPU核的虛拟空间与其他CPU核的虚拟空间相互独 立。使用本发明实施例提供的技术方案,4吏运行在所述CPU核上的内核态业务能够利用该CPU核的私有虚拟空间及已建立的映射关系找到该CPU核的物 理空间,实现不同CPU核间的内核空间隔离,从而能够保证CPU核运行内核态
业务的安全性。
实施例一
参阅图l,本发明实施例一4是供一种内核空间隔离方法,该方法可应用于 SMP系统,其中,该方法包括
AIO、当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚 拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间;其中,该CPU 核的虚拟空间与其他CPU核的虚拟空间相互独立;
A20、确定所述CPU核的物理空间;
A30、建立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关 系,使得运行在所述CPU核上的内核态业务能够根据所述私有虚拟空间以及 所述映射关系访问所述物理空间。
可见,本发明实施例中,每个CPU核对应一个独立的虚拟空间,当运行 在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非7>共 系统空间部分分配该CPU核的私有虚拟空间,确定所述CPU核的物理空间,建 立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使运行在 所述CPU核上的内核态业务能够利用该CPU核的私有虚拟空间及已建立的映 射关系访问该CPU核的物理空间,实现不同CPU核间的内核空间隔离,从而能 够保证CPU核运行内核态业务的安全性。
实施例二
参阅图2-5,本发明实施例二提供一种内核空间隔离方法,其中,图2示 出了内核空间隔离方法的流程图,图3-5示出了内核空间分配示意图,该方法 具体包括
All、系统初始化时,在内核空间中为每个CPU核分配独立的虚拟空间, 所述虛拟空间包括^^共系统空间。
具体可参见图3,系统分别为CPU1核和CPU2核分配独立的虚拟空间,其 中,CPU1核的虚拟空间中的m为/^共系统空间,CPU2核的虚拟空间中的m为 />共系统空间。其中,,I定物理空间包括K和F,其中K是^^共物理空间,用于存放系统的一些公共代码和数据;K1是K的一部分;F是空闲的物理空间, 系统会记录空闲的物理空间范围。需要说明的是,图3-5示出的是内核空间分 配示意图,不涉及用户地址空间。
A21 、建立每个CPU核的公共系统空间到公共物理空间的映射关系。
如图3和图4所示,先建立每个CPU核的公共系统空间到K1的映射关系, 然后修改每个CPU核的映射关系,建立每个CPU核的公共系统空间到K的映射 关系。需要说明的是,在另一种实现下,也可以是一次建立即可实现每个CPU 核的公共系统空间到K的映射关系。
A31 、当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虛 拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间,根据预先记 录的空闲的物理空间范围,为该CPU核分配空闲的物理空间,建立所述CPU 核的私有虚拟空间到所述分配的物理空间的映射关系。
具体如图5所示,假定运行在CPU1核上的内核态业务和运行在CPU2核上 的内核态业务要请求(或申请)物理空间,系统在CPU1核的虚拟空间中的非 公共系统空间部分为CPUl核分配私有虚拟空间ml,在CPU2核的虚拟空间中 的非公共系统空间部分为CPU2核分配私有虚拟空间m2,并根据预先记录的空 闲的物理空间范围,为CPUl核分配空闲物理空间Ml,为CPU2核分配空闲物 理空间M2,为CPUl核建立ml到Ml的映射关系,为CPU2核建立m2到M2的映 射关系。
需要说明的是,该步骤中运行在CPU核上的内核态业务也可以指定物理 空间,而不是由系统自动分配,假定运行在CPU1核上的内核态业务指定物理 空间为M1,系统在CPUl核的虚拟空间中为CPUl核分配私有虚拟空间ml,为 CPUl核建立ml到Ml的映射关系。对于这种情况,可适用于如下情况,包括 但不限于某个内核态业务将对网卡进行相关操作,而对于网卡这类硬件, 系统已分配固定的物理空间(比如M1),此时,运行在CPU1核上的内核态业 务会指定物理空间(即上述固定的物理空间M1 ),系统在CPU1核的虚拟空间 中为CPU1核分配私有虚拟空间ml ,建立ml到指定的M1的映射关系。
进一步需要说明的是,假定有两个内核态业务将对网卡进行操作,这两 个内核态业务虽然分別运行在CPU1核和CPU2核上,但这两个内核态业务可以均指定物理空间Ml,因为这两个内核态业务相关联,需要访问同一物理空间,
系统在CPU1核的虚拟空间中为CPU1核分配私有虚拟空间ml ,在CPU2核的虚 拟空间中为CPU2核分配私有虚拟空间m2,为CPUl核建立ml到Ml的映射,为 CPU2核建立m2到Ml的映射,此时CPU1核和CPU2核是共用物理空间M1的。 即,此时这个物理空间M1不是一个CPU核专有的。
A41 、运行在该CPU核上的内核态业务通过该CPU核的私有虚拟空间,以 及该CPU核的映射关系访问该CPU核的物理空间,从而使该CPU核的物理空间 被运行在该CPU核上的内核态任务根据该CPU核的私有虚拟空间以及该XPU 核的映射关系进行访问。
具体可以是,运行在该CPU核上的内核态业务通过该CPU核的私有虚拟空 间,以及该CPU核的映射关系找到该CPU核的物理空间,由该CPU核将内核态 业务的程序映象加载到该物理空间中执行,并将内核态业务绑定在该CPU核 上,从而可以实现该内核态业务被该CPU核独占地执行。
即,当CPU1核上的内核态业务绑定到CPU1核上后,该内核态业务只 能在CPU1核上运行,不会跑到其他CPU核上运行,而且如果上述A31中, 为CPU1核分配了空闲的物理空间,其他CPU核上运行的内核态业务也没有 访问CPU1核的物理空间的能力,即其他CPU核上运行的内核态业务也不会 加载到CPU1核的物理空间,不会跑到CPU1核上运行,能够保证CPU1核
运行内核态业务的安全性。
可见,本发明实施例二为每个CPU核分配独立的虚拟空间,当运行在 CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公 共系统空间部分分配CPU核的私有虚拟空间,建立所述CPU核的私有虚拟 空间到所述CPU核的物理空间的映射关系,使被运行在所述CPU核上的内 核态业务能够通过该CPU核的私有虚拟空间及上述映射关系访问该CPU核 的物理空间,实现不同CPU核间的内核空间隔离,从而能够保证CPU核运
行内核态业务的安全性。
其中,当用户请求启动至少两个特定CPU核上的内核态业务P时,系统 为至少两个CPU核分配相同的私有虚拟空间和同一物理空间,建立相同的私 有虚拟空间到同一物理空间的映射关系,由所述至少两个CPU核将内核态业务P的程序映象加栽到该私有物理空间中,以及系统将内核态业务P绑定在 所述至少两个CPU核上,使该内核态业务能够通过该私有虚拟空间及上述映目的。
内核地址主要涉及的是空间映射表,空间映射表中包含了虚拟空间地址
的访问属性和对应的物理空间地址。现有技术中,在内核态业务与CPU核绑 定后,CPU核运行内核态业务时,需要利用空间映射表将内核空间中的虚拟 地址映射到物理地址。以SMP系统采用具体的CPU,如X86架构CPU核为 例进行说明,当采用X86架构的CPU核时,CPU核采用两级映射关系,包 括页目录和页表;比如对于某个32位的虚拟地址,该32位地址分为三部分, 第22位到第31位这10位(最高IO位)是页目录中的索引,第12位到第 21位这10位是页表中页表项的索引,第O位到第11位这12位(低12位) 是页内偏移。对于一个要转换成物理地址的虚拟地址,首先根据最高10位, 找到对应的页目录项。页目录项中有这个虚拟地址所对应页表的地址。有了 页表的地址,根据虚拟地址的第12位到第21位这IO位的值作为索引,找到 该页表中相应的页表项,页表项中有这个虚拟地址所对应物理页的物理地址。 最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址, 就得到了该虚拟地址所对应的物理地址。
本发明实施例采用的技术方案是在内核空间为CPU核分配私有的虚拟空 间,相应的为CPU核分配空间以保存CPU核的空间映射表,实现在内核态为 CPU核隔离空间,在内核态业务与CPU核绑定后,该CPU核执行内核态业务时, 利用CPU核的空间映射表,能将CPU核私有的虚拟内存空间映射到物理空间, 因此能够保证内核态业务(如内核线程)运行的安全性。
参阅图6,如下描述一种建立CPU核的私有虚拟空间到CPU核的物理空间 的映射关系的方法,包括
Bl、分配CPU核的私有页目录空间和私有页表空间。
该步骤的具体实现方式用_get_free_pages函数为CPU核分配一页私有页 目录空间,确定所分配的CPU核的私有虚拟空间所跨的私有页表的个数,进 而利用_get_free_pages函lt分配只十应的私有页表空间。B2 、获取内核页目录作为CPU核的私有页目录,存入CPU核的私有页目
录空间。
B3、确定CPU核的私有虚拟空间对应的私有页目录中的私有页目录项。
在步骤B3中,根据CPU核的私有虚拟空间的地址范围,可以直接确定该 CPU核的私有虚拟空间对应的私有页目录项,如果CPU核的私有虚拟空间为 00000000-000FFFFF,则根据高IO位,确定该CPU核的私有虚拟空间对应的私 有页目录项为第0条页目录项。
B4 、获取CPU核的私有虚拟空间对应的原内核页目录项所指向的原内核 页表,作为CPU核的私有页表保存在私有页表空间。
在步骤B3和步骤B4中,才艮据CPU核的私有虚拟空间的地址范围,可以直 接确定该CPU核的私有虚拟空间对应的原内核页目录项和原内核页表。续上 述实例,CPU核的私有虚拟空间为00000000-000FFFFF,则根据高10位,确定 该CPU核的私有虚拟空间对应的原内核页目录项为第0条目录项,该第0条目 录项中保存有对应的原内核页表的地址,根据原内核页表的地址,找到对应 的原内核页表,将该原内核页表保存到CPU核的私有页表空间作为CPU核的私 有页表。
其中,也可以采用其他方式获得CPU核的私有页表,比如,通信设备自 己建立私有页表,该私有页表中对应CPU核的私有虚拟空间的页表项指向CPU
核的私有物理空间。
B5、将步骤B3中所确定的私有页目录项指向私有页表空间。
该步骤具体是将所确定的私有页目录项中原来保存的内核页表的物理地 址改为CPU核的私有页表空间的物理地址。
B6、根据CPU核的私有虚拟空间,将CPU核的私有页表的相应页表项指 向CPU核的(私有)物理空间,即将CPU核的私有页表的相应页表项内所保存 的物理页的地址修改为CPU核的私有物理空间的地址。
其中,步骤B5中将所确定的私有页目录项指向私有页表空间,是为了在 后续本CPU核的内核态业务获取到CPU核的私有页目录后,能根据该私有页目 录项找到对应的CPU核的私有页表;CPU核的私有页表中的页表项中保存有 CPU核的私有物理空间的地址,利用页表项所保存的地址,可寻址到该CPU核的私有物理空间。
如果给每个CPU都分配了虚拟空间,则不用执行后续B7,如果只是给一些CPU分配了虚拟空间,而另一些CPU核的内核态业务还需要访问内核页表,也就是说这些CPU核的物理空间是共享的,则需要执行步骤B7。
B7、将上述CPU核的虚拟内存空间对应的原内核页表项的属性设置为只读或者不可访问。
本步骤中将该原内核页表项的属性设置为只读或者不可访问的目的是在其他CPU核的内核态业务访问原内核页表时,由于该原内核页表项的属性设置为只读或者不可访问,所以其他CPU核不能访问或不能写到上述CPU核的物理空间,或者其他CPU核的内核态业务不能加载到上述CPU核的物理空间,从而实现不同核间内核空间隔离的效果。
需要说明的是,如果为CPU核分配的私有虚拟空间比较大,比如恰好是一个页目录项所对应的空间时,此时可以确定CPU核的私有虚拟空间对应的原内核页目录项,设置该原内核页目录项的属性为只读或者不可访问。
可见,本发明实施例中,为CPU核配置了私有页目录空间和私有页表空间,以便后续内核线程能访问该CPU核的虚拟内存空间,同时为了防止其他非本CPU核的内核线程访问该CPU核的虚拟内存空间,配置CPU核的虚拟内存空间所对应的原内核页表项的属性为只读或者不可访问,以实现不同CPU核
间的内核空间隔离的效果。
本发明实施例中,通过利用私有页目录和私有页表,可以实现将CPU核
私有的虚拟空间映射到物理空间,从而能够保证内核态业务(如内核线程)运行的安全性。
参阅图7,如下描述另 一种建立CPU核的私有虚拟空间到物理空间的映射关系的方法,该方法与上述描述的方法不同之处在于不用为CPU核分配私有页表空间,而是利用CPU核的虚拟空间对应的原内核页表。
C1 、分配CPU核的私有页目录空间。
C2 、获取内核页目录作为CPU核的私有页目录,存入CPU核的私有页目
录空间。
C3 、确定CPU核的私有虚拟空间对应的私有页目录中的私有页目录项。C4、确定CPU核的私有虚拟空间对应的原内核页目录项所指向的原内核页表。
C5、将私有页目录项指向所述CPU核的私有虚拟空间对应的原内核页表。
该步骤将CPU核的私有虚拟空间对应的私有页目录项指向CPU核的私有虚拟空间对应的原内核页表,是为了后续该CPU核上的内核态业务可以直接利用该原内核页表。
C6、根据CPU核的私有虚拟空间,查找所述原内核页表中相应的页表项,配置所找到的页表项指向所述CPU核的物理空间。
C7、将该CPU核的私有虚拟空间对应的原内核页目录项设置为只读或者不可i方问。
其中,该方法中不用为CPU核分配私有页表空间,而是直接使用CPU核的私有虚拟空间对应的原内核页表。为了使用CPU核的私有虚拟空间对应的原内核页表,需要将CPU核的私有虚拟空间对应的原内核页目录项设置为只读或者不可访问,以防止其^M一本CPU核的内核态业务访问该内核页目录项所指向的内核页表。
可见,本发明实施例中,为CPU核配置了私有页目录空间,以^^后续内核线程能访问该CPU的虚拟内存空间,同时为了防止其他非本CPU核的内核线程访问该CPU核的虚拟内存空间,配置CPU核的虚拟内存空间所对应的原内核页目录项的属性为只读或者不可访问,以实现在内核空间中,不同CPU核间
的内核空间隔离的效果。
请参阅图8,如下描述利用本发明实施例三提供的内核空间隔离方法,在SMP系统上仿真AMP系统的实现方式。
Dl、将软件编译成SMP系统的内核模块。
D2、部署到具体CPU核加载内核模块,内核模块初始化过程中选择部署的CPU核。
D3、为CPU核划分独立的虚拟空间,所述虚拟空间包括公共系统空间。D4、建立所述CPU核的公共系统空间到公共物理空间的映射关系。D5、当运行在该CPU核上的内核态业务(加载内核模块的过程中所创建的内核线程)请求物理空间时,在所述CPU核的虚拟空间中的非公共系统空间部分分配CPU核的私有虚拟空间,确定所述CPU核的物理空间(这里的物理
空间可以是CPU核的私有物理空间),建立所述CPU核的私有虚拟空间到物理
空间的映射。
有物理空间的映射找到该CPU核的物理空间,由该CPU核将内核态业务加载到该物理空间中执行,将内核态业务(加载内核模块的过程中所创建的内核线程)绑定到该CPU核。换言之,即内核模块运行过程中,利用预置的接口在该CPU核的物理内存空间中进行操作。
可见,本发明实施例中,在SMP系统中,使CPU核上的内核态业务加载到该CPU核的物理空间(该物理空间可以是CPU核的私有物理空间)内执行,即在SMP系统上仿真AMP系统,实现内核态业务运行时4吏用的内存空间其他CPU核不能修改,以保证该CPU核上的内核态业务运行的安全性;进一步,可以使用SMP系统提供的各种管理工具和核间通信功能来管理内核态业务,提高内核态业务的可维护性。
参阅图9,本发明实施例提供一种空间管理实体,用于当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间,该CPU核的虚拟空间与其他CPU核的虚拟空间相互独立,并确定所述CPU核的物理空间,建立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据所述私有虚拟空间以及所述映射关系访问所述物理空间,其中,该空间管理实体包括
确定单元801 ,用于当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间,确定所述CPU核的物理空间,其中,所述CPU核的虚拟空间与其他CPU核的虚拟空间相互独立;如图3-5所示;以及,这里的内核态业务可以是内核线程。
第一建立单元802,用于建立所述CPU核的私有虚拟空间到物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据所述私有虚拟空间以及所述映射关系访问所述物理空间。
该空间管理实体还包括空间分配单元803,用于在内核空间中,为每个CPU核分配独立的虚拟空 间,所述虚拟空间包括公共系统空间;需要说明的是,本发明实施例不涉 及用户地址空间。
第二建立单元804,用于建立所述公共系统空间到公共物理空间的映射关 系。需要说明的是,在一种实现下,第一建立单元802和第二建立单元804可 以集成为一个单元实现;
其中,在一种实现下,所述确定单元801为第一确定单元,用于当运行在 CPU核上的内核态业务请求物理空间时,在所述CPU核的虚拟空间中的非公共 系统空间部分分配CPU核的私有虚拟空间;并分配空闲的物理空间作为所述 CPU核的物理空间;需要说明的是,这里分配的空闲的物理空间为该CPU核的 私有物理空间;
或者,在另一种实现下,所述确定单元801为第二确定单元,用于当运行 在CPU核上的内核态业务请求指定的物理空间时,在所述CPU核的虚拟空间中 的非公共系统空间部分分配CPU核的私有虚拟空间,确定所述指定的物理空 间为所述CPU核的物理空间。针对这种实现,可适用于如下情况,包括但不 限于某个内核态业务将对网卡进行相关操作,而对于网卡这类硬件,系统 已分配固定的物理空间(比如M1),此时,运行在CPU核上的内核态业务会 指定物理空间(即上述的物理空间M1 )。
以SMP系统釆用具体的CPU,如X86架构CPU核为例进行说明,当采用X86 架构的CPU核时,CPU核采用两级映射关系的空间映射表,包括页目录和页表;
在一种实现下,本发明实施例中,所述第一建立单元802包括
第一空间分配单元,用于为所述CPU核分配私有页目录空间和私有页表 空间;
第一获得单元,用于获得所述CPU核的私有页目录,并保存在所述CPU 核的私有页目录空间;根据所述CPU核的私有虚拟空间,获取所述CPU核私有 页表,并保存在所述CPU核的私有页表空间;
以及,第 一配置单元,用于确定所述CPU核的私有虚拟空间对应的所述 CPU核的私有页目录中的私有页目录项,配置所述私有页目录项指向所述CPU 核的私有页表空间;根据所述CPU核的私有虚拟空间,查找所述CPU核的私有页表中相应的页表项,配置所找到的页表项指向所述CPU核的物理空间; 或者,在另一种实现下,所述第一建立单元802包括 第二空间分配单元,用于为所述CPU核分配私有页目录空间; 第二获得单元,用于获得所述CPU核的私有页目录,并保存在所述CPU 核的私有页目录空间;
以及,第二配置单元,用于确定所述CPU核的私有虚拟空间对应的所述 CPU核的私有页目录中的私有页目录项,将所述私有页目录项指向所述CPU 核的私有虚拟空间对应的原内核页表,根据所述CPU核的私有虚拟空间,查 找所述原内核页表中相应的页表项,配置所找到的页表项指向所述CPU核的 物理空间。从而实现,在内核态业务与CPU核绑定后,CPU核运行内核态业务 时,利用空间映射表(私有页目录、私有页表)将内核空间中的虚拟地址映 射到物理地址。
若空间管理实体不是给SMP系统中的每个CPU核分配独立的虚拟空间, 而是给SMP系统中的部分CPU核分配了独立的虚拟空间,而另 一些CPU核的内 核态业务还需要访问原内核页目录和页表,也就是说这些CPU核的物理空间 是共享的,则空间管理实体还包括
第三配置单元,用于配置所述CPU核的私有虚拟空间所对应的原内核页 表项或者原内核页目录项的属性为只读或者不可访问。
其中,配置所述CPU核的私有虚拟空间所对应的原内核页表项或者原内 核页目录项的属性为只读或者不可访问的目的是在其他CPU核的内核态业 务访问原内核页表时,由于该原内核页表项的属性设置为只读或者不可访问, 所以其他CPU核不能访问或不能写到上述CPU核的物理空间(私有物理空间), 或者其他CPU核的内核态业务不能加载到上述CPU核的物理空间(私有物理空 间),从而实现SMP系统的不同CPU核间内核空间隔离的效果。
可见,本发明实施例中,为CPU核分配了独立的虚拟空间,当运行在CPU 核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统 空间部分分配CPU核的私有虚拟空间,建立所述CPU核的私有虚拟空间到所述 CPU核的物理空间的映射关系,使运行在所述CPU核上的内核态业务能够利用 该CPU核的私有虚拟空间及已建立的映射关系访问该CPU核的物理空间,实现不同CPU核间的内核空间隔离的效果,从而能够保证CPU核运行内核态业务的 安全性。
参阅图IO,为本发明实施例提供一种SMP系统的逻辑示意图,包括多 个CPU核和被多个CPU核访问的内存,其中,多个CPU核,如图10所示,可以 包括第一CPU核、第二CPU核和第三CPU核;以及,本发明实施例的SMP 系统,还包括
所述私有空间管理实体,用于当运行在CPU核上的内核态业务请求物理 空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有 虚拟空间,确定所述CPU核的物理空间,建立所述CPU核的私有虚拟空间到所 述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务4艮据 所述私有虚拟空间和所述映射关系访问所述物理空间,其中,所述CPU核的 虚拟空间与其他CPU核的虚拟空间相互独立。
进一步的,本发明实施例的SMP系统还包括公共空间管理实体,用于 在内核空间中为每个CPU核分配独立的虚拟空间,所述虚拟空间包括公共 系统空间;建立所述公共系统空间到公共物理空间的映射关系;需要说明的 是,私有空间管理实体和公共空间管理实体可以认为是程序,程序通过线程 来执行,故在图中,不方便示出;以及需要说明的是,私有空间管理实体和 公共空间管理实体可以集成为 一个空间管理实体。
一种实现下,所述私有空间管理实体为第一私有空间管理实体,用于当 运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非 公共系统空间部分分配CPU核的私有虚拟空间,为该CPU核分配空闲的物理空 间(此时该CPU核的物理空间为该CPU核专有),建立该CPU核的私有虚拟空 间到所分配的物理空间的映射关系,使得运行在该CPU核上的内核态业务才艮 据(通过)该CPU核的私有虚拟空间,以及该CPU核的映射关系访问该CPU 核的物理空间,从而使该CPU核的物理空间被运行在该CPU核上的内核态任务 通过所分配的私有虚拟空间进4亍访问。
在另一种实现下,所述私有空间管理实体为第二私有空间管理实体,用 于当运行在CPU核上的内核态业务请求指定的物理空间时,在所述CPU核的虚 拟空间中的非公共系统空间部分分配所述CPU核的私有虚拟空间,建立所述CPU核的私有虚拟空间到该内核态业务指定的物理空间的映射关系,使得运
行在该CPU核上的内核态业务通过该CPU核的私有虚拟空间,以及该CPU核的 映射关系访问该CPU核的物理空间,从而使该CPU核的物理空间被运行在该 CPU核上的内核态任务通过该CPU核的私有虚拟空间进行访问。
在另一种实现下,所述私有空间管理实体为第三私有空间管理实体,用
于当用户请求启动第一CPU核和第二CPU核上的内核态业务时,为所述第一 CPU核和第二CPU核分配相同的私有虚拟空间和同一物理空间,建立私有虚拟 空间到同 一物理空间的映射关系,并由第一CPU核和第二CPU核将该内核态业
务程序加载到该物理空间中,以及,用于将所述内核态业务绑定在所述第一
CPU核和第二 CPU核上,从而实现所述内核态业务被第一CPU核和第二CPU
核执行。
可见,本发明实施例中,SMP系统使CPU核上的内核态业务加载到该CPU 核的物理空间(私有物理空间)内执行,以保证该CPU核上的内核态业务运 行的安全性;进一步,可以使用SMP系统提供的各种管理工具和核间通信功 能来管理AMP内核态业务,提高AMP内核态业务的可维护性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流 程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于 一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施 例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随4踏^fiH己忆体(Random Access Memory, RAM)等。
以上对本发明实施例所提供的内核空间隔离方法、空间管理实体及系统 进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了 阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同 时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应 用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的 限制。
权利要求
1、一种内核空间隔离方法,其特征在于,包括当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间;确定所述CPU核的物理空间;建立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据所述私有虚拟空间以及所述映射关系访问所述物理空间;其中,该CPU核的虚拟空间与其他CPU核的虚拟空间相互独立。
2、 根据权利l所述的方法,其特征在于,所述在该CPU核的虚拟空间中 的非公共系统空间部分分配该CPU核的私有虚拟空间的步骤之前,该方法还 包括在内核空间中为所述CPU核分配独立的虚拟空间,所述虚拟空间包括 7>共系统空间;建立所述公共系统空间到公共物理空间的映射关系。
3、 根据权利l所述的方法,其特征在于,所述确定所述CPU核的物理空 间为为所述CPU核运行的内核态业务分配空闲的物理空间作为所述CPU核的 物理空间。
4、 根据权利l所述的方法,其特征在于,所述确定所述CPU核的物理空 间为当运行在CPU核上的内核态业务请求指定的物理空间时,确定所述指定 的物理空间为所述CPU核的物理空间。
5、 根据权利l所述的方法,其特征在于,所述建立所述CPU核的私有虚 拟空间到所述CPU核的物理空间的映射关系包括为所述CPU核分配私有页目录空间和私有页表空间,获得所述CPU核的私 有页目录,并保存在所述CPU核的私有页目录空间,确定所述CPU核的私有虚 拟空间所对应的所述CPU核的私有页目录中的私有页目录项,根据所述CPU 核的私有虚拟空间,获取所述CPU核的私有页表,并保存在所述CPU核的私有 页表空间,配置所述私有页目录项指向所述CPU核的私有页表空间;根据所述CPU核的私有虚拟空间,查找所述CPU核的私有页表中的相应的页表项,配 置所找到的页表项指向所述CPU核的物理空间。
6、 根据权利l所述的方法,其特征在于,所述建立所述CPU核的私有虚拟 空间到所述CPU核的物理空间的映射关系包括为所述CPU核分配私有页目录空间,获取所述CPU核的私有页目录,并保 存在所述CPU核的私有页目录空间,确定所述CPU核的私有虚拟空间对应的所 述CPU核的私有页目录中的私有页目录项,将所述私有页目录项指向所述CPU 核的私有虚拟空间对应的原内核页表,根据所述CPU核的私有虚拟空间,查 找所述原内核页表中相应的页表项,配置所找到的页表项指向所述CPU核的 物理空间。
7、 才艮据权利5或者6所述的方法,其特征在于,所述在该CPU核的虚拟空 间中的非公共系统空间部分分配该CPU核的私有虚拟空间的步骤之后,该方 法还包括配置所述CPU核的私有虚拟空间所对应的原内核页表项或者原内核页目 录项的属性为只读或者不可访问。
8、 一种空间管理实体,其特征在于,包括确定单元,用于当运行在CPU核上的内核态业务请求物理空间时,在该 CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间,确 定所述CPU核的物理空间,其中,该CPU核的虚拟空间与其他CPU核的虚拟空 间相互独立;第一建立单元,用于建立所述CPU核的私有虚拟空间到所述CPU核的物理空间以及所述映射关系访问所述物理空间。
9、 根据权利8所述的实体,其特征在于,所述空间管理实体还包括 空间分配单元,用于为CPU核分配独立的虚拟空间,所述虚拟空间包括/>共系统空间;第二建立单元,用于建立所述^^共系统空间到7>共物理空间的映射关系。
10、 根据权利8所述的实体,其特征在于,所述确定单元为第一确定单元,用于当运行在CPU核上的内核态业务请求物理空间时,在所述CPU核的虚拟空间中的非公共系统空间部分分配所述CPU核的私有虚拟空间;并分配空闲的物理空间作为所述CPU核的物理空间; 或者,所述确定单元为第二确定单元,用于当运行在CPU核上的内核态 业务请求指定的物理空间时,在所述CPU核的虚拟空间中的非公共系统空间 部分分配所述CPU核的私有虚拟空间,确定所述指定的物理空间为所述CPU 核的物理空间。
11、 根据权利8、 9或者10所述的实体,其特征在于, 所述第一建立单元包括第 一 空间分配单元,用于为所述CPU核分配私有页目录空间和私有页表 空间;第一获得单元,用于获得所述CPU核的私有页目录,并保存在所述CPU 核的私有页目录空间;根据所述CPU核的私有虚拟空间,获得所述CPU核私有 页表,并保存在所述CPU核的私有页表空间;第一配置单元,用于确定所述CPU核的私有虚拟空间所对应的所述CPU 核的私有页目录中的私有页目录项,配置所述私有页目录项指向所述CPU核 的私有页表空间;根据所述CPU核的私有虚拟空间,查找所述CPU核的私有页 表中相应的页表项,配置所找到的页表项指向所述CPU核的物理空间;或者,所述第一建立单元包括第二空间分配单元,用于为所述CPU核分配私有页目录空间; 第二获得单元,用于获得所述CPU核的私有页目录,并保存在所述CPU 核的私有页目录空间;第二配置单元,用于确定所述CPU核的私有虚拟空间所对应的所述CPU 核的私有页目录中的私有页目录项,将所述私有页目录项指向所述CPU核的 私有虚拟空间所对应的原内核页表,根据所述CPU核的私有虚拟空间,查找 所述原内核页表中相应的页表项,配置所找到的页表项指向所述CPU核的物 理空间。
12、 冲艮据权利ll所述的实体,其特征在于,所述空间管理实体还包括 第三配置单元,用于配置所述CPU核的私有虚拟空间所对应的原内核页表项或者原内核页目录项的属性为只读或者不可访问。
13、 一种对称多处理SMP系统,其特征在于,该系统包含多个CPU核和 私有空间管理实体,其中所述私有空间管理实体,用于当运行在CPU核上的内核态业务请求物理 空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有 虚拟空间,确定所述CPU核的物理空间,建立所述CPU核的私有虚拟空间到所 述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据 所述私有虚拟空间以及所述映射关系访问所述物理空间,其中,该CPU核的 虚拟空间与其他CPU核的虚拟空间相互独立。
14、 根据权利13所述的系统,其特征在于,该系统还包括 公共空间管理实体,用于在内核空间中为CPU核分配独立的虚拟空间,所述虚拟空间包括《^共系统空间;建立所述^^共系统空间到公共物理空间 的映射关系。
15、 才艮据权利13或者14所述的系统,其特征在于,所述私有空间管理实体为第 一私有空间管理实体,用于当运行在CPU核 上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统空 间部分分配该CPU核的私有虚拟空间,分配空闲的物理空间作为所述CPU核的 物理空间,建立所述私有虚拟空间到所述CPU核的物理空间的映射关系,使 得运行在所述CPU核上的内核态业务根据所述私有虚拟空间以及所述映射关 系访问所述CPU核的物理空间。
16、 根据权利13或者14所述的系统,其特征在于,所述私有空间管理实体为第二私有空间管理实体,用于当运行在CPU核 上的内核态业务请求指定的物理空间时,在该CPU核的虚拟空间中的非公共 系统空间部分分配该CPU核的私有虚拟空间,确定所述指定的物理空间为所 述CPU核的物理空间,建立所述CPU核的私有虚拟空间到所述CPU核的物理空 间的映射关系,使得运行在所述CPU核上的内核态业务才艮据所述私有虚拟空 间以及所述映射关系访问所述CPU核的物理空间。
17、 根据权利13或者14所述的系统,其特征在于,所述多个CPU核包括 第一CPU核和第二CPU核;所述私有空间管理实体为第三私有空间管理实体,用于当用户请求启动第一CPU核和第二CPU核上的内核态业务时,为所述第一CPU核和第二CPU核分配相同的私有虚拟空间和同一物理空间,建立所述私有虚拟空间到所述同一物理空间的映射关系,由所述第一CPU核和第二CPU核将所述内核态业务 加载到所述物理空间中,以及,用于将所述内核态业务绑定到所述第一CPU 核和第二CPU核上。
全文摘要
本发明实施例提供一种内核空间隔离方法、空间管理实体及系统,其中,内核空间隔离方法包括当运行在CPU核上的内核态业务请求物理空间时,在该CPU核的虚拟空间中的非公共系统空间部分分配该CPU核的私有虚拟空间;确定所述CPU核的物理空间;建立所述CPU核的私有虚拟空间到所述CPU核的物理空间的映射关系,使得运行在所述CPU核上的内核态业务根据所述私有虚拟空间以及所述映射关系访问所述物理空间;其中,该CPU核的虚拟空间与其他CPU核的虚拟空间相互独立。使用本发明实施例提供的技术方案,实现不同CPU核间的内核空间隔离。
文档编号G06F9/50GK101477477SQ20091000022
公开日2009年7月8日 申请日期2009年1月12日 优先权日2009年1月12日
发明者戴华飞, 李国柱 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1