第七章分布式共享内存
共享内存函数(shmget、shmat、shmdt、shmctl)及其范例 - guoping16的专栏 - 博客频道 - CSDN

System V 进程间通讯(IPC、ftok (1) ) 进程的堆栈空间 字符串和内存操作函数 格式化I/O函数 C语言预处理 C语言结构体 (1) (1) (0) (0) (0)
推荐文章 * 阿里实习生招聘笔试题目 * Android 中Touch(触屏)事件 传递机制 * Android UI:看看Google官方自 定义带旋转动画的ImageView * List、Set和Map区别 * android SQLite数据库用法图 文详解(附源码) * 【C解析之七】文件进阶
shm_perm结构的uid和cuid成员被设置成当前进程的有效用户ID,gid和cuid成员被 设置成当前进程的有效组ID。 2. shmat函数原型 shmat(把共享内存区对象映射到调用进程的地址空间) 所需 #include <sys/types.h> 头文 #include <sys/shm.h> 件 函数 连接共享内存标识符为shmid的共享内存,连接成功后把共享内存区对象映射到调 说明 用进程的地址空间,随后可像本地空间一样访问 *shmat(int shmid, const void *shmaddr, int shmflg)
/guoping16/article/details/6584058
1/10
2014年4月2日
评论排行
共享内存函数(shmget、shmat、shmdt、shmctl)及其范例 - guoping16的专栏 - 博客频道 -
函数 成功:返回共享内存的标识符 返回 消息队列函数(msgget、msgctl (4) 、msgsnd、 msgrcv)及其范例 值 出错:-1,错误原因存于error中
最新评论 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例 daemon_msg: 很有帮助!谢谢 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例 mysee1989: 挺详细的。谢谢 进程的堆栈空间 wangpeng2011314: 那么 windows 下的原理一致吗 ??? 会话、进程组与僵死进程 guoping16: 1.当登录终端时,就 产生一个会话,也就产生了一个 可操作的界面。2.proc3 | proc4 | p... 会话、进程组与僵死进程 mmwren: 你好,有个问题请教 一下,当登录终端时,shell进程 为首进程,也是前台进程吗?在 执行命令 proc3... System V 进程间通讯(IPC、ftok) luguangxu68: 很不错啊! 谢谢 了 字符串和内存操作函数 asdk77: 总结的真好!收下了! 标准I/O文件编程 luguangxu68: 嗨,哥们,你很 棒!!!加油
第7章__多处理机

共五十四页
3、交叉开关形式(空间分配) 单总线互连结构最简单,但争用总线最严重。
交叉开关形式则不同于单总线。它用纵横开关阵 列将横向的处理机P及I/O通道与纵向(zònɡ 的存 xiànɡ) 储器模块M连接起来。如188页图7.7所示。
共五十四页
结点1
结点1
P M I/O
…
Nபைடு நூலகம் I/O桥
P M I/O NI I/O桥
结点i P M I/O
互连网络
NI--网络 接口
NI I/O桥
紧耦合多处理机系统
松耦合系统结点结构
互连网络(wǎngluò):实现结点(非PE与PSM)间互连。 控制—分布式控制(消息传递机制)。
结点结构:是完整的处理机系统;
互连网络控制—分布式控制(消息传递机制)。 思考1:为什么每个PE可自带小容量局部存储器? 思考2:为什么每个PE可自带一个Cache? 系统规模:PE数量不能很多。为什么?
通信与同步:通过共享存储器地址(dìzhǐ)进行通信; 通过共享地址或PPIN进行同步。
共五十四页
1、松耦合多处理机 松耦合多处理机中,每台处理机都有一个容
段,其书写的顺序反映了该程序正常执行的顺序。为了便于分
可见,有了好的并行编译算法,算术表达式 的预先变形也可以是不必要的。
共五十四页
7.3.2 程序并行性的分析
任务间能否并行,除了算法外,很大程度还取决于程序的 结构。程序中各类数据相关,是限制程序并行的重要因素(yīn sù)。数据相关既可存在于指令之间,也可存在于程序段之间。
假定一个程序包含P1、P2、… Pi、… Pj、… Pn等n个程序
基于Java平台共享内存的实现与应用

