0
由于多核心、多处理器也多计算机日渐成为主流计算模式,分布式编程对开发人员的技术素养提出新的挑战和新的要求,无论对系统开发还是对于应用程序开发都是一样。一般来说,我们可以这样理解,共享内存的多个处理单元就是多核心,每个有本地内存的多个独立处理器共享总线的就是多处理器,没有共享资源通过网络连接的是多计算机。因为在单核单处理器下面已经发展了并行编程技术,比如处理不同进程之间或者同一进程的多个线程之间的协同,所以分布式编程在不久的将来会成为从业人员的标准技能,以后可能没有不是分布式的编程了。
首先必须明了进程和线程的区别才好理解分布式编程的概念。这是两个最常用而又最模糊的概念。进程和线程都是程序,进程是计算机操作完成某种任务的最基本的资源分配单位,线程就不能独立分配资源,而是在进程分配到的资源中获得自己的资源。从完成任务的观点看,有一个例子很形象,一个工程师按照菜谱做生日蛋糕,这就相当于进程,现和面、加水、加糖、加鸡蛋、搅拌,然后放进烤箱里,定时间,打开开关等等;做着做着工程师的儿子把玩儿刀子把手给切破流血了,工程师放下手里在做的活儿,给儿子包扎伤口,这相当于线程;把儿子安排停当以后又重新开始做生日蛋糕,这个时候又有人敲门,这相当于另外一个线程,答应了来访者以后工程师又回来完成做生日蛋糕的任务,继续执行原来的进程。有的书上就把进程叫做任务。
分布式编程包含两类重要技术:一是用于给多核心和多处理器编程的并行处理;二是给多计算机系统编程的基于消息传递界面的技术。而且这两类技术是重叠的,因为分布式和并行处理在语义学上几乎是相同的,两个术语在强调不同的方面,分布式强调空间分离的特征,而并行强调时间上同时并发的性质。关于分布式和并行两个概念的相同和区别我在前面有了一个解释。不同的平台上,实现分布式编程的战略(Strategy)不一样,但是都要解决进程间、准确地说是解决线程间通信问题,这一点则是共同的。因为不同的进程在操作同一个对象的时候都必须要处理好互相干涉和内存不一致的问题;而对于多计算机系统,另外提出了处理与网络连接和数据传输协议相关的要求,多核心和多处理器系统就不存在这样的问题。例如,Python的战略是使用“消息传递界面Message Passing Interface”就是MPI、集群技术以及网格技术来处理多计算机系统,而用许多Python Parallel类库如pp、pprocess等等来处理对称多处理(SMP)并行计算问题。Java实现分布式编程的技术叫RMI(Remote Method Invocation),好像应该翻译成“远程方法调用”,我记得C++里是叫远程方法调用的,就是Remote Method Call。相应的API是java.rmi.Remote,包含在他们说的“分布式对象应用Distributed Object Application”这个更一般的概念的框架下面。我这里有一个关于分布式编程的参考书目,想必与题目相关的重要经典著作都搜罗在这里了,可惜我一本也没有看。我想直接从Python或者Java看它们是怎样具体处理的,这样做更容易入门,掌握技术,了解理论概念。Python的好处是开宗明义旗帜鲜明,有并行处理和分布式编程的Wiki页和各种专门技术的社区和讨论组,但是许多没有完善的文档;Java没有亮出分布式的旗帜,但是他们的文档帮助还是最好的,更容易上手。
1、分布式操作系统原理与实践Distributed Operating Systems Concepts and Practice
2、多线程、并行与分布式程序设计基础(影印版)Foundations of Multithreaded, Parallel, and Distributed Programming
3、分布式控制系统(DCS)设计与应用实例
4、分布式系统:原理与范例(英文版)Distributed Systems:Principles and Paradigms
5、分布式数据库系统原理(第2版)(影印版)Principles of Distributed Database Systems(Second Edition)
6、分布式系统概念与设计(英文影印版)(第4版)Distributed Systems:Concepts and Design,Fourth Edition
7、分布式系统概念与设计(第3版)Distributed Systems:Concepts and Design(Third Edition)
8、分布式计算原理与应用(影印版)Distributed Computing:Pinciples and Applications
9、分布式算法Distributed Algorithms
10、分布式计算的安全原理【Security In Distributed Computing】
11、分布式算法导论(第二版)(英文版)
12、操作系统——并发与分布式软件设计(英文版)Operating Systems Concurrent and Distributed Software Design
13、分布式系统原理与范型Distributed Systems:Principles and Paradigms
14、分布式计算原理与应用【Distributed Computing: Principles and Applications】
15、分布式对象技术
16、分布式算法导论(原书第2版)Introduction to Distributed Algorithms,Second Edition
17、操作系统——并发与分布式软件设计Operating Systems:Concurrent and Distributed Software Design
18、并行计算综论Sourcebook of parallel Computing
19、分布式系统概念与设计(英文版·第3版)Distributed Systems:Concepts and Design,Third Edition
徒步者:hxianping@gmail.com
反病毒中心| 以下服务由瑞星友情提供 |
| 瑞星2008版下载(全面免费) |
| 卡卡助手下载(免费杀流氓软件工具) |
| 专杀工具下载(50余种病毒专杀下载) |