多核时代:并行程序设计探讨(2)——并行实现技术

并行程序设计探讨(2)——并行实现技术

通过“并行程序设计探讨(1)”的介绍,相信大家都已经对并行系统相关的概念有了初步的了解。不过看起来挺吓人的,一堆的术语和概念,想起来头就有点大!!

幸运的是真正需要进行并行程序设计的系统其实不多,我们来看看:

SISD:本质上决定了不可能是并行的;

SIMD:专有系统,相信绝大部分人都没有接触过;

MISD:没有这样的系统;

MIMD:本质上就是为了支持并行的。

因此,在处理并行程序设计的时候,我们其实只要考虑MIMD这类系统就OK了!谢天谢地Orz!!:)

 

不过别高兴的太早,MIMD也有很多啊,怎么办呢?MIMD分为共享内存和消息驱动(其实就是分布式内存)两种,我们还是从分类上来稍加分析,看看如何处理。

共享内存:所有CPU共内存,所有CPU由一个操作系统控制的,例如WindowsLinux/UNIX,目前流行的多核、多CPU机器都是属于这种;

消息驱动:其实就是分布式内存,CPU由不同的操作系统控制,不同的CPU之间通过网络通信。例如网格Grid是通过因特网通信、集群Cluster是通过局域网通信、MPP是通过专有的高速网络通信。

通过上面的对比,聪明的读者估计很快就想到了这两种系统并行程序实现方式的差异:

共享内存:通过操作系统的多进程多线程来完成并行任务,通过进程间通信来完成协作;

消息驱动:通过多台机器来完成并行任务,通过消息来完成协作。(MPP物理上看是一台机器,逻辑上是多台机器)

当然,由于消息驱动系统中每个处理单元都是一台独立的机器,对这台独立的机器本身当然也可以通过共享内存来实现并行处理。

 

嗯,非常不错,经过我们的层层分析和筛选,原来各种各样的看起来很吓人的并行系统,最终被我们归纳总结出两种并行实现技术:多进程多线程、多机协作

套用侯捷大师的一句话给自己贴点金,正所谓:深入浅出!!

==========================未完待续,后面介绍Window和Linux的多进程多线程===============================

你可能感兴趣的:(多线程,windows,linux,网络,任务,网格)