对安全控制模块内存进行集中控制的方法

文档序号:6585086阅读:381来源:国知局
专利名称:对安全控制模块内存进行集中控制的方法
技术领域
本发明属于安全操作系统领域,是一种对安全控制模块运行中所使用的内存进行
集中分配及管理的方法。该方法不仅能够提高系统资源的使用效率,而且还能为安全控制 模块所使用的数据提供更高强度的保护。
背景技术
国标GB17859-1999要求结构化保护级以上级别的操作系统需要对系统中所有主
客体进行安全标记,而在大型服务器中,系统中的主、客体总数可能达到上百万个的量级,
并且有可能动态变化。操作系统实施强制访问控制策略,需要对这些客体的名称进行检索、
对比等查找行为。相应地,需要为这些主客体的安全标记等在内存中分配空间。《信息系统等级保护安全设计技术要求》规定,结构化保护级的操作系统,在关键
安全保护部件中需要划分功能层次。对安全标记的维护和访问控制策略裁决行为作为安
全功能中最核心的内容,需要在关键安全保护部件功能层中的最底层完成,而使用系统自
身的内存分配机制,可能导致缺页中断等现象,既影响系统的性能,又可能出现客体重用问
题,为攻击者提供攻击途径。 结构化保护级安全操作系统中,运行时需要用到的安全标记和访问控制策略最好 始终保持在内存中,不应在删除前被释放,也不应被置换到磁盘空间中。这就要求我们在关 键安全保护部件功能层次最底层使用专门的内存分配机制来维护安全标记的内存分配,同 时要做到内存分配尽量高效、节省。 安全标记的内存需求可以分为两个部分,一部分是安全属性的内存需求,一个安 全属性一般有固定的内存空间需求,这些内存空间需求比较容易进行管理。而另一部分是 这些安全标记所对应的主客体对象名称的空间需求,这些主客体对象名称的特点是数量 众多、总长度不定,但平均值较小(以文件为例,如果只记录当前目录下对象名称,其长度 一般在几个字节到十几个字节之间,最大不会超过255个字节)、变化不很频繁,另外,运行 过程中,只有唯一的指针(安全标记中对象名称指针)指向该内存空间需求。 一般的内存 分配算法对其进行处理时效率欠佳。

发明内容
本发明的目的在于针对安全操作系统中安全模块使用内存的特点,设计一种内存 分配算法,在提高系统资源使用效率的同时,为安全控制模块所使用的数据提供更高强度 的保护。 本发明是采用以下技术手段实现的 —种对安全控制模块内存进行集中控制的方法,以双向链表维护名称空间内存 块,以堆栈机制分配名称空间;包括以下步骤预定义参数用al 1oc—pages 0函数分配N 个大小为Bz的内存块和建立名称空间管理机制;名称空间处理安全模块的内存分配请求; 名称空间处理安全模块的内存释放请求;名称空间自检操作。
本发明与现有技术相比,具有以下明显的优势和有益效果 l,在核心层外执行系统内存分配,可以保证核心层操作的原子性,同时方便系统
采用内存隔离机制保护结构化保护级操作系统的核心层,避免客体重用问题。 2,每一次名称空间内存分配操作,需执行的指令少,因此可以保证系统的高性能
内存分配。 3,通过内存回收操作,可以始终保持名称空间的空洞内存不会过大,避免内存浪费。