二、共享内存在jv中的实现 aa
在jk d 中提供的类M pe ye u e为我们实现共享内存提供了 apdB tB f r
较好的方法 。该缓冲区实际上是一个磁盘文件的内存映像。二者的 变化将保持 同步 ,即内存数据发生变化会立刻反映到磁盘文件中, 这样会有效的保证共享 内存的实现。将共享内存和磁盘文件建立联 系 的是 文件通 道类 :Fl h ne。该 类 的加 入是 J K 了统 一对 外 i C anl e D 为
用 系统 中,存在 着大量 的分布式共享对 象,很 多时候 需要查询这些对象的状 态,如果采用 网络通信的方式 ,会增加应用的额外负担 ;如果 采 用 共 享 内存 的 方 式 ,则 可 以 直 接 通过 共 享 内存 查看 对 象的 状 态数 据 和统 计 数 据 ,减 少 了一 些 不 必 要 的麻 烦 。 关 键 词 :共 享 内存 ; v ;应 用 aa 中图 分 类 号 :T 3 P1 文 献 标 识 码 :A 文章 编 号 :1 0 — 7 7 ( 0 0)0 — 1 2 O 0865 2 1 50 8 一 1
一
、
共享 内存对应 用开发的意义
了 同一 内存数 据 。这些 应用 对 于文件 可 以具有 同等存 取权 限 ,一个
ICIt Poes o u i t n 本 包 括共 享 内存 、信 号灯 操 应用 对数 据 的刷新会 更 新 到多个 应用 中。为 了防止 多个应用 同时 对 P ( e rcs C mm nc i ) nr ao 基
部设备 的访 问方 法 ,并 且加 强 了多线 程对 同一文 件进行 存 取的安 全
p bc ol n t t i0 u l o a a Wre ib e S r t ((oe =0 f/ 志 为0 im d = ) ,标 f 。则 表示 可写
C++网络编程学习笔记(ACE)

前言面向对象中间件体系结构a)主机基础设施中间件:封装socket,线程等不同主机的实现,形成统一的接口。
如java,ACEb)分布式中间件:连接管理,内存管理,整编,解编,端点和请求的多路分离,同步,多线程等,使程序员象开发独立应用程序一样开发分布式应用程序。
分布式中间件的核心是ORB(Object Requests Broker对象请求代理),如:COM+,JAVA RMI,CORBA 1通信设计空间1.1面向连接协议需要做出如下设计:●数据成帧策略●连接多路复用策略1.链接多路复用:多个线程复用同一个TCP链接2.非多路复用:多个进程使用多个链接。
系统开销大1.2同步和异步消息交换1.3消息传递与共享内存消息传递:消息中间件共享内存:●本地共享内存:shmget(),shmat(). 内存映射文件●分布式共享内存:虚拟内存,是本地共享内存的一种抽象。
2SOCKET API 概述3ACE Socket wrapper façade3.1ACE_Addr运算符== , !=addr_type, addr_size3.2ACE_INET_Add3.3ACE_IPC_SAP为其他ACE对象提供了基本的“I/O”句柄操作能力enable()disable()get_handle()set_handle()3.4ACE_SOCK继承自ACE_IPC_SAP,get _local_addr()set_local_addr()open()close()get_remote_addr()set_option()get_option()3.5ACE_SOCK_Connecter主动连接模式,是一个工厂类。
发起一个连接,并在连接成功后初始化一个ACE_SOCK_Stream对象。
可以通过“阻塞”“非阻塞”“定时”方式发起。
以下是非阻塞模式以下是非阻塞模式3.6ACE_SOCK_Stream数据传输角色的实现。
操作系统课件第七章

