发明名称 一种实现操作系统核心代码段多副本运行的方法
摘要 本发明提供一种操作系统代码段多副本运行的方法,该方法是针对传统NUMA系统下的操作系统无法兼顾CPU并行度和访存效率的缺点,在多个CPU的本地内存中,建立核心代码段的多个副本使核心代码段局部化;当系统需要陷入核心态时,可以选择当前进程所运行的CPU,或者发生中断的硬件亲近的CPU运行核心代码;CPU在运行核心的过程中,可以直接访问本地内存中的核心代码段数据,从而提高了访问内存的效率,达到提升系统整体性能的目的。
申请公布号 CN101604263A 申请公布日期 2009.12.16
申请号 CN200910016772.3 申请日期 2009.07.13
申请人 浪潮电子信息产业股份有限公司 发明人 张东;吴楠;赵明;郭露
分类号 G06F9/48(2006.01)I;G06F9/445(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 代理人
主权项 1、一种实现操作系统核心代码段多副本运行的方法,其特征在于:在多个CPU的本地内存中建立核心代码段的多个副本,即核心代码段的局部化;当系统需要陷入核心态时,选择当前进程所运行的CPU或者发生中断的硬件亲近的CPU运行核心代码;CPU在运行核心的过程中,直接访问本地内存中的核心代码段数据,用以提高访问内存的效率,达到提升系统整体性能的目的,代码段多副本运行步骤如下:1)多CPU的NUMA体系结构的计算机启动时,系统固件BIOS指定系统中的某个CPU以下记为CPUO,将操作系统核心代码加载到CPUO的本地内存中,并使用该CPUO开始运行核心初始化代码;2)CPUO在完成操作系统核心初始化后,唤醒其他所有CPU,并在CPUO上启动系统的第一个用户态进程,以下记为进程0,将控制权交给进程0;此时,其他所有CPU进入idele状态;3)当首次有进程,记为进程n0被调度到某个CPU,记为CPUn上运行时,在CPUn的本地内存中分配一段内存,将核心代码段复制到该段内存中;并为进程n0建立新的核心代码段页表,使其指向CPUn的这段内存中,被映射到CPUn的本地内存中的还有进程n0的用户态空间;4)在CPUn的本地内存中分配一段内存,建立中断向量表的副本,其中所有的中端向量地址均指向本地核心代码段副本中的中断处理函数;并修改CPUn的中端向量入口寄存器,使其指向本地中断向量表副本的物理地址;5)对于使用系统调用门方法陷入核心的硬件,还需要参照中断向量表的处理方式,建立系统调用入口表的本地副本,并修改CPUn的入口寄存器;6)当再次有进程,记为进程nm,被调度到CPUn上运行时,只需要修改进程nm的核心代码段页表,使其指向CPUn中的核心代码段副本。
地址 250014山东省济南市历下区山大路224号