SMP:一种通过复用处理器提高程序执行并行性的方式。
根据SMP,计算机系统可以分为以下四类:
单指令单数据流(SISD):一个单处理器执行一个单指令流,对保存在一个存储器中的数据进程进行操作。
单指令多数据流(SIMD):一个机器指令控制多个处理部件步伐一致的同时执行。每个处理部件都有一个相关的数据处理空间,因此,每条指令由不同的处理器在不同 的数据集合上执行。
多指令单数据流(MISD):一系列数据被传送到一组处理器上,每个处理器执行不同的指令序列。
多指令多数据流(MIMD):一组处理器同时在不同的数据集上执行不同的指令序列。
在MIMD结构中,处理器是通用的,它们必须能够处理执行相应的数据转换所需的所有指令。
MIMD可以根据处理器的通信进一步细化。如果每个处理器都有一个专用的存储器,则每个处理部件都是一个独立的计算机。计算机间的通信或者借助于固定的路径,或者借助于某些网络设施,这类系统称为集群系统。如果处理器共享一个公用的存储器,每个处理器都访问保存在共享存储器中的程序和数据,处理器之间通过这个存储器相互通信,则这类系统称为共享存储器多处理机系统。
共享存储器多处理机系统的一个常用分类标准是基于"如何把进程分配给处理器"。最基本的两种手段是主/从结构和对称结构。
在主/从结构中,操作系统的内核总是运行在某个特定的处理器上,其他处理器用于执行用户程序和操作系统的使用程序。主处理器负责调度进程或线程,如果一个处于运行的进程或线程需要使用系统的服务(如一次I/O调用),则它必须给主处理器发送请求,并等待服务的处理。这种方式非常简单,一个处理器控制了所有存储器和I/O资源,因此可以简化冲突的解决方案。但是这种方式也有明显的缺点:
1. 主处理器的失败将导致整个系统的失败;
2. 由于主处理器必须负责所有的进程调度和管理,因此可能成为性能瓶颈;
在对称多处理系统中,内核可以在任何处理器上执行,并且每个处理器可以从可用的进程或线程池中进行各自的调度工作。内核也可以由多进程或多线程构成,允许部分内核并行执行。SMP方法增加了操作系统的复杂性,它必须确保两个处理器不会选择同一个进程,并且要确保队列不会丢失,因此需要解决同步的问题。
SMP系统的组织结构
SMP系统中有多个处理器,每一个都含有它自己的控制单元,算术逻辑单元和寄存器;每个处理器都可以通过某种互联机制访问一个共享的主存和I/O设备,通常是系统总线。处理器之间还可以通过存储器中的共享地址空间中的消息和状态信息相互通信。存储器通常被组织为可以允许同时有多个对存储器不同独立部分的访问。现代计算机中,处理器通常有一级专用的高速缓存,由于每个高速缓存含有主存中的一部分映像,如果某个处理器修改了其中的一个字,那么其他高速缓存中的这个字将变得无效,这就带来了高速缓存的一致性问题,这个问题的解决通常是通过硬件的方式。
多处理器操作系统的设计
并发进程或线程:为了允许多个处理器同时执行相同的内核代码,内核例程必须是可重入的。多处理器执行内核的相同部分和不同部分时,必须正确的管理内核表和管理结构,以避免死锁或非法操作;
调度:调度可以由任何处理器执行,因此必须避免冲突。如果使用内核级多线程,则可能出现同一时刻,多个处理器同时从同一个进程中调度多个线程的情况;
同步:因此存在多个进程都可能访问共享地址空间和共享I/O资源的情况,因此需要提供同步机制。同步是指实施互斥和事件排序的机制。锁是一个通用的同步机制;
存储器管理:多处理器系统为了提高性能,尽可能利用硬件的并行性,如多端口存储器,还必须协调不同处理器上的分页机制,以确保多个处理器共享页或段时页面的一致性问题,以及页替换策略;
可靠性和容错:当一个处理器处理失败时,操作系统应该提供功能衰减能力,重新组织管理表;