8.6 小结

采用多个CPU可以把计算机系统建造得更快更可靠。CPU的四种组织形式是多处理器、多计算机、虚拟机和分布式系统。其中的每一种都有其自己的特性和问题。

一个多处理器包括两个或多个CPU,它们共享一个公共的RAM。这些CPU可以通过总线、交叉开关或一个多级交换网络互连起来。各种操作系统的配置都是可能的,包括给每个CPU配一个各自的操作系统、配置一个主操作系统而其他是从属的操作系统或者是一个对称多处理器,在每个CPU上都可运行的操作系统的一个副本。在后一种情形下,需要用锁提供同步。当没有可用的锁时,一个CPU会空转或者进行上下文切换。各种调度算法都是可能的,包括分时、空间分割以及群调度。

多计算机也有两个或更多的CPU,但是这些CPU有自己的私有存储器。它们没有任何公共的RAM,所以全部的通信通过消息传递完成。在有些情形下,网络接口卡有自己的CPU,此时在主CPU和接口板上的CPU之间的通信必须仔细地组织,以避免竞争条件的出现。在多计算机中的用户级通信常常使用远程过程调用,但也可以使用分布式共享存储器。这里进程的负载平衡是一个问题,有多种算法用以解决该问题,包括发送者-驱动算法、接收者-驱动算法以及竞标算法等。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

虚拟机允许一个或多个实际的CPU提供比现有CPU数量更多的假象。通过这种方式,可以同时在同一个硬件上运行多种操作系统,或者同一个操作系统的不同(不兼容)的版本。当结合了多核的设计,每台计算机就变成了一个潜在的大规模多计算机。

分布式系统是一个松散耦合的系统,其中每个节点是一台完整的计算机,配有全部的外部设备以及自己的操作系统。这些系统常常分布在较大的地理区域内。在操作系统上通常设计有中间件,从而提供一个统一的层次以方便与应用程序的交互。中间件的类型包括基于文档、基于文件、基于对象以及基于协调的中间件。有关的一些例子有World Wide Web、CORBA、Linda以及Jini。