


为了追求更高的算力、解决散热等目的,于是有了一种处理方法是采用高度并行计算机。共享存储器多处理机,便是其中一种模型,多个CPU全部共享访问一个公用的RAM。(随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。)与之相对的就是计算机之间不共享主存及时钟,通过局域网或广域网进行通信的分布式系统。

多处理机操作系统有三种模型:
1、每个CPU都有自己的操作系统(独立监督式):
组织一个多处理机操作系统的可能的最简单的方法是,静态地把存储器划分成和CPU一样多的各个部分,为每个CPU提供其素有存储器以及操作系统的各自私有副本。
这样的明显优点是,允许所有CPU共享操作系统的代码,而且只需要提供数据的私有副本。让n个CPU实际上以n个独立计算机的形式运行。
这种模型的一个明显的优点就是允许所有的CPU共享操作系统的代码,而且只需要提供数据的私有副本。

但是,这个模型的设计也是有缺陷的:
(1)在一个进程进行系统调用时,该系统调用是在本机的CPU上被捕获的,并使用操作系统表中的数据结构;所以,每个操作系统都有自己的表,那么它也有自己的进程集合,通过自身调度这些进程。因此,如果一个用户登录到CPU1,那么他的所有进程都在CPU1上运行,就可能会出现在CPU2有负载运行而CPU1空载的情形。
(2)没有共享物理页面。因此在CPU2不断地进行页面调度时CPU1却有多余的页面。因为内存分配是固定的,所以CPU2无法向CPU1借用页面。
(3)最坏的情形:如果操作系统维护近期使用过的磁盘块的缓冲区高速缓存,每个操作系统都独自进行这种维护工作,因此,可能出现某一修改过的磁盘块同时存在于多个缓冲区高速缓存的情况,这将导致不一致性的结果。而避免这一问题的唯一途径:取消缓冲区高速缓存,又会显著降低性能。
正是因为这些原因,这个模型很少被使用。
2、主从多处理机:
操作系统的一个副本及其数据表都在CPU1上,而不是在所有CPU上。为了在该CPU1上进行处理,所有的系统调用都重定向到CPU上。如果有剩余的CPU时间,还可以在CPU1上运行用户进程。

主从模型解决了第一种模型的大部分问题,例如,它有单一的数据结构,避免了一个CPU空闲而另一个过载的情形。
不过,这个模型也有着自己的问题:如果有很多CPU,那么主CPU会成为瓶颈。因此这个模型适用于小型多处理机。
3、对称多处理机:
对称处理机(Symmetric MultiProcessor,SMP)由多个中央处理机构成的计算机,它们共享主存并且每个处理机都可以响应中断,具有完全的对称结构。

这个模型动态地平衡进程和存储器,因为它只有一套操作系统数据表。他还消除了主CPU的瓶颈(因为没有主CPU)。
同样的,这个模型也有自己的问题,特别是,当两个或更多的CPU同时运行操作系统时,就会出现灾难。
当一个CPU要运行操作系统时,它必须首先获得互斥信号量。如果互斥信号量被锁住。就得等待。按照这种方式,任何CPU都可以运行操作系统,但任意时刻只有一个CPU可运行操作系统。这样就需要把操作系统分割成互不影响但临界区。每个临界区由其互斥信号量保护,所以一次只能有一个CPU运行它。
由于这一事实,可以将操作系统分割成不同的互不影响的临界区。每个临界区由其互斥信号量保护,所以一次只有一个CPU可以执行它。采用这种方式,可以实现更多的并行操作。而某些表格,如进程表,可能恰巧被多个临界区使用。大多数但现代多处理机都采用这种安排。更进一步,要尽量避免死锁。