1、操作系统对多核处理器的支持方法 Yanshan University8.1 多核简介8.2 操作系统对多核处理器的支持方法8.3 操作系统基于多核平台的优化第八章 多核操作系统 操作系统对多核处理器的支持方法 Yanshan University8.1 多核简介8.1.1 概述 多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。 多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。 多核架构能够使目前的软件更出色地运
2、行,并创建一个促进未来的软件编写更趋完善的架构。随着向多核处理器的移植,已有软件无需被修改就可支持多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与目前对称多处理(SMP)系统的设计流程相同,并且现有的单线程应用也将继续运行。 多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术是处理器发展的必然。 操作系统对多核处理器的支持方法 Yanshan Universi
3、ty8.1.2 发展多核的原因 功耗问题限制了单核处理器不断提高性能的发展途径。 作为计算机核心的处理器就是将输入的数字化的数据和信息,进行加工和处理,然后将结果输出。假定计算机的其他子系统不存在瓶颈的话,那么影响计算机性能高低的核心部件就是处理器。反映在指令上就是处理器执行指令的效率。 处理器性能 = 主频 * IPC 从上面的公式可以看出,衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数(IPC: Instruction Per Clock)和处理器的主频。 提高处理器性能就是两个途径:提高主频和提高每个时钟周期内执行的指令数(IPC)。处理器微架构的变化可以改变IPC,效率更高的
4、微架构可以提高IPC从而提高处理器的性能。但是,对于同一代的架构,改良架构来提高IPC的幅度是非常有限的,所以在单核处理器时代通过提高处理器的主频来提高性能就成了唯一的手段。 不幸的是,给处理器提高主频不是没有止境的,从下面的推导中可以看出,处理器的功耗和处理器内部的电流、电压的平方和主频成正比,而主频和电压成正比。 因为:“处理器功耗正比于电流* 电压 * 电压 * 主频”,“主频正比于电压”,所以:“处理器功耗正比于主频的三次方 ”。操作系统对多核处理器的支持方法 Yanshan University 如果通过提高主频来提高处理器的性能,就会使处理器的功耗以指数(三次方)而非线性(一次方)
5、的速度急剧上升,很快就会触及所谓的“频率的墙”(frequency wall)。过快的能耗上升,使得业界的多数厂商寻找另外一个提高处理器性能的因子,提高IPC。 提高IPC可以通过提高指令执行的并行度来实现,而提高并行度有两种途径:一是提高处理器微架构的并行度;二是采用多核架构。 在采用同样的微架构的情况下,为了达到处理器IPC的目的,我们可以采用多核的方法,同时有效地控制功耗的急剧上升。 因为:“处理器功耗正比于电流* 电压 * 电压 * 主频”,“IPC正比于电流”,所以:“处理器功耗正比于 IPC”。 由单核处理器增加到双核处理器,如果主频不变的话,IPC理论上可以提高一倍,功耗理论上也
6、就最多提高一倍,因为功耗的增加是线性的。而实际情况是,双核处理器性能达到单核处理器同等性能的时候,前者的主频可以更低,因此功耗的下降也是指数方(三次方)下降的。反映到产品中就是双核处理器的起跳主频可以比单核处理器更低,性能更好。 操作系统对多核处理器的支持方法 Yanshan University 由此可见,将来处理器发展的趋势是:为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。这样设计的效果是,更多的并行提高IPC,较低的主频有效地控制了功耗的上升。 处理器实际性能是处理器在每个时钟周期内所能处理器指令数的总量,因此增加一个内核,理论上处理器每个时钟
7、周期内可执行的单元数将增加一倍。原因很简单,因为它可以并行的执行指令,含有几个内核,单位时间可以执行的指令数量上限就会增加几倍。而在芯片内部多嵌入几个内核的难度要远远比加大内核的集成度要简单很多。于是,多核就能够在不提高生产难度的前提下,用多个低频率核心产生超过高频率单核心的处理效能,特别是服务器产品需要面对大量并行数据,多核心分配任务更能够提高工作效率。可以看作一种多处理器协作的微缩形式,并且达到更加的性能价格比,一套系统达到多套系统的性能。操作系统对多核处理器的支持方法 Yanshan University8.1.3 多核的出现是技术发展的必然性1. 晶体管时代即将到来晶体管时代即将到来
8、根据摩尔定律,微处理器的速度以及单片集成度每18个月就会翻一番。经过发展,通用微处理器的主频已经突破了4GHz,数据宽度也达到64位。在制造工艺方面也同样以惊人的速度在发展,0.13um工艺的微处理器已经批量生产,90nm工艺以下的下一代微处理器也已问世。照此下去,到2010年左右,芯片上集成的晶体管数目预计超过10亿个。因此,体系结构的研究又遇到新的问题:如何有效地利用数目众多的晶体管?国际上针对这个问题的研究方兴未艾。多核通过在一个芯片上集成多个简单的处理器核充分利用这些晶体管资源,发挥其最大的能效。 2门延迟逐渐缩短,而全局连线延迟却不断加长门延迟逐渐缩短,而全局连线延迟却不断加长 随着
9、VLSI工艺技术的发展,晶体管特征尺寸不断缩小,使得晶体管门延迟不断减少,但互连线延迟却不断变大。当芯片的制造工艺达到0.18微米甚至更小时,线延迟已经超过门延迟,成为限制电路性能提高的主要因素。在这种情况下,由于CMP(单芯片多处理器)的分布式结构中全局信号较少,与集中式结构的超标量处理器结构相比,在克服线延迟影响方面更具优势。 操作系统对多核处理器的支持方法 Yanshan University3符合符合Pollack规则规则 按照Pollack规则,处理器性能的提升与其复杂性的平方根成正比。 如果一个处理器的硬件逻辑提高一倍,至多能提高性能40,而如果采用两个简单的处理器构成一个相同硬件
10、规模的双核处理器,则可以获得7080的性能提升。同时在面积上也同比缩小。 4能耗不断增长能耗不断增长 随着工艺技术的发展和芯片复杂性的增加,芯片的发热现象日益突出。多核处理器里单个核的速度较慢,处理器消耗较少的能量,产生较少的热量。同时,原来单核处理器里增加的晶体管可用于增加多核处理器的核。在满足性能要求的基础上,多核处理器通过关闭(或降频)一些处理器等低功耗技术,可以有效地降低能耗。 5设计成本的考虑设计成本的考虑 随着处理器结构复杂性的不断提高,和人力成本的不断攀升,设计成本随时间呈线性甚至超线性的增长。多核处理器通过处理器IP等的复用,可以极大降低设计的成本。同时模块的验证成本也显著下降
11、。 6体系结构发展的必然体系结构发展的必然 超标量(Superscalar)结构和超长指令字(VLIW)结构在高性能微处理器中被广泛采用。但是它们的发展都遇到了难以逾越的障碍。Superscalar结构使用多个功能部件同时执行多条指令,实现指令级的并行(Instruction-Level Parallelism,ILP)。但其控制逻辑复杂,实现困难,研究表明,Superscalar结构的ILP一般不超过8。VLIW结构使用多个相同功能部件执行一条超长的指令,但也有两大问题:编译技术支持和二进制兼容问题。操作系统对多核处理器的支持方法 Yanshan University8.1.4 单芯片多处理
12、器与多线程处理器 未来的主流应用需要处理器具备同时执行更多条指令的能力,但是从单一线程中已经不太可能提取更多的并行性,主要有以下两个方面的原因:一是不断增加的芯片面积提高了生产成本;二是设计和验证所花费的时间变得更长。在目前的处理器结构上,更复杂化的设计也只能得到有限的性能提高。 对单一控制线程的依赖限制了多数应用可提取的并行性,而主流商业应用,一般都具有较高的线程级并行性。为此研究人员提出了两种新型体系结构: 单芯片多处理器(CMP)与同时多线程处理器(Simultaneous Multithreading,SMT),这两种体系结构可以充分利用这些应用的指令级并行性和线程级并行性,从而显著提
13、高了这些应用的性能。 从体系结构的角度看,SMT比CMP对处理器资源利用率要高,在克服线延迟影响方面更具优势。CMP相对SMT的最大优势还在于其模块化设计的简洁性。复制简单设计非常容易,指令调度也更加简单。同时SMT中多个线程对共享资源的争用也会影响其性能,而CMP对共享资源的争用要少得多,因此当应用的线程级并行性较高时,CMP性能一般要优于SMT。此外在设计上,更短的芯片连线使CMP比长导线集中式设计的SMT更容易提高芯片的运行频率,从而在一定程度上起到性能优化的效果 。操作系统对多核处理器的支持方法 Yanshan University8.1.5 从多处理器到多核 为了更清楚地理解多操作系
14、统、多核与虚拟化趋势,需回到多处理器系统和多核的关系上。多处理器离多核的应用只有一步之遥。不过,多核与多处理器也有不少区别,其中有一些挑战你必须面对。如多处理器系统中的软件并不能直接拿到多核系统中运行。 在采用多核技术的时候,操作系统管理内核的基本方式有两种:第一种是对称多处理(SMP),这是由一个操作系统来控制多个内核。只要有一个内核空闲可用,操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。第二种是非对称多处理(AMP),每个内核上都运行各自的操作系统。 多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。实际上,多核系统和多处理器系统之间存在着许多重要的区别,导
15、致不能把多处理器系统上的软件直接移植到多核系统上来。 多处理器系统和多核系统的主要区别之一就是,在多处理器系统中,CPU之间的界线是比较清晰的。在典型的多处理器情况下,多个CPU通过总线连接起来,即便是共享外部存储器,这些CPU基本上都是独立运行的。在多核系统中,情况就有所不同。不论采用何种架构,在多核系统中被共享的东西非常多。 运行在多处理器系统中的程序是多线程的程序。这种程序必须是可重入的,即程序代码能够被重叠地启动并且同时运行在多个上下文中,这些运行上下文构成多个线程。操作系统对多核处理器的支持方法 Yanshan University8.1.6 多核微处理器1)英特尔酷睿)英特尔酷睿2
16、双核处理双核处理 英特尔率先揭开了多核计算时代的帷幕。酷睿2双核处理器的价值在于,它缔造了一个范围涵盖核心硬件生产商、周边硬件制造商、软件开发商、整机厂商乃至系统集成商等产业参与者的全新产业链。对于用户来说,英特尔酷睿2 双核处理器堪称有史以来最令人兴奋的个人电脑核心引擎。根据多个独立调查组织提供的数据显示,该处理器在各种服务器、台式机和游戏基准测试中遥遥领先于其它处理器产品,器能够满足用户不断升级的多元需求。2)英特尔酷睿)英特尔酷睿2四核处理器四核处理器 从双核到四核,再到集成80计算核心、性能堪比超级计算机的原型处理器,英特尔对多内核技术的不懈探索总能够挺立于技术和产业的最前沿。 已上市
17、的酷睿2四核处理器为通用服务器和工作站提供了非凡的速度与响应能力受益领域还包括追求绝对性能的数字媒体创建、高端游戏以及其它市场。45纳米四核时代的普及,进入2009年,处理器已经由双核升级到四核时代。操作系统对多核处理器的支持方法 Yanshan University3)未来的多核微处理器)未来的多核微处理器 作为多内核技术的先导者,英特尔于 2007 年初煅制出了内含80内核的可编程处理器,它提供了足以与超级计算机匹敌的强劲性能,且功耗仅62瓦,较大多数家用电器更低。毫无疑问,凝聚了英特尔深厚技术积淀、创新前瞻力及精湛制程工艺的80内核处理器预示了计算/通信技术领域未来的发展趋向它还证明,在
18、可以预见的未来,摩尔定律定能继续驱动整个IT产业高速发展。 多核时代到来Intel发布6核至强处理器,2008年09月,英特尔终于按计划发布了Xeon(至强)7400处理器。该处理器开发代号为“Dunnington”,是英特尔首颗基于X86架构的六核处理器,主要面向注重多线程运算的高端市场。英特尔表示,Xeon 7400在虚拟机和数据库应用方面进行了很多优化。其二级缓存高16MB,每个核心都支持虚拟化技术,其虚拟化性能跟以往产品相比提高达50%。操作系统对多核处理器的支持方法 Yanshan University8.2 操作系统对多核处理器的支持方法v8.2.1 并行计算机访存模型v8.2.2
19、 调度v8.2.3 中断v8.2.4 存储管理v8.2.5 虚拟化技术操作系统对多核处理器的支持方法 Yanshan University UMA(均匀存储访问)模型物理存储器被所有节点共享;所有节点访问任意存储单元的时间相同;发生访存竞争时,仲裁策略平等对待每个节点,即每个节点机会均等;各节点的CPU可带有局部私有高速缓存;外围I/O设备也可以共享,且每个节点有平等的访问权利。当前对称多处理器共享存储并行计算机SMP均采用这种模型(一台机器上多个CPU)操作系统对多核处理器的支持方法 Yanshan University NUMA(非均匀存储访问)模型物理存储器被所有节点共享,任意节点可以直
20、接访问任意内存模块;节点访问内存模块的速度不同,访问本地存储模块的速度一般是访问其它节点内存模块的3倍以上;发生访存竞争时,仲裁策略对节点可能是不等价的;各节点的CPU可带有局部私有高速缓存 (cache);外围I/O设备也可以共享,但对各节点是不等价的。SGI OriginSGI Origin系列并行计算机,系列并行计算机,采用基于采用基于cachecache目录一致性目录一致性的非均匀访存模型(的非均匀访存模型(CCCCNUMANUMA),设计了专门的硬件,),设计了专门的硬件,保证在任意时刻各节点保证在任意时刻各节点cachecache中数据与全局内存数中数据与全局内存数据的一致性。据的
21、一致性。操作系统对多核处理器的支持方法 Yanshan University COMA(全高速缓存存储访问)模型各处理器节点中没有存储层次结构,全部高速缓存组成了全局地址空间;利用分布的高速缓存目录D进行远程高速缓存的访问;COMA中的高速缓存容量一般都大于2级高速缓存容量使用COMA时,数据开始时可以任意分配,因为在运行时它最终会被迁移到要用到它的地方。操作系统对多核处理器的支持方法 Yanshan University NORMA(非远程存储访问)模型所有存储器都是私有的,仅能由其本地处理器访问; 基于消息传递的并行计算机,每个节点都是由一台处理器、本地存储器和I/O外设组成的自治计算机。
22、绝大多数NORMA都不支持远程存储器的访问;在DSM(分布式共享内存)中,NORMA就消失了。消息传递互连网络(网络,环网,超立方,立方环等)PMPMMPMPMPMPMPPMPMPM.操作系统对多核处理器的支持方法 Yanshan Universityv多核操作系统中进程的分配与调度进程的分配将进程分配到合理的物理核上,因为不同的核在共享性和历史运行情况下都是不同的。有的物理核能够共享二级cache,而有的却是独立的。进程间数据共享分配给有共享二级cache的核,提升命中率。操作系统对多核处理器的支持方法 Yanshan Universityv多核下操作系统调度的研究热点程序的并行研究;程序的
23、并行研究;多进程的时间相关性研究;多进程的时间相关性研究;任务的分配与调度;任务的分配与调度;缓存的错误共享;缓存的错误共享;一致性访问研究;一致性访问研究;进程间通信;进程间通信;多处理器核内部资源竞争;多处理器核内部资源竞争;操作系统对多核处理器的支持方法 Yanshan Universityv任务的分配单核:只有一个核的资源可以使用不存在核的任务分配问题;多核:多个进程如何在各个核中分配?v均匀分配?v一起分配到一个核?v按照一定的算法分配?受底层系统结构影响SMP架构只共享内存CMP架构也会共享二级缓存操作系统对多核处理器的支持方法 Yanshan Universityv任务的调度各个
24、核一致的调度算法各个核独立的调度算法进程是否一直运行在同一个核?还是迁移?怎样调度实时任务和普通任务(优先级不同)?系统是否要进行负载均衡?v调度策略(单核)多核呢?先来先服务FCFS最短作业优先SJF优先级调度轮转法RR多级队列调度操作系统对多核处理器的支持方法 Yanshan UniversityvLinux 2.6内核的调度算法时间复杂度O(1)(1)系统为每个处理器都维护一个单独的就绪队列v活动的就绪队列:包含当前时间片还有剩余的就绪任务v扩展的就绪队列:包含那些时间片已经用完的,重新分配时间片的就绪任务。(2)任务的调度是基于优先级调度的v每个处理器上的任务共有140个优先级,每个就
25、绪任务的优先级通过散列函数直接映射到处理器的位图数据结构上,通过位图的find-first-bit可以找到优先级最高的执行(3)活动就绪队列和扩展就绪队列通过指针转换(4)负载均衡v一个core的任务结束,转而处理其他最忙core上的任务v若所有core都有任务,则每200ms检查是否均衡操作系统对多核处理器的支持方法 Yanshan Universityv多核调度算法对任务的分配进行优化。使同一应用程序的任务尽量在一个核上执行,以便达到有共享数据的任务尽量在一个核上面运行,而共享数据量少或者没有的任务在不同核上进行。对任务的共享数据优化。由于CMP体系结构共享二级缓存,可以考虑改变任务在内存
26、中的数据分布,使任务在执行时尽量增加二级缓存的命中率。对任务的负载均衡优化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突量小。操作系统对多核处理器的支持方法 Yanshan University 高级编程中断控制器APIC是基于中断控制器分散在两个基础功能单元本地单元以及I/O单元的分布式体系结构。在多核系统中,多个本地和I/O APIC单元能够作为一个整体通过ICC总线互相操作。 APIC发挥的功能有:接受来自处理器中断引脚中的内部或外部I/O APIC的中断,然后将这些中断发送给处理器核处理。在多核处理器系统中,接收发送核内中断消息。
27、多核体系处理器中,必须将中断处理分发给一组核处理。当系统中有多个核在并行执行时,必须有一个能够接收到的中断分发给能够提供服务的核的机制。操作系统对多核处理器的支持方法 Yanshan UniversityvAPIC通过中断命令寄存器(ICR)来接收和发送IPI消息,ICR提供如下功能:发送中断到其他处理器核允许处理器核转发收到的其不服务的中断到其他处理器核来服务给处理器核自身发送中断(一次自中断)传递特殊IPI(核内中断)到其他处理器核,比如启动IPI消息vIPI消息可以用来启动处理器核或者分配工作任务到不同的处理器核vIPI消息能够用来在系统时或者系统执行的广泛功能单元中分发中断到不同的处理
28、器核。操作系统对多核处理器的支持方法 Yanshan University多核高级可编程中断控制器 APIC操作系统对多核处理器的支持方法 Yanshan University 构建并行机系统的不同存储结构操作系统对多核处理器的支持方法 Yanshan Universityv多核下存储管理相对变化较少,主要改进为了充分使用多核的运算能力,很多库函数都要做成非阻塞调用方式的,但这样会导致数据冲突或不同步的问题,所以必须保证数据同步机制。事务内存管理机制:能够协调程序,在并行运行的同时,保证数据的同步。为了提供内存分配的效率,可以使用多线程内存分配,这样可以提高效率,降低cache冲突,特别有利于
29、空间核时间关联性强的内存操作。操作系统对多核处理器的支持方法 Yanshan Universityv虚拟化技术:虚拟化技术:是指对计算机资源进行的抽象,是在系统、应用或用户与资源进行交互时,对计算机资源的物理特性进行隐藏的一种技术。v分类:分类: (1)平台虚拟化:平台虚拟化:由指定硬件平台上的宿主软件由指定硬件平台上的宿主软件来实行,为其他软件提供一个模拟的计算机环境。来实行,为其他软件提供一个模拟的计算机环境。其他软件通常都是完整的操作系统,就像安装在其他软件通常都是完整的操作系统,就像安装在独立的硬件平台上一样运行。独立的硬件平台上一样运行。 (2)资源虚拟化:资源虚拟化:它是被扩展到具
30、体系统资源的它是被扩展到具体系统资源的虚拟化,它涉及资源的合并、划分以及简化的模虚拟化,它涉及资源的合并、划分以及简化的模拟等作用。拟等作用。操作系统对多核处理器的支持方法 Yanshan University平台虚拟化模拟v模拟:虚拟机模拟完成的硬件,允许针对完全不同的CPU的未经修改的操作系统直接运行。v模拟的实现需要广泛的技术,从状态机到全虚拟平台的动态编译。v这种方法长期以来被用来在新处理器可用之前对软件进行开发。vVirtual PC、QEMU等操作系统对多核处理器的支持方法 Yanshan University平台虚拟化v原始虚拟和全虚拟虚拟机模拟足够的硬件来保证未修改的为相同CP
31、U设计的操作系统独立运行。VMware、Win4BSD等v部分虚拟虚拟机模拟多个但并非所有底层硬件环境,特别是地址空间这样的环境支持资源共享和进程独立,但是不允许独立的客体操作系统实例Windows、Linux等v类虚拟v操作系统级虚拟v应用程序虚拟操作系统对多核处理器的支持方法 Yanshan University资源虚拟化v针对平台虚拟化到具体系统资源的虚拟化的扩展;涉及资源的合并、划分以及简化的模拟v合并单个资源形成更大的资源或者资源地RAID:多个磁盘大的逻辑磁盘物理储存资源存储池v计算机集群,网格计算和虚拟服务器使用上述技术将多个具体计算机合并成大型的计算机。v分区是对单一资源划分成
32、同种形式更易于管理的资源(磁盘空间、网络带宽等)v封装通过创建简化的接口来隐藏资源的复杂性操作系统对多核处理器的支持方法 Yanshan University8.3 操作系统基于多核平台的优化 8.3 1.多核多线程技术的发展 1)内存与处理器速度的差距导致cpu浪费时间等待访存获取数据,两种基本的方法可以从物理上进行一定的改进:增大缓存;提高时钟频率。但是,缓存成本较大,在物理上也有一定限制;时频的提高,可以在相同时间完成更多的操作,但随之也带来问题:程序间的相关性和延迟的影响随之增加。2)于是,人们想到,不只有突破物理上的限制来提高性能,在空间和时间上并行,增加吞吐量也是一种途径。因为虽然
33、用户最关心的是交互性程序的响应时间,管理者关心单位时间的任务完成量;但最终都是在最短时间内完成最多任务。 既然原来的瓶颈在于访问时处理器需阻塞等待而浪费硬件资源,那么可以让cpu在这个延迟时间内干其它的事,譬如从其它的指令流读取指令运行已经准备就绪的进程或线程。操作系统对多核处理器的支持方法 Yanshan University8.3.2 多核多线程与传统程序运行的不同带来的问题 1) 传统系统运行的程序只需很少的改变便可以运行在cmt系统中,但不可避免的某些线程会影响到另外线程的执行,这该如何处理?2) 负载平衡与热缓存有时矛盾,如何处理?比如为了减少资源的争用,将争用少的放到一个核,导致这
34、个核负载大。3) 进程与其包含的线程的调度分别在什么时候,两者有何关系?4) 多核的调度与核内多线程的调度分别配合?先将任务调到核,再在核内调度个线程还是怎样?5) 如果任务很少,是只让部分cpu工作,避免调度分发带来的复杂冗余的工作,还是依旧负载平衡?操作系统对多核处理器的支持方法 Yanshan University8.3 3. solaris对多核的支持 1)solaris中线程的体系结构 a. 分为用户级和内核级;用户级也可以在核内或核外运行。但是核外需要上下文切换开销很大;核内更有利于并发使用cpu,同时成为多个用户线程的调度。 b. 每个进程需要一个线程作为其指令执行体,线程分配到
35、各个cpu运行。而每个用户级线程必须绑定到一个LWP,LWP再将它关联到一个内核线程。LWP并不一定是进程创建时就建立,而是在虚要使用时再被请求创建。这个用户级线程可以作为调度的执行实体,有独立的优先级调度,这与内核的优先级调度是分离的,并且对内核不可见。 LWP存在于内核里,记录着线程的状态,但内核级线程并不一定有LWP,如服务线程。 c. 用户级线程有线程库中的每个进程的调度线程调度管理。每个线程存在于他所属的进程链表,也存在于内核级线程链表。内核级线程决定线程运行在哪个cpu上,自己则被调度什么时候执行。操作系统对多核处理器的支持方法 Yanshan University2)solari
36、s采用调度等级(classes)定义 内核调度和执行进程的规则,总共有6个classes,可以在同一核中调度,可以自适应。每个classes有一个列表,用来寻找线程。3)负载平衡(load balancing) 为了让各个核之间少无用的调度,每个核有自己的调度队列,其线程可以重赋值时间片大小,用完后放回队列。内核可以抢占其它时间片,可以同时多个调度类,但是每个决定要调度的地方必须有一个间接函数调用调度类相关代码。有一种内核抽象,代表逻辑cpi,共享物理资源如cache、sockets接口。4)热缓存机制(充分利用缓存里已经存在的数据) 可公用线程的线程放在同一逻辑cpu;可公用缓存的线程也放在
37、同一逻辑cpu。操作系统对多核处理器的支持方法 Yanshan University8.3 4. Linux2.6及以上的调度 对SMP的支持,负载平衡:创建任务时,被放到一个给定的逻辑cpu运行对列,但并不知道这个任务运行的时间长短,因此开始的分配可能不理想,于是任务可以重新分发。于是将负载较重的cpu中的可执行进程或线程重新调度到负载较轻的cpu,即使现负载平衡。 事实上,每隔200ms,处理器就会检查cpu的负载是否均衡,不是,则重分配一次。但是,显然,这样就带来了另外一个负面影响,即新任务对cpu冷缓存,需重新加载数据。 热缓存,每个cpu一个运行队列,各个任务与cpu密切相关,可以更好的利用热缓存。即任务在cpu上运行所需相关的数据都被放到这个cpu的缓存,可直接读取;而缓存是本地的存储器(片上),进而提高了访存速度,减少延迟。