一.模型化
硬件编程模型:计算机硬件的编程能力可以用一个简单的编程模型来表达,这个模型包括一下内容:(1)用机器指令来表达处理过程;(2)处理的对象是二进制数和不同的存储器;(3)处理是对二进制数进行算术和逻辑运算的操作和在不同存储器之间移动的操作。
软件编程模型:高级语言定义了一个通过高级指令操作高级数据结构的抽象计算机。高级指令构成了高级语言中语句和表达式的规范,是关于中央处理器的抽象;高级数据结构构成了高级语言中数据类型系统和变量规范,是关于主存的抽象。语句序列和数据通过编译器程序分别映射到计算机主存中的机器指令序列和数据区域上,这样使得高级编程语言采用了不同的名称概念,但都毫无例外的遵循了上述原理。
通过对比硬件编程模型和软件编程模型,借助编译器和操作系统来让二者和谐统一,最终以0和1的形式来刻画现实世界的丰富多彩。编译器和操作系统的抽象化思维方式,硬件/软件模型的最终归一化的方式,不能不感叹思维是最强大的力量。
二.操作系统
操作系统的需求来源:(1)方便用户对计算机的统一管理和操作;(2)为程序员提供对计算机硬件的简单,一致的编程能力;(3)优化计算机资源的使用和管理。这三个方面催生了操作系统设计的三大思想:(1)透明化-对用户隐藏处理细节的过程(2)抽象化-将低层操作组织为高级操作的过程(3)虚拟化-将计算机的实际资源组织为虚拟资源的过程。
进程以及进程的通信:通信的本质是交换信息,进程之间交换信息存在两种不同的方式:(1)共享内存-进程之间通过读写的方式完成信息的交换。(2)基于消息传递-一个进程发送消息,另一个进程接受消息。
共享内存方式的缺点:(1)只能为本机器的进程提供通信服务;(2)依赖与特定的操作系统,因此是不兼容的。
基于消息方式的优点:(1)适合于分布式环境;(2)更好的容错性;(3)客户管理能力;(4)更容易维护
三.分布式系统
分布式系统,分布式操作系统,网络操作系统的简单比较
比较项目 | 分布式操作系统 | 网络操作系统 | 分布式系统 |
透明的程度 | 高 | 低 | 高 |
每个结点的操作系统 | 是 | 否 | 否 |
通信基础 | 消息 | 文件(WWW的文档模型) | 根据模型 |
资源管理 | 全局的,分布的 | 每个结点 | 每个结点 |
伸缩性 | 一般 | 有 | 变化 |
开放性 | 封闭 | 开发 | 开发 |
分布式系统故障分析
故障类型 | 影响 |
崩溃故障 | 进程 |
遗漏故障 发送遗漏 接受遗漏 通道遗漏 |
进程 进程 通道 |
时序故障 时钟故障 进程性能故障 通道性能故障 |
进程 进程 通道 |
随机故障 | 进程/通道 |