06
文件系统与磁盘管理
文件系统概念及功能
文件系统定义
文件系统是操作系统中负责管理和存储文件 信息的软件机构,它提供了一种在磁盘等存 储介质上组织、管理和访问文件的机制。
文件系统功能
包括文件的创建、删除、读写、修改、重命 名等操作,以及文件的组织和存储方式,如
目录结构、文件属性等。
文件结构和存取方法
• 消息传递:消息传递是一种面向消息的通信方式,进程通过发送和接收消息来 进行通信。它的优点是灵活性高,可以适用于任意两个进程之间的通信;缺点 是通信过程中需要额外的数据拷贝和同步操作。
• 共享内存:共享内存是一种高效的进程间通信方式,多个进程可以通过映射到 同一块内存区域来进行数据交换。它的优点是通信效率高,缺点是需要解决同 步和互斥问题,以避免出现数据不一致的情况。
文件的物理结构(如连续分配、链接分配和索引分配等)的理解和实现、文件 目录的组织和管理方式的选择和设计、文件共享与保护机制的实现和应用。
02
进程与线程
进程概念及特性
进程定义
进程是操作系统中进行资源分配和调度的基本单位,它是程序的执行过程,具有动态性、并发性、独立性、异步 性和结构特征。
进程特性
动态性(进程是程序的一次执行过程,具有生命周期);并发性(多个进程实体同存于内存中,能在一段时间内 同时运行);独立性(进程是系统进行资源分配和调度的独立单位);异步性(进程按各自独立的、不可预知的 速度向前推进);结构特征(进程由程序、数据和进程控制块三部分组成)。
页式、段式和段页式存储管理方式
页式存储管理方式
段式存储管理方式
页式存储管理是将一个进程的逻辑地 址空间划分为若干个大小相等的片, 称为页面或页。相应地,将物理内存 空间也划分为与页面大小相等的块, 称为物理块或页框。在为进程分配内 存时,以块为单位将进程中的若干个 页分别装入到多个可以不相邻接的物 理块中。
第六章分布式共享存储器

第六章分布式共享存储器在第一章中,我们看到存在着多处理机和多计算机这样两种多处理机系统。
在多处理机系统中,两个或更多的CPU共享一个存储器。
任何处理机上的任何进程只需将数据移入移出就可读写共享存储器中的数据。
而在多计算机系统中,每个CPU有各自的存储器,并不共享。
以农业为例,一个多处理机可以看作这样一个系统:一群猪(进程)用一个食槽(共享存储器)进食。
而多计算机则是每只猪拥有自己的食槽。
以教育为例,多处理机就是教室前面的一块黑板,所有学生都可以看到,而多计算机则是每个学生看自己的笔记本。
尽管这种区别看起来微不足道,其影响却是深远的。
其结果涉及到软件和硬件两个方面。
首先看看对硬件的影响。
设计一种使多个处理机同时使用同一存储器的机器是非常困难的。
如1.3.1节所述, 由于总线会成为一种瓶颈, 基于总线的多处理机总数就最多只能有几个。
1.3.2节介绍的交换式多处理机可应用于大系统,但相比之下过于昂贵、缓慢、复杂以及难维护。
相反,大的多计算机系统更易于建立。
单主板计算机(包含一个CPU,一个存储器,一个网络接口)可以相互连接在一起,而不受数量的限制。
许多生产商都提供包含数以千计处理机的多计算机系统。
从硬件设计者的角度看,多计算机系统比多处理机系统更优越。
现在看看它对软件的影响。
用于多处理机编程的技术很多。
为实现通信,一个进程把数据写到存储器,其它进程将之读出。
为保持同步,可以使用临界区(critical region),信号量或管程(monitor)提供必要的互斥。
很多文章都讨论了在共享存储器的计算机上实现通信与同步的问题。
在过去的20年中,每一本操作系统的教科书都有几个章节讨论这个问题。
简而言之,大量的理论和实践知识可用于多处理机编程。
对多计算机系统,情况正好相反。
通信一般使用消息传递,这使输入/输出更为抽象。
消息传递带来了许多复杂的问题,包括:流控制,信包丢失,缓冲区设置和拥塞。
尽管已提出了不同的解决方案,但消息传递的编程仍很复杂。
分布式 感知 方法

