基于复合尺度页的页表分区管理装置和方法与流程

文档序号:12120720阅读:276来源:国知局
基于复合尺度页的页表分区管理装置和方法与流程
本发明涉及一种基于复合尺度页的页表分区管理装置和方法。
背景技术
:随着安全关键领域系统使用要求越来越为复杂,特别是物理综合和功能综合的需求被引入到航空、航天等领域,要求安全关键领域的嵌入式操作系统,能够为上层应用提供不同分区下的综合使用及隔离保护功能。为此,操作系统需要充分利用处理器的存储管理单元(MMU),特别是页表管理方法,为不同分区逻辑空间,映射不同的物理地址空间,从而为分区提供彼此不能交叉访问的空间隔离。经典的页表管理方法,将逻辑地址空间和物理地址空间,分割成4KB大小的页来进行管理,同时将每4KB逻辑地址向物理地址的映射关系,保存到内存中,形成页表。4KB页表,以页目录表的基地址作为整个页表的基本上下文标识,在使用时,将32位页逻辑地址的第31位到第22位作为索引,在页目录表找到相应的页目录项,得到二级页表基地址;之后根据32位逻辑地址的第21位到第12位作为索引,在二级页表中找到相应的页表项,在页表项中得到相应的页物理地址。经典的4KB页表映射的基本原理如图1所示。经典操作系统的设计,由于面向复杂应用场合的使用要求,需能够处理用户反复的、变化尺度的空间申请和释放过程。这种条件下,使用4KB尺度的页,将使得物理地址空间,不会因为被申请和释放的空间大小的变化而造成太多空间碎片和资源浪费。但是,对于安全关键系统的应用,根据安全性规范要求,是不允许使用空间的动态申请和释放的。面向这种需求,以4KB为单位的页管理,就体现出了两个缺陷。一个缺陷,是页表需要占据较大空间。以一个分区内,需要管理4GB逻辑空间为例,若以4KB页进行管理,则一个分区总共需要4MB+4KB的页表空间。对于实现分区隔离功能,若每个分区都拥有一个独立的页表,则一个系统中,仅页表就需要占据非常大的空间。另一个缺陷,当前大部分处理器都使用了空间映射关系的缓冲技术,以减少频繁从内存中获取页表项所花费的开销。很多处理器提供了包括256B、4KB到256MB在内的多种尺度空间映射的缓冲,这种条件下,若仍旧只使用4KB页,则由于每次映射的范围较小,出现地址未映射到的可能性较大,会频繁出现映射缓冲未命中的情况,系统的时间开销增大。因此,需要根据安全关键系统的应用场景,提出一种充分利用处理器不同尺度映射缓冲机制的页表管理机制,以一种专用的页表管理方法,提升安全关键系统下分区隔离功能的实 现效率。技术实现要素:本发明的目的是,能够根据安全关键系统的专用使用场景,进行页表尺度的设计,并逐步进行各分区空间的映射,在实现空间隔离功能的基础上,充分利用硬件资源,最终达到优化分区管理功能开销的目的。本发明了一种使用多尺度复合页表,进行分区空间页表映射管理的装置和方法,即基于复合尺度页的页表分区管理装置,包括:具备存储管理模块的处理器、内存、页表模块、物理地址空间、逻辑地址空间、分区模块;处理器执行整个页表的构建与切换过程,同时进行分区模块的管理,其内部必须包含存储管理模块;存储管理模块提供页表映射发挥作用的场所,完成逻辑地址向物理地址的映射;内存用于存储页表并为分区提供运行空间;物理地址空间标识实际的物理设备在计算机地址线上访问的地址空间;逻辑地址空间则标识处理器所能够访问的地址空间;页表模块定义页表构建和切换的规则,还定义管理逻辑空间向物理空间的映射关系;分区模块用于管理相关资源的数据,相关资源包括私有的物理地址空间和逻辑地址空间,不同分区的物理地址空间不相同;分区模块中,每一个分区具备相应的逻辑空间,包括逻辑空间起始地址,以及分区大小,每一个分区的逻辑起始地址,为一个三十二位的数据;分区模块中,每一个分区具备相应的物理空间,包括物理空间起始地址,每一个分区的物理起始地址,为一个三十二位的数据;分区模块中,每一个分区根据访问的属性分多个段,段的类型包括代码段、只读数据段、可读写数据段和堆栈段;每个分区的逻辑地址和物理地址的映射关系,是通过隶属于每个分区的空间上下文进行管理的。页表模块包括页目录表、页目录表基址以及二级页表;页目录表是内存中的一段数据,页目录表基址保持在每个分区的空间上下文中,指明该页表隶属于哪一个分区;页目录表中的每一个成员,为页目录项或大页表项,页目录项或大页表项在页目录表中的位置,是通过三十二位逻辑地址的最高m位进行索引的,一个页目录项或大页表项所能够管理的逻辑空间,为2的(32-m)次方,m为6-14之间的任意整数;页目录项为三十二位的字段,三十二位的字段分为“页目录项标识位”,“二级页表基地址”和“二级页表属性”,“页目录项标识位”表明页目录项身份;“二级页表基地址”表明指向的二级页表的基地址,“二级页表属性”表明二级页表的访问权限属性;大页表项为三十二位的字段,三十二位的字段分为“页目录项标识位”、“页基地址”、“页尺度”以及“页属性”,其中“页目录项标识位”表明大页表项身份;“页基地址”标识大页的物理基地址,“页尺度”决定大页表项所能管理的所有页的大小,“页属性”决定页访问权限;大页表项所能管理的大页的尺度为2的(32-m)次方字节,到2的32次方字节之内大小的页,若大页表项管理的页尺度为2的(32-x)次方字节(x为0到m之间的值),则页目录表中的2的m-x次方的大页表项,应该重复同样的内容;二级页表中的每一个成员,为页表项,页表项在页表中的位置是通过三十二位逻辑地址中的最高m位之后的n位进行索引的,n为1到24-m之间的任意整数,二级页表中页表项所能管理的逻辑空间,为2的32-m-n次方;页表项为32位字段,分为“页基地址”、“页尺度”,以及“页属性”,其中“页基地址”标识页的物理基地址,“页尺度”决定页表项所能映射的所有页大小,页属性决定所有可能的页访问权限,页表项管理多种尺度的页,其中,2的32-m-n次方字节,为页表项所能管理的最小尺度的页,2的32-m-1次方字节,为页表项所能管理的最大尺度的页,若页表项管理的页尺度为2的32-m-y次方字节,y为1到n之间的整数值,则页表中的2的n-y次方的页表项,应该重复同样的内容;另,基于复合尺度页的页表分区管理方法,:包括:具备存储管理模块的处理器、内存、页表模块、物理地址空间、逻辑地址空间、分区模块;处理器执行整个页表的构建与切换过程,同时进行分区模块的管理,其内部必须包含存储管理模块;存储管理模块提供页表映射发挥作用的场所,完成逻辑地址向物理地址的映射;内存用于存储页表并为分区提供运行空间;物理地址空间标识实际的物理设备在计算机地址线上访问的地址空间;逻辑地址空间则标识处理器所能够访问的地址空间;页表模块定义页表构建和切换的规则,还定义管理逻辑空间向物理空间的映射关系;分区模块用于管理相关资源的数据,相关资源包括私有的物理地址空间和逻辑地址空间,不同分区的物理地址空间不相同;步骤1):在三十二位逻辑地址空间中,分区模块为各分区分配逻辑起始地址以及分区大小;分区的逻辑起始地址,为一个三十二位的数据,分区的逻辑起始地址不与实际物理设备 的物理地址重合,与4KB大小对齐,分区的大小,为4KB的整数倍。步骤2):将分区的空间分为多个段,各段空间连续且大小为4KB的整数倍,在分区逻辑空间内,为各段分配逻辑地址空间,在物理地址空间的内存中,为各段分配相应的物理地址空间;步骤3):在页表模块中选择的页尺度,页尺度是实际硬件存储管理模块支持的映射大小中的子集,可选页的大小应该与分区空间规划过程,得到的段的大小具有相同的量级;步骤4):为每一个分区构建一个独立的页表,每个分区在内存中,申请一个页目录表空间,将该页目录表的首地址,作为该分区的空间管理上下文;步骤5):进行分区空间映射管理,将分区的空间根据允许访问的属性分段,段的类型包括但不限于代码段、只读数据段、可读写数据段或堆栈段;步骤6):通过分区页表,对各段空间依次进行映射,步骤7):从每个段的逻辑首地址开始,首先使用尺度最大的页进行映射,若不能成功,则选用次大尺度的页进行映射,直到找到一个合适的最大页为止,完成该段空间首个页逻辑地址向物理地址的映射;步骤8):对每个段的余下的空间,继续使用尺度最大的页进行映射,若不能成功,则选用次大尺度的页进行映射,直到找到一个合适的最大页为止,直到该段空间全部映射到页表中为止;步骤9):若分区有剩余段,则执行步骤7),若分区无剩余段,分区页表对各段空间依次映射结束。3.根据权利要求2所述的基于复合尺度页的页表进行分区管理的方法,步骤7)中:若选定页的尺度大于或等于页目录项所能够管理的大小2的(32-m)次方字节时,则根据逻辑地址,得到页目录表中相应位置的页目录项后,将“页目录项标识位”置为“大页表项”状态,并在该大页表项中,依次在“页基地址”字段填入页的物理基地址、“页尺度”字段填入页大小,“页属性”字段填入页属性参数,完成大页的映射。4.根据权利要求2所述的基于复合尺度页的页表进行分区管理的方法,步骤7)中:若选定页的尺度小于页目录项所能够管理的大小2的(32-m)次方字节时,则根据逻辑地址,得到页目录表中相应位置的页目录项后,将“页目录项标识位”置为“页目录项”状态,并从内存中,申请一个二级页表空间,将该页表基地址填入页目录项中“二级页表基地址”字段,并填写“二级页表属性”字段。在新申请的二级页表空间中,根据所申请页的逻辑地址,索引到该页在二级页表中的页表项,并在该页表项中,依次填入“页基地址”、“页尺度”,以 及“页属性”字段。5.根据权利要求2所述的基于复合尺度页的页表进行分区管理的方法,其特征在于,无论是页目录表中的大页表项,还是二级页表中的页表项,如果映射的页尺度,大于一个页表项所能够管理的空间,则多个页表项会重复这一页表项的内容,直到多个页表项的尺度总和,等于所映射的页尺度为止。6.根据权利要求2所述的基于复合尺度页的页表进行分区管理的方法,其特征在于,当处理器运行分区内容发生页表映射的未命中异常时,处理器从分区上下文空间中,获取页表基地址,并根据导致页表映射未命中异常的逻辑地址,从页表中索引到相应的页表项,将索引页表项的页逻辑地址,和页表项中保存的页物理地址,以及页表项中相应的页属性,放置于存储管理模块中,即可完成该逻辑空间向物理空间的映射。本发明具有的优点和有益效果:本发明是一种使用多尺度复合页表,进行分区空间页表映射管理的优化方法,通过这种方法,各分区占用的页表空间可以极大的减小;分区运行过程中,页映射未命中的几率也会大大减少。同时,面向安全关键系统,此方法与4KB页表管理方法相比,空间使用率也不会有任何额外的增加。附图说明图1是面向4KB页进行逻辑地址转换的原理示意图;图2是复合页表进行空间管理的原理示意图;图3是一个页目录项设计的范例示意图;图4是一个大页表项设计的范例示意图;图5是一个页表项设计的范例示意图;图6是本方法进行分区管理的范例示意图1;图7是本方法进行分区管理的范例示意图2;图8是本方法进行分区管理的范例示意图3;具体实施方式结合具体图表进行实施方法的描述。如图2所示,是一个可能的使用复合页表进行空间管理,最终得到的空间映射示意图。以针对MPC8548处理器的MMU机制,使用本方法进行设计为例。MPC8548的MMU机制,仅提供了TLB的映射方式,未对页表的具体实现方法有任何限定,需要操作系统根据实际情况进行设计。MPC8548处理器的MMU,其TLB支持以下九种尺度的页:表1尺度4KB16KB64KB256KB1MB4MB16MB64MB256MB此外,各分区的应用,根据规模预估,每个分区会大约占用1MB到20MB空间。此时,根据以上处理器信息首先进行复合页表的设计。1.复合页表设计:1.1首先决定可供使用页大小的选择。综合处理器可用的页表尺度,以及应用各分区的使用需求,可以决定选用的页表尺度包括以下8种:表2PS0PS1PS2PS3PS4PS5PS6PS7尺度4KB16KB64KB256KB1MB4MB16MB64MB以上尺度,全部为MPC8548处理器中TLB支持的尺度,同时可以涵盖应用分区的空间范围。1.2之后进行页目录项的设计。这一步的关键在于页目录项所管理的空间大小。经典的页表,页目录项管理的空间为4MB,此时,页目录表和页表的大小均为4KB。这种情况下,当使用的页为4MB及以上时,就可以节省4KB的页表空间。但是从各应用分区的需求尺度来看,出现4MB大小的段可能性很小。如果将页目录项管理的空间设为1MB,此时页目录表大小为16KB,页表的大小为1KB。因此,使用此方法,若存在12个1MB的页,可以保证比页目录项管理的方式节省更多页表空间。此处选用页目录项管理的空间为1MB方式进行管理。即PDS为1MB。1.3将页目录项的32位中,最后一位定义为“页目录项标识”,当此位为1,时,表示为页目录项;为0时,表示为一个大页表项。1.4作为页目录项,其指向一个1KB的页表,因此需要32位中的22位,来表示页表的地址。最后剩下的9位,可以用来标识页表的读写访问属性。最后设计如图3:其中,页表属性根据MPC8548的TLB属性进行设计如下:表3位数属性9UX,为1表示用户态执行允许属性8SX,为1表示内核态执行允许属性7UW,为1表示用户态写允许属性6SW,为1表示内核态写允许属性5UR,为1表示用户态读允许属性4SR,为1表示内核态读允许属性3W,为0表示write-back,为1表示write-through2I,为1表示cacheing-inhibited1G,为1表示GUARD属性起作用1.5若作为大页表项,其支持1MB、4MB、16MB、64MB四种页尺度,需要2位来区分页尺度。需要最多12位来标识页基地址,9位来标识页的访问属性。最终设计如图4:其中页表属性的特征如表3,大页表的页尺度属性如下:表4bit[1110]大页尺度0064MB011MB104MB1116MB1.6对于页表项的设计,其支持4KB、16KB、64KB、256KB四种页尺度,需要2为来区分页尺度,需要最多20位来标识页基地址,9为来标识页的访问属性。最终设计如图5:其中,页表的页尺度属性如下:表5bit[1110]大页尺度00256KB014KB1016KB1164KB2.分区的规划本范例中,使用2个分区,每个分区均分为代码段、只读数据段、可读写数据段、堆栈段四个部分。两个分区的空间分配如下:表6分区A段名称长度起始地址读写属性代码段0x5E10000xC0000000可执行、不可读写只读数据段0x820000xC05E1000不可执行不可读,可写可读写数据段0x8410000xC0663000不可执行,可读写堆栈段0x1500000xC0EA4000不可执行,可读写表7分区B段名称长度起始地址读写属性代码段0x44C0000xC0000000可执行、不可读写只读数据段0x740000xC044C000不可执行不可读,可写可读写数据段0x5EA0000xC04C0000不可执行,可读写堆栈段0x1000000xC0AAA000不可执行,可读写3.页表对分区空间的管理3.1为每个分区申请一个独立的页表。首先申请一个页目录表,将此页目录表的基地址,保存在分区的分区空间上下文中,以便分区切换时,进行页表切换的操作。3.2如表6、表7所示,分区A和分区B的逻辑地址均从0xC0000000开始,每个段的大小均为4KB的整数倍,因此分区的总大小也为4KB的整数倍。为分区A分配的物理地址如下:段名称长度起始地址物理起始地址代码段0x5E10000xC00000000x08000000只读数据段0x820000xC05E10000x085E1000可读写数据段0x8410000xC06630000x08663000堆栈段0x1500000xC0EA40000x08EA40003.3对分区中的逐个段,在页表中逐步映射。以分区A为例,首先映射代码段。其起始地址为0xC0000000,大小为0x5E1000,此时尝试使用最大的页64MB,对分区A代码段进行映射。页是否能够映射代码段的判据为以下两个条件:a)该段逻辑起始地址与可选页大小是否对齐?b)段长度是否大于或等于该页大小?由于0x4000000大于0x5E1000,因此不能选用64MB,其次选择16MB。由于0x1000000大于0x5E1000,因此不能选用16MB,其次选择4MB。由于0x400000小于0x5E1000,因此首次选用4MB。在页目录表的偏移0xC0000000/0x100000=0xC00处,得到页目录项。由于4MB大于页目录项所能够管理的空间1MB,因此不需要申请二级页表,直接在页目录项中使用4MB大页表项,同时占据4个页目录项。此时得到的页表如图6:3.4分区A的代码段中完成了4MB的映射,此时还剩下0x1E1000,剩下空间的起始逻辑地址为0xC0400000,继续使用以上的两个判据进行页映射的选择。此时从可选页中从大到小依次判断,得到1MB页的选择。在页目录表的偏移0xC04处,得到页目录项。由于1MB等于页目录项所能够管理的空间1MB,因此不需要申请二级页表,直接在页目录项中使用1MB大页表项,占用一个页目录项。此时得到的页表如图7:分区A的代码段中完成了5MB空间的映射,此时还剩下0xE1000,剩下空间的起始逻辑地址为0xC0500000,继续使用以上的两个判据进行页映射的选择。此时从可选页中从大到小依次判断,得到256KB页的选择。在页目录表的偏移0xC05处,得到页目录项。由于256KB小于页目录项所能够管理的空间1MB,此时申请1KB的二级页表空间。并在二级页表的偏移0处,得到页表项,进行256KB页的映射。由于256KB是4KB的64倍,因此同时占据64个页表项。此时得到的页表如图8:此时分区A的代码段还剩下空间0xA1000,起始逻辑地址为0xC0540000。之后继续对代码段进行页分配,依次还得到2个256KB的页,2个64KB的页和一个4KB的页。此时,分区A的代码段全部映射完成。3.5此时开始对分区A的只读数据段进行管理。该段的逻辑起始地址为0xC05E1000,长度为0x82000。由于逻辑起始地址仅与4KB大小对齐,因此首先从4KB尺度页进行映射。依次分配到3个4KB的页。此时,剩下空间的逻辑起始地址为0xC05E4000,长度为0x7F000。地址与16KB(0x4000)对齐,且剩余长度大于16KB,因此使用16KB页。依次分配到连续3个16KB页。此时,剩下空间的逻辑起始地址为0xC05F0000,长度为0x73000。地址与64KB(0x10000)对齐,且剩余长度大于64KB,因此使用64KB页。此时,剩下空间的逻辑起始地址为0xC0600000,长度为0x63000。地址与256KB(0x40000)对齐,且剩余长度大于256KB,因此使用256KB页。此时,由于逻辑地址跨越到一个新的1MB对齐地址中,因此,在页目录表的0xC06偏移处,指向一个新申请的二级页表,在新的页表中,映射此256KB页。按照以上的判据,继续进行判断,继续得到2个64KB的页,以及3个4KB的页,之后完成分区A的数据段的映射。按照前述方法,最终完成分区A和分区B的空间映射管理。通过实际验证,上述方法在MPC8548处理器中,能够实现分区隔离的功能,并且有效减少了页表空间和TLB未命中的几率。本发明还可以有其它多种实施例,在不背离本发明精神和实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1