发明名称 一种面向多核处理器的操作系统噪声控制方法
摘要 本发明为一种面向多核处理器的操作系统噪声控制方法,属于操作系统和程序分析领域。本发明的噪声控制方法基于隔离控制的方法,在Linux内核上实现,首先设置一套内核控制接口,通过该接口动态地设置静化处理器,并指定进程到静化处理器上运行;然后设置支持静化控制的内核机制,主要包括:内核工程的修改、基本数据结构的增加和修改、设置新的静化处理器和保护静化处理器不受影响。本发明的噪声控制方法可以不用重启地重新设置某些需要隔离的静化处理器,使这些处理器避免任务的再平衡,从而实现了对操作系统噪声的控制,并给操作系统用户提供了良好的一致性体验。
申请公布号 CN102117224B 申请公布日期 2013.01.30
申请号 CN201110061401.4 申请日期 2011.03.15
申请人 北京航空航天大学 发明人 王雷;谭成鑫;陈佳捷
分类号 G06F9/48(2006.01)I;G06F15/16(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 周长琪
主权项 一种面向多核处理器的操作系统噪声控制方法,其特征在于,该方法在Linux内核上实现,具体为:第一步、配置一套内核的控制接口,包括:步骤1.1、虚拟/proc文件系统接口初始化:首先创建静化处理器子系统的目录quietcpu,然后在目录quietcpu下为每个处理器创建各自的子目录以及控制项,最后为每个控制项注册相应的读写操作函数,并将操作系统中的数据结构proc_dir_entry中的参数data中存储的数据修改为指针形式的处理器编号;步骤1.2、访问虚拟/proc文件系统的文件接口:当静化处理器子系统中的某个静化处理器的控制项文件中被写入数据时,写操作函数被调用,写操作函数从数据结构proc_dir_entry中的参数data中获得处理器的编号,再对写入的数据进行分析,在写入数据有效且写入的数据为非零值时,调用与从参数data中获得的处理器编号对应的静化处理器设置函数,若写入的数据为0,则恢复静化处理器到正常模式;从静化处理器子系统中的某个静化处理器的控制项文件读取数据时,读操作函数同样从参数data中取得处理器编号后,从静化处理器子系统获得对应处理器的静化状态;步骤1.3、指定进程到静化处理器上运行:将操作系统中原函数set_cpus_allowed_ptr替换为带有静化处理器子系统标志的新函数__set_cpus_allowed,新函数较原函数增加了一个用于标志调用是否是来自静化处理器子系统的参数,对系统调用函数sched_setaffinity的实现进行修改,在修改进程与处理器的现有分配关系时会调用函数__set_cpus_allowed,通过使用taskset工具,先启动进程执行,再设置进程的亲和性属性,从而制定进程在静化处理器上运行;所述的进程的亲和性属性具体是通过调用新函数__set_cpus_allowed,修改处理器亲和性位图cpus_allowed来设置的;第二步、设置支持静化控制的内核机制,包括:步骤2.1、内核工程的修改:通过在操作系统内核kernel目录下创建静化处理器子目录,编写内核配置菜单Kconfig文件,为静化处理器子系统提供一个被内核识别的配置选项;步骤2.2、基本数据结构的增加和修改:为静化处理器子系统设置一个全局数据结构,该全局数据结构包括静化处理器位图mask、静化处理器计数number、以及具体处理器静化信息cpu_info,具体处理器静化信息cpu_info中存储每个处理器的静化状态;在进程数据结构task_struct中,添加表示静化处理器进程状态的数据结构quitecup_task_info;步骤2.3、设置静化处理器,包括设置新的静化处理器和还原静化处理器,每次设置新的静化处理器时,要对静化处理器计数进行累计,若已存在的静化处理器数目等于操作系统中能用处理器‑1时,终止增加新的静化处理器,在还原静化处理器时,减少静化处理器计数; 所述的设置新的静化处理器,具体过程是:遍历操作系统中所有的进程,修改进程运行执行的处理器亲和性位图cpus_allowed,同时保存旧处理器亲和性位图;在该过程中,要判断获得的进程是否还存活,获得读写自旋锁tasklist_lock,保护以init_task为头节点的进程链表,修改处理器亲和性位图前释放读写自旋锁tasklist_lock,在处理器亲和性选项生效后对进程进行迁移;所述的还原静化处理器,具体过程是:先将静化处理器从静化处理器子系统的静化处理器位图中移除,再根据系统中可用的处理器位图判断当前要还原的静化处理器是否可用,如果该处理器可用,则将该当前要还原的静化处理器还原为正常模式的处理器;步骤2.4、保护静化处理器不受影响:对于非静化处理器,避免将进程从静化处理器上迁移走,以及避免将进程迁移到静化处理器上;对于静化处理器,避免外部进程被迁移到静化处理器上,避免将进程从静化处理器上迁移走,以及避免激活本地的处理器平衡软中断。
地址 100191 北京市海淀区学院路37号