图1名称空间内存分配机制工作流程;
图2名称空间内存分配机制运行流程。
具体实施例方式
本发明阐述了一种高效的结构化保护级操作系统核心层名称空间内存分配方法。 它以双向链表维护名称空间内存块,以堆栈机制分配名称空间,并以分解的排序方法对空 洞值动态增加的空洞内存块进行大致排序,以保证执行内存块回收操作时,能迅速找到内 存块的回收对象。 为达到上述目的,本发明的具体实施方式
是这样实现的设定一个内存初始值,在 系统中预分配内存初始值大小的内存,由名称空间内存分配机制集中管理,系统定期检查 (可以定时检查或定次检查)预分配内存的总空间和空闲空间,当预分配的内存空闲空间 小于分配阈值时,系统补充预分配内存;当预分配内存总空间大于内存初始值,且空闲空间 大于回收阈值时,系统从预分配内存中回收内存。系统内存分配及管理的流程如图2所示。
本算法的核心部分可以用逻辑电路或程序语言来实现,同时,为外层调用提供初 始化、名称空间分配、名称空间监测、名称空间补充和名称空间回收五个调用接口。算法主 要以以下四个步骤实现
—、预定义以下参数 名称空间使用内存块大小,应为4K的整数倍(记为Bz)。 初始化时分配内存块数量(记为N)。 内存块整理阀值(记为p)。 名称空间内存分配阀值(记为ql)。 名称空间内存释放阀值(记为q2)。 每次新增/释放内存块数量(记为i)。 二、用alloc—pages()函数分配N个大小为Bz的内存块和建立名称空间管理机 制。 系统定义一个名称空间管理数据结构,其中记录如下内容。
—个地址指针,指向当前使用的名称空间内存块。
—个整数值,记录当前分配内存块数量(记为Bn),初始为N。
—个整数值,记录当前空闲内存块数量(记为Bf),初始为N。
名称空间双向链表地址,所有名称空间占用内存块挂载在链表上。
指向内存指针对应表的指针。 名称空间使用内存总量(记为Bb),初始为0。 定义一个指针对应表,记录指针序号,对应内存长度及对应内存位置。初始为空。
每个内存块起始地址分出一部份固定空间(记为m),存放如下管理信息
双向链表指针,用以组成链表结构。
内存块当前可用位置(记为C),初始为m。
本内存块空洞空间数值(记为Hn),初始为0。
三、名称空间处理安全模块的内存分配请求 通过名称空间管理数据结构中的地址指针找到当前活动的名称空间内存块。
若内存分配需求长度为n,则作如下操作 检查Bz-C-n是否小于O,如是,则将当前空闲内存块设为当前内存块,当前空闲内
存块的下一个空闲内存块置为当前空闲内存块。Bf = Bf_l。 若Bf < ql,则分配新的i个内存块加入队列。Bn = Bn+i, Bf = Bf+i 在指针对应表中登记,置对应内存长度为n,对应内存位置为当前内存块地址IC C = C+n。 Bb = Bb+n 返回对应表中指针序号,作为名称空间使用内存地址(记为A)。
四、名称空间处理安全模块的内存释放请求
若一个长度为n的名称空间被释放,则作如下操作 按A在对应表中查到对应内存地址后对自减其对Bz求模,获取名称所属相关内存 块的起始地址。 Hn+n,若Hn/(Bz-m) 〉p,则进行内存整理。检查对应表中所有此内存块中有效内 容,将其内存移动到当前活动内存块中,并修改对应表中内存地址项。此内存块清空后加入 队列。Bf = Bf+1。 Bb = Bb_n。若Bf > q2,则从队列中取出i个空闲内存块,清0后释放。Bn =
Bn-i, Bf = Bf-i。
五、名称空间自检操作; 系统空闲时间可进行名称空间内存检测操作,该操作可以定时触发,或定次触发 (当上次刷新后,名称空间的分配行为次数达到一定数量和/或名称空间的删除行为次数 达到一定数量时,触发名称空间内存检测行为)。 名称空间内存检测操作按照名称空间当前分配内存的状态,当时,触发名称空间
内存回收行为,也可以在空洞内存总量或与使用内存的比值大小增加到一定程度时,触发
名称空间内存回收行为。
回收行为按如下方式进行 遍历指针对应表,把其中所有有效项顺序重写到空闲块中,每使用一个空闲块则 Bf = Bf-l。更新对应表中地址项,清空后的内存块置O后加入空闲块,每加入一个则Bf = Bf+1。 重新检查Bf项,若Bf > q2,则从队列中取出i个空闲内存块,置O后释放。Bn = Bn-i, Bf = Bf-i。
权利要求
一种对安全控制模块内存进行集中控制的方法,以双向链表维护名称空间内存块,以堆栈机制分配名称空间;其特征在于包括以下步骤预定义参数用alloc_pages()函数分配N个大小为Bz的内存块和建立名称空间管理机制;名称空间处理安全模块的内存分配请求;名称空间处理安全模块的内存释放请求;名称空间自检操作。
2. 根据权利要求1所述的对安全控制模块内存进行集中控制的方法,其特征在于所 述的预定义参数包括名称空间使用内存块大小BZ ;初始化时分配内存块数量N ;内存块整 理阀值P ;名称空间内存分配阀值ql ;名称空间内存释放阀值q2 ;每次新增/释放内存块数
3. 根据权利要求1所述的对安全控制模块内存进行集中控制的方法,其特征在于所 述的用alloc—pages()函数分配N个大小为Bz的内存块和建立名称空间管理机制包括以 下步骤;一个地址指针,指向当前使用的名称空间内存块;一个整数值,记录当前分配内存 块数量Bn,初始为N ;—个整数值,记录当前空闲内存块数量Bf,初始为N ;名称空间双向链 表地址,所有名称空间占用内存块挂载在链表上;指向内存指针对应表的指针;名称空间 使用内存总量Bb,初始为0 ;定义一个指针对应表,记录指针序号,对应内存长度及对应内 存位置,初始为空;每个内存块起始地址分出一部分固定空间m,存放管理信息。
4. 根据权利要求1所述的对安全控制模块内存进行集中控制的方法,其特征在于所 述的名称空间处理安全模块的内存分配请求包括以下步骤通过地址指针找到当前活动的 名称空间内存块;若内存分配需求长度为n,则作如下操作检查BzCn是否小于0,如是,则 将当前空闲内存块设为当前内存块,当前空闲内存块的下一个空闲内存块置为当前空闲内 存块;Bf = Bf-l ;若Bf < ql,则分配新的i个内存块加入队列;Bn = Bn+i, Bf = Bf+i在 指针对应表中登记,置对应内存长度为n,对应内存位置为当前内存块地址+C, C = C+n ;Bb =Bb+n返回对应表中指针序号,记为A的作为名称空间使用内存地址。
5. 根据权利要求1所述的对安全控制模块内存进行集中控制的方法,其特征在于所 述的名称空间处理安全模块的内存释放请求包括以下步骤若一个长度为n的名称空间被释放,则作如下操作按A在对应表中查到对应内存地址 后对自减其对Bz求模,获取名称所属相关内存块的起始地址;Hn+n,若Hn/(Bz-m) > p,则 进行内存整理;检查对应表中所有此内存块中有效内容,将其内存移动到当前活动内存块 中,并修改对应表中内存地址项;此内存块清空后加入队列;Bf = Bf+l ;Bb二Bb-n,若Bf > q2,则从队列中取出i个空闲内存块,清0后释放;Bn = Bn_i, Bf = B_i :
6. 根据权利要求1所述的对安全控制模块内存进行集中控制的方法,其特征在于所 述的名称空间自检操作包括以下步骤系统空闲时间可进行名称空间内存检测操作,该操作可以定时触发,或定次触发;名称 空间内存检测操作按照名称空间当前分配内存的状态,当时,触发名称空间内存回收行为, 也可以在空洞内存总量或与使用内存的比值大小增加到一定程度时,触发名称空间内存回 收行为。
7. 根据权利要求1或3所述的对安全控制模块内存进行集中控制的方法,其特征在于 所述的管理信息包括双向链表指针,用以组成链表结构;记为C的内存块当前可用位置, 初始为m ;记为Hn的本内存块空洞空间数值,初始为0。
8. 根据权利要求1或6所述的对安全控制模块内存进行集中控制的方法,其特征在于所述的回收行为按如下方式进行遍历指针对应表,把其中所有有效项顺序重写到空闲块中,每使用一个空闲块则Bf = Bf-l ;更新对应表中地址项,清空后的内存块置0后加入空闲块,每加入一个则Bf = Bf+1 ;重新检查Bf项,若Bf > q2,则从队列中取出i个空闲内存块,置0后释放;Bn = Bn-i, Bf = Bf_i。
全文摘要
一种对安全控制模块内存进行集中控制的方法,以双向链表维护名称空间内存块,以堆栈机制分配名称空间,并以分解的排序方法对空洞值动态增加的空洞内存块进行排序;包括以下步骤预定义参数用alloc_pages()函数分配N个大小为Bz的内存块和建立名称空间管理机制;名称空间处理安全模块的内存分配请求;名称空间处理安全模块的内存释放请求;名称空间自检操作。该方法可以保证可信计算基安全名称空间的处理符合单向调用的原则,系统通过一个监控程序监控安全名称空间的状况,在内存块空洞较大时,回收空洞内存;在空闲内存块数量不足时,则补充空闲内存块。同时为可信计算基提供一个稳定、高效的安全名称空间内存分配机制。
文档编号G06F21/02GK101739346SQ20091024220
公开日2010年6月16日 申请日期2009年12月4日 优先权日2009年12月4日
发明者沈昌祥, 田健生, 胡俊, 蔡勉 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1