发明名称 一种获得传统操作系统动态更新时间点的方法
摘要 本发明涉及一种获得传统操作系统动态更新时间点的方法。本发明提出的安全点监测模块M10用于发现可使用传统动态更新机制M20获取对操作系统内核M30安全进行动态更新的时机。该方法的内容为安全点监测模块M10,该模块内部包括初始化子模块M100、事件注入子模块M101、安全点生成子模块M102、系统服务接口子模块M103、安全点创建子模块M104。本发明可保证找到的动态更新点绝对安全,可以快速找到动态更新安全点,不会影响用户任务的正常运行。
申请公布号 CN102073528B 申请公布日期 2013.04.03
申请号 CN201110030741.0 申请日期 2011.01.28
申请人 中国人民解放军国防科学技术大学 发明人 刘晓建;廖湘科;戴华东;吴庆波;任怡
分类号 G06F9/445(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 湖南省国防科技工业局专利中心 43102 代理人 冯青
主权项 一种获得传统操作系统动态更新时间点的方法,该方法要求外部环境必须支持以下能力:1)操作系统实时维护当前系统中存在的用户态任务总数和内核态任务总数;2)操作系统应对外暴露某用户态任务是否会因内核设计原因在未来解除操作系统对另外某些用户态任务的阻塞,该方法依据安全点监测模块M10,安全点监测模块M10运行依赖于传统动态更新机制模块M20、启动实施动态更新的工具模块M40,被更新的操作系统内核模块M30,安全点监测模块M10用于发现可使用传统动态更新机制模块M20获取对被更新的操作系统内核模块M30安全进行动态更新的时机,安全点监测模块M10内部包括初始化子模块M100、事件注入子模块M101、安全点生成子模块M102、系统服务接口子模块M103、安全点创建子模块M104,其特征在于在决定进行动态更新后,该方法开始工作,其过程如下:1)设定当前要进行动态更新,当用户通过动态更新的工具模块M40发出动态更新请求时,初始化子模块M100开始执行;2)向所有用户任务注入用于防止其在内核中无限期睡眠的异步事件;事件注入子模块M101实现为系统内具有最高运行优先权的先进先出型实时任务;3)当发现用户任务task请求系统服务时,若内核未被设计为task未来一定会解除内核对其它某任务的阻塞,则在为其服务前将其阻塞,且该阻塞方法不可被异步事件唤醒;系统服务接口子模块M103用来实现对于用户任务的系统调用和异常处理的选择性阻塞;4)杀死所有当前未处于安全更新点、支持中间状态恢复的内核任务;若某任务的当前状态可以不经专门的状态转换即可运行于动态更新后的系统,则认为该任务处于安全更新点状态;一个内核任务支持中间状态恢复,当且仅当该任务可在睡眠中被杀死,并支持重启后继续进行被杀死时正在提供的服务;5)当运行优先权最低的任务发现所有的用户任务都因步骤3)规定的动作所阻塞、且所有的内核任务都处于安全更新点时,实施动态更新;6)动态更新完成后,设定当前不处于动态更新状态;7)重启被杀死的内核任务,唤醒因步骤3)被阻塞的所有任务;由于动态更新时必须保证所有的CPU都处于动态更新安全点,而多处理器核心有时使得系统很难找到一个全局更新安全点,本方法采取了基于在线控制CPU是否参与运行的方法来加速更新点的发现过程,利用操作系统的CPU在线控制机制,在准备进行动态更新前,将多处理器或多核系统降级为单处理器核心系统,然后实施动态更新,最后将系统恢复为动态更新前系统具有的处理器核心数量。
地址 410073 湖南省长沙市砚瓦池正街47号