向多核平台移植操作系统的研究

更新时间:2024-04-25 23:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

龙源期刊网 http://www.qikan.com.cn

向多核平台移植操作系统的研究

作者:蔡 勉 田健生

来源:《现代电子技术》2010年第05期

摘 要:随着硬件技术的飞速发展,双核乃至多核的计算机的普及,操作系统向多核平台移植的需要也越来越迫切。详细分析操作系统在向多CPU支持的平台移植时可能遇见的伪共享问题及优先级错置问题的产生原因,针对不同情况提出了按规范修改代码、增加内核调度监控线程及将特定程序绑定在单CPU运行等不同对策,并给出了实现方法。 关键词:多核平台;伪共享;线程优先级;操作系统 中图分类号:TP311文献标识码:A 文章编号:1004-373X(2010)05-182-03

Research on Transplanting of Operating System to Multi-core Environment CAI Mian,TIAN Jiansheng

(College of Electronic Information and Control Engineering,Beijing University of Technology,Beijing,100124,China)

Abstract:With the fast development of hardware and computers with mutli-core technology,the operating system is transplanted to mutli-core environment urgently.The false sharing and thread priority questions maybe found within the migrate process are analysed,for different

conditions,different methods such as modifying the source code,adding a kernel thread to control priority and running special program on single CPU are proposed.

Keywords:mutli-core environment;false sharing;thread priority;operating system

随着硬件技术的飞速发展,双核乃至多核的计算机的普及,运用硬件资源为应用程序提供运行平台的操作系统也要有相应的调整。现在绝大多数操作系统都支持多核平台以及多线程及超线程技术。而对于安全有特殊需要的Linux安全操作系统,在多核平台上运行多线程的应用程序时可能会出现一些新的情况,而在特定条件下,它们会对系统的安全和稳定构成威胁。这些问题主要体现在存储缓存(Memory Caching)和线程优先级(Thread Priority)方面。 1 在内存/缓存方面,在临时存储器共享的多核运算平台上可能出现伪共享问题

现在的主流个人计算机多核计算平台中的每个执行核都拥有自己的L1 Cache而共享L2 Cache,多核工作站也一般是每个执行核拥有自己的Cache而共享内存。由于CPU的处理速度远远高于内存,总线等工作单元的存取,传输速度,为了更有效地利用CPU资源,一般把多个数据段

龙源期刊网 http://www.qikan.com.cn

组合在Cache的同一行中传送给处理器,于是,在某个时间点上,一个处理器核上的L1 Cache与另一个处理器核上的L1 Cache可能会出现同步方面问题。

假设有两个线程分别运行在双核处理器的两个执行核上,它们同时对邻近的存储器单元进行读写操作。由于操作系统对这两个线程的管理是全局的,而Cache存储器是基于局部性原理工作的,故不同的数据可能存放在Cache的同一行中。于是,即使某个线程所需的位于某个Cache块中的数据尚未使用过,操作系统还是可能会因为另一个处在其他执行核上的线程使用了此Cache行中其他块而将此行标记为无效,要求其下一级的存储单元重新读入这行数据。如果两个线程都要对这个Cache块进行连续多次的写操作(比如循环语句中的循环次数计数变量),使得这个块要不断的在两个CPU间传递,从而极大的影响系统运行速度。这就是常见的伪共享(False Sharing)问题,如图1所示。 图1 共享L2 Cache的双核系统中的 False Sharing问题

这会导致一些在单核平台上运行很稳定的程序在多核平台上却不能正常工作。对于此问题,文献[1]给出了详细说明。

而在安全操作系统中,由于有对隐通道进行分析审计的安全功能模块存在,在处理器进行此严重异常操作的情况下应该会进行报警并执行相应的安全措施,从而使系统无法正常运行。 事实上,伪共享问题早在十几年前安装有多个单芯片处理器的大规模并行处理机出现时就已经浮出水面,十几年来,国内外对其进行了大量的研究,取得了诸多进展,但由于此问题起源于硬件架构,所以一直没能找到一个完美的解决办法。

现在一般的处理技术有:在编程、编译时将非共享的数据分放到不同的Cache行;将全局变量复制到一个函数内的局部变量,在函数结束前再把它复制回去;在进程中,将数据结构集中处理并使每个数据元素(可以是确认不会引起伪共享的几个变量,以避免因在Cache行中填充大量空白而浪费太多系统资源)占有一个Cache行;将引发了伪共享的线程移动到一个执行核上。 应该注意到,上面提到的前三种方法都要对源代码进行分析和改写,这对整个操作系统以及其下运行的大量应该程序来说工作量太过巨大,而最后一个方法虽然可以实时的处理伪共享问题,可它要对Cache进行不断的监控,其造成的额外系统资源开销过大,而且,如果是在讲求所有操作行为都应该是可预期的可信计算系统中,多出这样一个具有最高权限的进程很可能会与已有的TSP安全策略(TCB Security Policy)产生冲突,影响到系统的平稳运行。

综上,作为以安全稳定为重点的操作系统,在升级至多核平台后应以牺牲部分性能为代价对未经改写的源代码进行兼容处理,即对其的编译执行提供兼容模式,令其只在一个执行核上运行。

本文来源:https://www.bwwdw.com/article/5f6p.html

Top