分布式感知方法分布式感知是指在分布式计算系统中,各个节点通过交换信息和相互通信,共同感知系统中的状态和变化。
下面是关于分布式感知方法的10条详细描述:1. 共享内存:分布式系统中的节点可以通过共享内存来感知其他节点的状态。
节点可以读取和写入共享内存中的数据,从而获得其他节点的状态信息。
2. 消息传递:节点通过传递消息来感知其他节点的状态。
节点可以发送消息给其他节点,并接收其他节点发送的消息,从而获得其他节点的状态信息。
3. 事件广播:节点通过广播事件来感知其他节点的状态。
当一个节点的状态发生变化时,它可以通过广播事件的方式通知其他节点,从而让其他节点感知到它的状态变化。
4. 心跳检测:节点通过定期发送心跳消息来感知其他节点的状态。
每个节点都会定期向其他节点发送心跳消息,如果某个节点长时间没有收到心跳消息,就可以判断该节点已经故障。
5. 图算法:节点通过图算法来感知系统中的状态。
节点可以将分布式系统中的节点和通信链路建模为图,利用图算法来分析节点和通信链路的状态,从而感知系统中的整体状态。
6. 位图算法:节点通过位图算法来感知系统中的状态。
每个节点都维护一个位图,位图中的每一位表示与其他节点的连接状态,节点可以通过比较位图来判断其他节点的状态。
7. 一致性协议:节点通过一致性协议来感知系统中的状态。
一致性协议可以保证分布式系统中的节点达成一致,节点可以通过检查一致性协议的进程来获得其他节点的状态信息。
8. 集群监控:节点通过集群监控系统来感知系统中的状态。
集群监控系统可以监测和收集各个节点的状态信息,并提供查询接口供节点访问和获取其他节点的状态。
9. 分布式锁:节点通过分布式锁来感知系统中的状态。
每个节点可以尝试获取分布式锁,如果获取成功,则可以认为其他节点处于正常状态;如果获取失败,则可以认为其他节点出现故障。
10. 验证算法:节点通过验证算法来感知系统中的状态。
验证算法可以检查节点发送的消息的合法性和正确性,从而判断其他节点的状态信息是否可信。
【计算机应用】_内存分配_期刊发文热词逐年推荐_20140725

