1.多CPU操作系统引入的原因
要改善计算机系统的性能,除提高计算机元器件的速度外,另一条途径是改进计算机系统的体系结构。最主要的方法是通过增加系统CPU的数量来实现任务的并行处理。
早期的计算机系统基本上都是单CPU系统。20世纪70年代以后,打破了单CPU体系结构垄断的局面,出现了多CPU体系结构。近年来,推出的大、中、小型计算机,大多数采用了多CPU体系结构,甚至在高档微型计算机中也出现了这种趋势。引入多CPU系统(MPS)的原因主要有以下三点。
(1)增加系统的吞吐量。随着系统中CPU数量的增加,可以使系统在较短的时间内完成更多的工作。
(2)节省投资。在达到相同处理能力的条件下,采用具有n个CPU的系统要比使用n台独立的计算机更节省费用。这是因为这n个CPU是安装在同一个机箱内且使用同一个电源,并共享内存、打印机等资源。
(3)提高系统的可靠性。多CPU系统通常具有系统重构功能。当系统中的某个CPU发生故障时,系统能立即将在该CPU处理的任务迁移到其他一个或多个CPU上继续处理,整个系统仍然能够正常运行,只是系统性能有所降低。
可以从不同角度对多CPU系统分类。根据CPU之间耦合的紧密程度,可以将多CPU系统划分为紧密耦合多CPU系统与松散耦合多CPU系统。根据多CPU系统中CPU的功能是否相同,可以将多CPU系统划分为同构对称型多CPU系统(SMPS)与异构非对称型多CPU系统(AMPS)。
2.多CPU操作系统的原理及特点
目前,多CPU系统采用了两种芯片结构:多处理器和多核。多处理器指一个体系结构上放置多个CPU,而多核则指在同一块芯片(CPU)上放置多个核(Core),即执行单元。多核和多CPU的区别是多核结构更加紧凑,成本在同等执行单元数量的情况下更少,功耗更低。
虽然在一台计算机里安装多个CPU能够提升计算机的性能,但基于多种原因,CPU的执行单元并没有得到充分使用。如果CPU不能正常读取数据(计算机始终存在的总线/内存瓶颈),其执行单元的利用率就会明显下降。这是因为目前大多数执行线程缺乏ILP(lnstruction-Level Parallelism,指令级并行,即多条指令同时执行)支持,这些都造成了目前CPU的性能没有得到全部发挥。因此,英特尔公司(Intel Corporation)采用了超线程技术让一个CPU同时执行多重线程。超线程技术是在一个CPU上同时执行多个程序来共享这个CPU内的资源,它可以在同一时间内让用户程序使用芯片的不同部分,从而提高CPU的使用效率。
例如,当一台计算机里有两个CPU时,虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样每个CPU都有独立的资源。当两个线程都同时需要该CPU中的某一资源时,其中一个就要暂时停止并让出资源,直到另一个线程使用完该资源后才能继续。因此,超线程的性能并不等于两个CPU的性能,解决这一问题的办法就是采用多核结构。多核结构就是在一个CPU中布置两个执行核,即两套执行单元,而其他部分则两个核共享。这样,由于布置了多个核其指令级并行才是真正的并行,而不是超线程结构的半并行。(www.xing528.com)
此外,多个CPU是不可能同时启动的,必须有先后次序之分,因为不能使多个CPU同时执行BIOS(基本输入输出系统)里面的指令(BIOS不支持多线程),所以除一个CPU外,必须让其他CPU处于中断屏蔽状态,即CPU的启动是有次序的。因此在实际处理中有一个CPU被定为启动CPU,而其他CPU则作为应用CPU。
既然一个系统中有多个CPU,则这些CPU之间总需要进行某种通信以实现任务协调。这种协调既可能是CPU本身的需要,也可能是运行在它们之上的进程和线程之间的需要。在多CPU之间通信自然也可以发送信号,不过这个信号不再是内存中的一个对象(变量),因为如果这样则无法及时引起另一个CPU的注意,而要引起其注意就要采用中断的方法(这与单CPU中的进程通信完全不同)。对称多CPU系统是通过高级可编程中断控制器(APIC)来协调这些CPU之间中断的机制并实现多CPU通信的。
在单CPU环境下,一次只能有一个程序正在执行;而在多CPU环境下,由于多个执行核或CPU的存在,多个程序可以真正地同时执行。那么,如何保证程序执行的正确性呢?解决的方法仍然像单CPU系统那样,对涉及临界资源的程序必须互斥执行,即保证该段程序的执行是原子操作。不过这里的原子操作与单CPU环境下的原子操作有所不同,它必须保证跨越所有CPU的原子性,即一个CPU执行时,不允许另一个CPU执行此段程序(相当于单CPU环境下的临界区)。
多CPU环境下与单CPU环境下的最大不同是可以有多个线程或进程真正的同时执行。对于在多CPU环境下的进程调度来说,就是使每个CPU有自己的就绪队列,该队列里面又可以按照不同的优先级分为多个子队列,就如同单CPU环境下的就绪队列一样。多CPU环境下,一个线程或进程可以排在任何一个CPU的就绪队列上,并且只允许排在其中一个CPU的就绪队列上,而不允许排在两个以上CPU的就绪队列上。对不同优先级线程或进程来说,调度策略也是优先级高的线程或进程优先调度,而在就绪队列中同一优先级子队列里,通常采用时间片轮转调度。
3.多CPU操作系统的类型
目前,多CPU操作系统有以下三种类型。
(1)主从式。主从式操作系统安装在一台拥有主CPU的主机上,用来管理整个系统的资源,并分配任务给从CPU。
(2)独立监督式。与主从式操作系统不同,独立监督式操作系统中,每个CPU均有各自的管理程序(核心)。
(3)浮动监督式。该方式中有一台CPU作为执行操作系统全面管理功能的“主CPU”,但根据需要,“主CPU”是可浮动的,即可以从一台CPU切换到另一台CPU。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。