2009年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
科研热词 结构改进 内存分配 优化 仿真栈 高精度 面向视图并行编程 零拷贝 随机密钥预分配 门限 网络安全 线索化解释器 矩阵运算 最大频繁项集 无线传感器网络 操作系统 抽象缓冲区 性能 并行体系结构 嵌入式协议栈 嵌入式java虚拟机 小对象 密钥管理 存储 多路增强 图形处理器 动态自适应编译器 分簇 分布式共享内存系统 内存 关联规则 二元对称多项式 万维网地理信息系统 new kvm avl
2012年 序号 1 2 3 4
科研热词 虚拟机 安全检测 内存泄露 xen
推荐指数 1 1 1 1
2013年 序号 1 2 3 4 5 6 7 8 9 10 11
科研热词 虚拟机内存 测井 数据库 按需调整 并行计算 实时监控 云计算 xen mapreduce k-medoids hadoop
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
2011年 科研热词 零拷贝 阵增益 虚拟机 简化权系数分配法 相位补偿 物理资源动态管理 波束形成 检测技术 普适性 性能分析 实时数据库 存储量 哈希表 内存泄漏 内存映射文件 内存映射 内存分配 位图分配法 passthrough i/o napi linux judy array b+树 推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 176- . 分布式共享内存 第 - 176 - 页 第7章 分布式共享内存
在本章中,我们研究实现分布式共享内存(distributed shared memory简称DSM)。 7.1 引论
传统上,分布式计算是基于消息传递模型,在这种模型下进程们经由以消息形式交换数据来彼此互相交互和共享数据。Hoare的通讯顺序进程(communicating sequential processes),客户-服务器模型和远程过程调用都是这种模型的例子。 分布式共享内存(Distributed shared memory简称DSM)系统是分布式操作系统的一个资源管理成分,它实现在没有物理地共享内存的分布式系统中的共享内存模型。见图7.1。
图7.1分布式系统中的共享内存模型 这个共享内存模型提供一个虚拟地址空间,使得被在一个分布式系统中所有结点(计算机)之间共享。
7.2 体系结构和动力
具有分布式共享内存,程序访问在共享地址空间中的数据正如同访问在传统的虚存中的数据一样。在支持分布式共享内存的系统中,数据既在辅存和主存之间也在不同结点的主存之间移动。 每个结点可以拥有存贮在共享地址空间中的数据,并且当数据从一个结点移到另一个结点时,拥有关系可以改变。当一个进程访问在共享地址空间中的数据时,一个映照管理者(mapping manager) 映照共享内存地址到物理存储,这个物理存储可以是本地或远程的。 映照管理者是一个或者实现在操作系统内核中或者作为一个运行时库例程的软件层。 为了减少由于通讯误而带来的延迟,当共享内存地址映照到在在一个远程结点上的一个物理内存位置时,分布式共享内存可以移动在共享内存地址中的数据从一个远程结点到正在访问数据的结点。在这样情况下,分布式共享内存利用底层通讯系统的通讯服务。 分布式共享内存 .-177. 第 - 177 - 页 7.2.1 分布式共享内存的优点 在消息传递模型中,程序通过明显的消息传递使共享数据可供使用。换句话说,程序员需要意识到进程之间数据移动。程序员不得不明显地使用通讯原语(例如SEND和RECEIVE),放一个重要的负担在它们身上。 相反,分布式共享内存系统隐藏这个明显的数据移动并且提供一个较简单的程序员已经精通的共享数据抽象。因此,利用分布式共享内存比通过明显的消息传递更容易地设计和编写并行算法。 在消息传递模型中,数据在两个不同的地址空间之间移动。这使得它难以在两个进程之间传递复杂的数据结构。而且传递由“引用”的数据和传递包含指针的数据结构一般是困难的和贵的。相反,分布式共享内存系统允许传递由“引用”的复杂的数据结构,于是简化了对分布式应用的算法的开发。 仅移动规定的所引用的数据片来代替由移动整块或包含所引用的引用场点的数据页,分布式共享内存利用程序所显示的引用局部性,因此削减了在网络上的通信开销。 分布式共享内存系统比紧偶合多机系统更便宜。这是因为分布式共享内存系统可以利用货架上的(off-the-shelf)硬件建立不需要复杂的接口把共享内存连接到处理机。 在一个分布式共享内存系统所有结点中可供使用物理内存组合在一起是巨大的。这个大的内存可以用于有效地运行要求大内存的程序而不用招致由于在传统的分布系统中对换引起的磁盘延迟。这个事实也由处理机速度相对于内存速度预料的增加和非常高速网络出现所支持。 在具有单个共享内存的紧偶合多机系统中主存经由一个公共总线访问,这限制多机系统为几十个处理机。分布式共享内存系统没有这个缺点,并且可以容易地向上扩充。 为共享内存多处理机写的程序原则上可以不加改变地运行在分布式共享内存系统。至少这样的程序可以容易地移到分布式共享内存系统中。 本质上,分布式共享内存系统努力克服共享内存机器体系结构的限制并且减少在分布系统中写并行程序。所需的努力。
7.3 实现分布式共享内存的算法 实现分布式共享内存的中心课题是: 如何追踪远程数据的位置; 当访问远程数据时,.如何克服.通信延迟和在分布系统中通信协议的执行相联的开销; 为了改善系统性能,.如何使共享数据在几个结点上并发地可供访问。 现在我们描述实现分布式共享内存的四个基本算法。 中央服务器(Central-Server)算法 迁移算法 读复制(Read-Replicatin)算法 完全复制算法
7.3.1 中央服务器(Central-Server)算法
在中央服务器(Central-Server)算法中,一个中央服务器维护所有的共享数据。它服务从其它结点或者客户来的读请求,返回数据项给它们(见图7.2)。在客户写请求时,它更新数据并返回表示收到的消息。 在表示收到的消息失效情况一个超时(timeout)可以被采用来重发请求。重复的写请求可以由写请求所伴随的顺序号检测。在几次重新传输而又无响应后一个失败的条件被返回到企图访问共享数据的应用。 - 178- . 分布式共享内存 第 - 178 - 页 虽然中央服务器算法其实现是简单的,但中央服务器可能变成一个瓶颈。为了克服这个问题,共享数据可以分布在几个服务器上。在这种情况下,客户必须能够对每次数据访问定位适当的服务器。 多点广播式的数据访问请求是不希望的,因为与中央服务器方案相比,它并不减少服务器的负载。分布数据的一种较好的方法是按地址划分共享数据并且利用一个映照函数定位适当的服务器。
图7.2中央服务器算法 7.3.2 迁移算法
在中央服务器算法中,每个数据访问请求被发送到数据的位置,与之相比,在迁移算法中的数据被转移到数据访问请求的地点,允许随后的对该数据的访问被本地地执行(见图7.3)。 迁移算法每次仅允许一个结点访问一个共享数据。 在中央服务器算法中,每个数据访问请求被发送到数据的位置,与之相比,在迁移算法中的数据被转移到数据访问请求的地点,允许随后的对该数据的访问被本地地执行。
图7.3迁移算法 典型地,包含数据项的整个页或块迁移以代替单个请求项。这个算法利用由程序所展示的引用的局部性把迁移的费用分摊到多个访问迁移数据上。但是这种途径对抖动(thrashing)敏感,其中页频繁地在结点间迁移,而仅服务少数请求。 为了减少抖动,Mirage系统使用一个可调的参量决定一个结点可以拥有一个共享数据项的期间。这允许在页被迁移到另一结点之前一个结点对该页作若干次访问。Munin系统力求采用适合不同的数据访问模式的协议来减少数据移动。 分布式共享内存 .-179. 第 - 179 - 页 迁移算法提供了一个机会把分布式共享内存与运行在单个结点上操作系统所提供的虚存集成在一起。当分布式共享内存所用的页大小是虚存页大小的倍数时,一个本地掌握的共享内存页可以被映照到一个应用的虚地址空间并且利用正常的机器指令访问。 在一个内存访问失效时,如果内存地址映照到一个远程页,在映照页到进程的地址空间之前,一个页失效处理程序将迁移该页。在迁移一页时,该页从所有在以前结点被映照到的地址空间移开。注意,几个进程可以共享在一个结点上的一页。 为了定位一个数据块,迁移算法可以利用一个服务器追踪页的位置或者通过在结点上所维持的提示。这些提示指向搜寻当前占有该页的结点。另外,一个询问可以广播来定位一页。 7.3.3 读复制(Read-Replicatin)算法
在前面途径中仅仅在一个结点上的进程可以在如何时刻访问一个共享数据。读复制(Read-Replicatin)算法扩充了迁移算法,即复制数据块并且允许多个结点具有读访问或一个结点具有读写访问(多个读者-一个作者协议)(见图7.4)。
图7.4读复制 由允许多个结点并发地访问数据,读复制可以改善系统性能。但是,写操作是昂贵的,因为一个共享块在各种结点上的所有副本将或者不得不是无效的,或者用当前值来更新以维护共享数据块的一致性。 在读复制算法中分布式共享内存必须追踪所有数据块副本的位置。在IVY系统中,一个数据块的拥有者结点追踪具有该数据块的一个副本的所有结点。在PLUS系统中,一个分布式链接列表用来追踪具有该数据块的一个副本的所有结点。 然而,当读对写的比例是大的时候,读复制有减少读操作平均费用的潜力。在节描述在IVY系统中实现的许多读复制算法。 7.3.4 完全复制算法
完全复制算法是读复制算法的一种扩充(见图7.5)。读复制算法它允许多个结点具有对共享数据块的读和写两种访问(多个读者-多个作者协议)。由于许多结点可以并发地写共享数据,对共享数据的访问必须被控制以维持它的一致性。 维持一致性的一个简单方法是利用一个无间隙的顺序器(gap-free sequencer)。在这种方案下,所有希望修改共享数据的结点将发送修改给一个顺序器。这个顺序器将赋予一个顺序号并且多点广播这个修改及顺序号到所有具有该共享数据项副本的结点。 - 180- . 分布式共享内存 第 - 180 - 页 每个结点以顺序号次序处理修改请求。在一个结点上一个修改请求的顺序号和期待的顺序号之间的间隙指示一个或多个修改已被遗漏。在这种情况下结点将被请求重新传送已经遗漏的修改。这蕴涵在某个结点保留修改的日记。在第5节将讨论若干其它维护共享数据的一致性的协议。
图7.5完全复制算法 7.4 存储一致性(Memory coherence)
为了改善性能分布式共享内存系统依赖复制共享数据项和允许在许多结点上并发访问。但是,如果并发访问不仔细地加以控制,内存访问可能以不同于程序员所期望的次序被执行。非正式讲,一个内存是一致的,如果由读操作返回的值总归是程序员所期望的值。 例如,对一个程序员期待一个读操作返回一个最近写操作所存贮的值是相当自然的。 因此,为了维护共享数据项的一致性,一个控制或同步访问的机制是必要的。同样为了写正确的程序,程序员需要理解如何进行对共享内存的并发更新。允许的内存访问次序集合构成了存储一致性模型。字一致性用于说明一种特殊类型的一致性。 存储一致性最直观语义是严格一致性(strict consistency),其定义如下:一个读返回最近写的值。严格一致性要求具有决定最近写的能力,依次它蕴涵请求的全序。由于比一个程序可能实际需要更多的数据移动和同步要求,请求的全序导致非有效性(请参考[4])。 为了解决这个问题,某些分布式共享内存系统企图由提供不严格的一致性语义来改善性能。下列是几种内存一致性形式: 顺序的一致性(Sequential consistency) 一般一致性(General Consistency) 处理机一致性(Processor consistency) 弱一致性(Weak consistency) 释放一致性(Release consistency)