第十一章分布式共享内存

合集下载

接口同步数据 方法

接口同步数据 方法

接口同步数据方法接口同步数据是计算机科学中的一种常见需求,特别是在分布式系统中。

接口同步数据的方法有很多种,本文将介绍一些常用的方法,并分析它们的特点和适用场景。

一、接口同步数据的概念接口同步数据是指在分布式系统中,通过接口在不同进程或不同机器之间传递数据的过程。

同步数据的主要目的是确保数据的一致性和准确性。

在分布式系统中,由于网络延迟、进程间通信等原因,数据可能会出现不一致的情况。

因此,接口同步数据成为了保证数据一致性的关键手段。

二、接口同步数据的方法1. 共享内存共享内存是一种常见的接口同步数据方法。

在这种方法中,多个进程可以通过读写同一块内存区域来传递数据。

共享内存的优点是传输速度快,延迟低。

但是,它也有局限性,比如需要进程间协作,且容易产生竞争条件。

2. 消息队列消息队列是一种通过队列来传递消息的接口同步数据方法。

发送进程将消息放入队列中,接收进程从队列中取出消息进行处理。

消息队列的优点是实现了进程间的解耦,且可以实现异步通信。

但是,它也有局限性,比如需要额外的系统资源来维护队列,且可能会产生消息丢失的情况。

3. 数据库数据库是一种通过存储数据来进行接口同步数据的方法。

发送进程将数据存储到数据库中,接收进程从数据库中读取数据。

数据库的优点是数据持久化,且可以支持分布式事务。

但是,它也有局限性,比如需要额外的系统资源来维护数据库,且可能会产生网络延迟的问题。

4. RPC(远程过程调用)RPC是一种通过网络调用远程进程的方法。

发送进程通过网络发送调用请求,接收进程收到请求后执行相应的操作并返回结果。

RPC的优点是实现了进程间的透明调用,且可以支持分布式事务。

但是,它也有局限性,比如需要额外的系统资源来维护网络连接,且可能会产生网络延迟的问题。

三、接口同步数据方法的比较和选择接口同步数据方法的选择取决于系统的具体需求和场景。

下面是几种方法之间的比较:1. 共享内存:适用于进程间通信,传输速度快,但需要进程间协作,容易产生竞争条件。

消息队列通信与共享内存通信机制的异同

消息队列通信与共享内存通信机制的异同

消息队列通信与共享内存通信机制的异同引言消息队列与共享内存是常见的进程间通信机制,在多进程、分布式系统以及并发编程中起着重要作用。

本文将深入探讨消息队列通信和共享内存通信的特点、原理、应用场景以及其异同之处。

消息队列通信特点•以消息为传递单位,实现了异步通信(发送方与接收方解耦)。

•通过缓冲区保存消息,解决发送方与接收方速度不匹配的问题。

•提供了可靠性、持久性等特性,确保消息不丢失。

•支持多对多通信,多个进程之间可以同时发送和接收消息。

原理1.创建消息队列:调用系统函数创建一个消息队列,返回队列标识符。

2.发送消息:发送进程将消息写入到消息队列的缓冲区中,消息队列保持消息的顺序。

3.接收消息:接收进程从消息队列中读取消息,读取后消息队列会自动删除该消息。

应用场景•进程间传递数据:不同进程之间通过消息队列传递数据,实现进程间通信。

•任务调度:通过消息队列将任务发送给不同的线程或进程,实现任务调度和分配。

优点1.解耦性:发送方与接收方之间松散耦合,提高系统的可扩展性和维护性。

2.异步通信:消息发送后即可返回,不需要等待接收方的响应,提高系统的并发性能。

3.可靠性:消息队列提供了持久化存储和可靠的传输机制,确保消息不会丢失。

缺点1.性能开销:消息队列需要额外的存储空间和处理时间,会带来一定的性能开销。

2.复杂性:需要编写专门的消息队列代码,增加了系统的复杂性和维护成本。

共享内存通信特点•以内存为传递单位,实现了高速的数据共享。

•不需要数据的拷贝,减少了系统的开销。

•实现了同步机制,避免了多个进程同时访问同一块内存区域导致的数据不一致问题。

•适用于大数据量、高频率的通信。

原理1.创建共享内存:调用系统函数创建一块共享内存,返回内存区域的指针。

2.读写共享内存:不同进程通过操作共享内存的指针来读写数据。

3.同步机制:使用信号量等机制保证多个进程之间对共享内存的访问是互斥的。

应用场景•数据共享:多个进程之间共享大块数据,如图像处理、大数据分析等。

分布式系统中的数据共享与访问控制

分布式系统中的数据共享与访问控制

分布式系统中的数据共享与访问控制随着信息技术的不断发展,分布式系统在各个领域得到了广泛应用。

在分布式系统中,数据的共享与访问控制是一项重要的任务,它直接关系到系统的可靠性和安全性。

本文将对分布式系统中的数据共享和访问控制进行讨论,并介绍一些常见的解决方案。

一、数据共享在分布式系统中,数据共享是指多个节点可以同时访问和修改同一份数据。

数据共享可以提高系统的性能和效率,同时也增加了系统的复杂性和风险。

1. 数据共享模型常见的数据共享模型包括:共享内存模型、消息传递模型和数据库模型。

- 共享内存模型:多个节点通过共享的内存空间来进行数据交换。

这种模型的优点是数据访问高效,但是需要考虑数据一致性和并发控制的问题。

- 消息传递模型:通过消息传递的方式进行数据交换。

每个节点有自己的一份数据拷贝,通过互相发送消息来实现数据共享。

这种模型可以提高系统的灵活性,但是增加了通信开销。

- 数据库模型:数据存储在共享数据库中,多个节点可以通过数据库接口进行数据访问。

数据库管理系统负责处理并发访问和一致性问题。

这种模型适用于需要频繁进行数据读写的场景。

2. 数据一致性数据一致性是指在多个节点间共享数据的过程中,所有节点看到的数据是一致的。

在分布式系统中,由于网络延迟和节点故障等原因,数据可能出现不一致的情况。

为了保证数据一致性,可以采用以下方法:- 基于锁机制:通过互斥锁等机制来控制对共享数据的访问。

只有拥有锁的节点才能修改数据,其他节点需要等待。

- 基于事务:将一系列对数据的访问操作封装为事务,并通过提交(commit)和回滚(rollback)操作来保证数据的一致性。

- 基于副本技术:将数据复制到多个节点上,通过副本一致性协议来保证数据的一致性。

二、访问控制在分布式系统中,为了保证数据的安全性和隐私性,需要对数据的访问进行控制。

访问控制是指根据用户的身份和权限来限制其对数据的访问操作。

1. 访问控制模型常见的访问控制模型有:基于角色的访问控制(RBAC)、强制访问控制(MAC)和自主访问控制(DAC)。

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

共享内存函数(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: 嗨,哥们,你很 棒!!!加油

第六章向量时钟

第六章向量时钟

第11章分布式操作系统系统11.1分布式系统的体系结构分布式系统(distributed system)是由若干非共享内存和时钟的计算机组成,它们通过一个计算机网络彼此交换消息;并且每台计算机由自己的内存和运行自己的操作系统,如图1所示。

图 1 分布式系统的体系结构分布式系统的优点:●资源共享●增强的性能●改善的可靠性和可用性●模块可扩张性11.1.1分布式系统的体系结构类型Tanenbaum和Renesse将分布式系统分成三类:●小型机类型(minicomputer model):在小型机类型中,分布式系统由若干小型机组成(例如,VAX)。

每个计算机支持多个用户并且提供访问远程资源。

处理机个数和用户数之比通常小于1。

●工作站类型(workstation model):在工作站类型中,分布式系统由直到几百台工作站组成。

每个用户有一台工作站完成用户的任务。

藉助于分布式文件系统,用户可以访问任何数据,而不管其位置。

处理机个数和用户数之比通常等于1。

Athena和Andrew是其例子。

●处理机池类型(processor pool model):在处理机池类型中,按照用户的需求分配一个或多个处理机给用户。

一旦完成任务它们返回处理机池等待新的分配。

处理机个数和用户数之比通常大于1。

Amoeba是一个工作站和处理机池类型组合的试验系统。

分布式操作系统是由一个通信网络连接的若干自治的计算机所组成的分布式计算系统的操作系统。

从用户观点看分布式操作系统是由一个虚拟单机组成。

11.1.2分布式操作系统的课题●全局知识(Global knowledge)●命名(Naming)●可伸缩性(Scalability)●兼容性(Compatibility)●进程同步(Process Synchronization)●资源管理(Resource Management)●安全(Security)●构造(Structuring)全局知识命名可伸缩性兼容性兼容性指的是在一个系统中的资源之间互操作性。

基于DSM的分布式计算模型研究

基于DSM的分布式计算模型研究

基于DSM的分布式计算模型研究随着信息技术的迅速发展,人们进入了一个大数据时代,数据存储和处理的规模越来越大。

传统的计算方式已经无法满足大数据时代的需求,因此分布式计算成为研究的热门领域。

而基于DSM的分布式计算模型是分布式计算中一个重要且备受研究的方向。

DSM即分布式共享内存(Distributed Shared Memory),是指多个计算机之间通过网络通讯实现实时共享内存资源的技术。

与传统的共享内存不同,DSM的共享内存是分布在多个计算机上的,因此没有物理地址作为标志,共享的内存直接映射到所有进程的地址空间中。

在基于DSM的分布式计算模型中,不同计算机之间可以通过共享内存进行数据交换和通讯。

因此,多个计算机可以通过协作实现某一任务,达到分布式计算的目的。

这种模型在处理数据规模较大的情况下可以显著提高计算效率和效果。

基于DSM的分布式计算模型有多种实现方式,其中最为常见的是虚拟内存技术。

虚拟内存将物理内存抽象化成虚拟内存,而虚拟内存又可以被分配到不同的计算机节点中,形成DSM的共享内存。

这种方式实现的分布式计算模型可以适用于多种场景,如:大规模数据处理、分布式计算、并行计算等。

当然,基于DSM的分布式计算模型在实际应用时也需要克服一些问题。

比如,计算机之间的网络通讯和数据同步会产生很大的性能损耗,需要使用高效的算法和协议来加以控制。

同时,由于共享内存的特性,多个计算机之间的访问与修改需要控制并发,避免数据冲突和错误。

这些问题均需要综合考虑和解决。

DSM分布式计算模型在科学计算、大数据处理、图像处理、网络空间安全等领域都有广泛应用。

随着虚拟化、云计算、及容器技术的快速发展,DSM分布式计算模型逐渐成为一种趋势,具有重要的研究价值和应用前景。

总之,基于DSM的分布式计算模型是分布式计算中一种重要的研究方向。

它通过共享内存的方式实现多个计算机的协作和分布式计算,提高了计算的效率和可靠性。

当然,在实际应用中还需要解决一些技术难点,进一步推动该模型的研究和应用。

计算机科学中的分布式系统

计算机科学中的分布式系统

计算机科学中的分布式系统计算机科学中的分布式系统是指由多台计算机组成的网络系统,这些计算机通过消息传递或共享内存等方式进行协同工作。

分布式系统的设计旨在提供高度可靠性、易于扩展和高性能的计算环境。

本文将介绍分布式系统的定义、特点、应用领域以及挑战,以帮助读者更好地理解和应用分布式系统。

一、分布式系统的定义和特点分布式系统是指由多台独立计算机组成的网络系统,这些计算机通过消息传递或共享内存等方式进行通信和协作。

与传统的单机系统相比,分布式系统具有以下特点:1. 组成部分的自治性:分布式系统中的每台计算机都是自治的,它们可以独立地工作,没有中心控制节点。

这种自治性使得分布式系统具有高度可靠性和容错能力,一台计算机的故障不会导致整个系统的崩溃。

2. 系统的并发性:分布式系统能够同时处理多个任务,不同计算机之间可以并行地进行计算和通信。

这种并发性可以显著提高系统的性能和吞吐量。

3. 拓展性和可扩展性:分布式系统可以方便地扩展,当系统需要处理更大规模的任务或用户时,可以通过添加更多的计算机来提高系统的处理能力,而不需要改变整体架构。

4. 数据共享和一致性:分布式系统中的计算机可以共享存储和数据,使得不同计算机之间可以共同访问和修改数据。

为了保持数据的一致性,分布式系统需要使用合适的数据复制和同步算法。

二、分布式系统的应用领域分布式系统在现代计算领域有广泛的应用,以下是几个主要应用领域的例子:1. 云计算:云计算是一种基于分布式系统的计算模式,它将计算资源和服务提供给用户,使得用户可以通过互联网实现按需使用和灵活扩展。

云计算能够提供高性能的计算、存储和网络资源,支持大规模数据处理和分布式应用部署。

2. 大数据处理:随着数据规模的快速增长,传统的单机系统往往无法处理大规模的数据集。

分布式系统在大数据处理方面发挥着重要作用,通过将数据分割和分发到不同的计算机上进行并行计算,可以提高数据处理的效率和速度。

3. 分布式存储系统:分布式存储系统采用了分布式数据存储和访问技术,将数据存储在多台计算机上,以提高数据的可靠性和容错性。

计算机科学中的分布式计算与存储

计算机科学中的分布式计算与存储

计算机科学中的分布式计算与存储在当代计算机领域中,随着云计算、大数据等创新技术的快速发展,分布式计算和存储逐渐成为热门话题。

分布式计算指的是利用多台计算机协同工作,通过网络互相交换协作来完成某个任务。

而分布式存储则是将数据分散存储在不同的节点上,构建一个高度可用的数据存储平台。

具有高效、可靠、安全等优点,被广泛应用于大数据处理、云计算、区块链等领域。

分布式计算的原理和架构分布式计算主要由多个节点组成,分别承担不同的任务。

每个节点之间通过网络互相通信和协调,完成数据的输入、处理和输出。

通常情况下,分布式计算可以分为两种类型:基于消息传递的分布式计算和基于共享内存的分布式计算。

前者使用消息传递的方式进行通信,后者则共享内存进行通信。

在分布式计算系统中,一般会有一个主节点或者控制节点,它负责任务的分配和协调。

每个节点则通过消息传递和共享内存进行通信和数据交换。

通常情况下,分布式计算系统还包括一个数据中心,负责数据的收集和分发,以及存储和管理计算任务产生的结果。

分布式计算的应用分布式计算已经广泛应用于云计算、大数据处理、人工智能等领域。

其中,云计算是分布式计算的一种应用。

通过将计算资源集中放在云上,用户只需要通过简单的接口就能够获得自己需要的计算资源和服务。

云计算以其高度可靠、高性能、高扩展性、灵活性等优点,已经成为当今大型企业和机构不可或缺的计算资源。

大数据处理是另一个应用领域。

随着信息时代的到来,我们面对着海量的数据。

大数据处理需要更加高效、可靠、安全的处理方式。

而分布式计算正是大数据处理的关键技术之一。

在分布式计算的帮助下,大量数据可以被分别存储在不同的节点上,通过并行处理和计算,大幅提升大数据处理的效率和速度。

分布式存储的原理和架构分布式存储是指将数据分放在不同的节点上进行存储的技术。

在分布式存储系统中,每个节点都可以存储数据,并且相互独立。

通过在不同的节点之间进行数据镜像和备份,保证数据的可靠性和安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11.2.6 抖动问题 写无效协义的一个潜在问韪就是抖动问题。抖 动指的是数据无效的时间超出了等待访问它的进程 的有效工作时间。例如,如果一个进程读的是一个 被另一进程反复修改的数据项,那么该数据项对读 进程而言总是无效的。
2.弱一致性 弱一致性模型可以避免有序一致性模型的通信开销。这个模型用同步模型 的知识来解决内存一致性问题,而程序看上去是在有序一致性模型下运行。例 如,如果一个程序的某一段是临界段,它就给这一段操作的数据加上锁,其他 进程由于互斥性不能访问这些加锁数据,DSM系统在进程离开临界段并解除 了锁以后,将这些修改传送给备份管理者。虽然在加锁期间,这些数据是不一 致的,但由于其他进程访问不到它,因而整个过程看上去就像是有序一致的。 一个DSM系统在一个同步模型下是弱排序的,当且仅当遵循同步模型规 则的所有软件在运行中表现出有序一致性。 11.2.4 修改问题 将一个进程所作的修改传送给其他进程时,有两种选择:写有效和写无效。 它们适用于不同的一致性模型,包括有序一致性模型。 1.写有效 当一个进程在本地修改了一个数据项时,它将修改值传送给拥有该数据项 的备份管理者,其他进程要从本地读出这个修改值来替代原来的值。为了允许 有多个读进程存在,有些进程可以在同一时刻修改同一数据项,这就是所谓多 个读者多个写者的共享。 能使用写有效方式的一致性模型要满足几个条件,首要条件是修改传送 (也称为组播)的顺序要合适。有序一致性要求采用完全有序组播,这一组播直 到修改消息被传送回来才算结束。所有进程都遵循这一修改的顺序,保证了整 个DSM的有序一致性。
11.2.2 同步模型 在DSM中,常常在某些变量之间建立一种约束,例如,a=b就是一 种约束,但这种约束并不稳定,如果两个或多个进程执行下列代 码:a=a+1;b=b+1;就会产生不一致性。假设a、b初值都为0,当进 程1将a置为1,在置b为1之前,进程2开始执行,它将a置为2,b置为 1,这时,约束条件被打破。解决这一问题的方法是将这段代码设计成临 界段。 为了使用DSM,必须有一个分布式同步服务保证DSM的同步性, 它包括我们熟悉的加锁和信号量。目前大多数DSM应用都利用同步模型 来减少修改值传送的数量,包含同步模型的DSM才能称为一个完整的 DSM。 11.2.3 一致性模型 DSM实现使用缓存来提高效率,在大多数情况下,为了保证效率, 数据是从本地缓存中取出的,但出现修改时,就要将这一改变传给其他 备份管理者。 除了缓存外,DSM实现可以采用写缓冲访问,它可以 减少因写操作而产生的通信开销。采用这些缓冲技术时,能否保证DSM 内存的一致性仍是-一个值得注意的问题,这种一致性称为内存一致性。 在实践中应用的DSM的一致性模型主要可分为有序一致性模型和弱 一致性模型。
在图11.2所示的例子中,ar=0,br=1的组合在有序一致性模型下就 不可能出现,因为进程1中的读操作与进程2中的操作次序发生冲突。图 11. 3是进程交错内存存取的例子。有序一致性的DSM要使用单一的服务 器来保存共享数据,进程在执行读写操作之前要向服务器发出请求,这样 服务器才能对这些操作进行全局排序。这样一种结构在实际实现中显然是 低效率的。
1.有序一致性 任何一个内存一致性模型所面临的中心问题都是:一个读操作和一 个写操作同时访问一个地址,读出的值应该是怎样的?最弱的极端是, 所有写操作都必须在读操作之前完成,而且备份管理者可以无限期地推 迟将修改传送给其他备份管理者。显然,这一模型太弱而不可能被采崩。 另一个极端是,所有写的值立即生效,读操作总是返回最近被修改 的值。但是,这一方案引来两个问题:第一,如果写操作和读操作都不 是在一个单独时刻发生的,那么“最近”这一定义就变得不明确。第二, 系统时钟在分布式系统中并不是同步的,因而判断一个读操作和写操作 谁先发生,变成一个难题 所幸的是,定义一个有用的、有实际意义的内存一致性模型在逻辑 上是可能的。最好和最重要的模型是有序一致性模型。在这个模型下, 任何操作都满足条件:由单个进程引起的读和写操作都以程序执行的顺 序发生,同时属于不同进程引起的内存操作也按一定的次序发生。 这些条件可以更具体地描述为:进程执行内存操作不能违反自身程 序的执行顺序,也不能破坏其他进程自身的内存操作次序。注意,只有 在整个DSM上的内存操作是有序的,才能保证有序一致性,而不仅仅是 在单个地址上满足内存操作的有序。
DSM这个工具主要应用于并行程序或分布式应用或群 组应用,这些应用都要求能直接访问每一个共享数据。例如, 具有一定程度一致性的内存镜像文件就是DSM的一种形式。 在分布式系统中,消息传递是不可避免的。在DSM中, 由于没有物理共享内存,DSM的运行支持只有通过消息传递 来通知各机器对DSM的任何修改。DSM中存在复制数据, 为了提高访问速度,每台机器都存有最近访问的共享数据的 备份。
1.2设计和应用 本节讨论DSM的设计和实现问题,这就是:DSM中的数据结构;应用层中 访问DSM的同步模型;保证被不同机器所访问的数据值的一致性的一致性模型; 不同机器上数据更新的修改问题;DSM应用中共享的颗粒性;抖动问题等。 11.2.1 数据结构 在应用中,DSM主要由三个方式组成:字节、共享对象、不可变的数据项。 1.基于字节方式 在Ivy,Mether系统中,采用的都是字节方式,它允许应用程序按照自己想 要的数据结构去共享内存,基于字节方式的DSM被访问时,如同普通的虚拟内 存。 2.共享对象 将共享内存当作一个对象集合的观点的好处在于,可以在对象操作这一级实 现同步。orea将DSM视为一个共享对象的集合,自动地将一系列操作施加在给 定的对象上。 3.不可变数据 Agora和Linda都将DSM看成是一个所有进程都可以读的不可变数据的集 合。在DSM中,进程通过对数据项进行替换来实现对数据的修改。例如, Linda使用了记录模型,在这里,记录是由字段组成的。宇段就是带类型的数据 项。进程将记录放人记录空间,从中读或取它们。选择记录时,进程要说明它要 访问的字段数和它们的值或类型。
11· 2 DSM的主要处理方式 1· 分布式共享内存主要有三种处理方式,分别是使用硬件,虚拟内存和库 支持。 1 .基于硬件的方式 一些多处理器体系结构,依靠特殊硬件来装载、存储指令以完成DSM 的寻址操作及与远程内存节点的通信。在这些系统中,处理器群与内存节点 群通过高速网络相连,这种设计方式主要是为了使处理器的个数能突破10 个的极限或是使通信能在普通总线上得以完成。 2.基于虚拟页的方式 Ivy、Munin、Mirage、clouds、Choices、COOL以及Mether, 所有这些DSM应用都是虚拟内存方式,对每一个进入的进程而言,地址空 间的范围是一样的。在这些系统中,操作系统的内核负责DSM范围内的数 据一致性维护以及相关页的出错处理。 3. 基于库的方式 一些程序设计语言或语言的扩展,例如Orea和Linda支持DSM方式。 在这一类应用中,共享不是通过虚拟内存系统实现的,而是通过实时语言实 例间的通信来完成的。进程通过库调用来完成对DSM中数据的访问。这些 库函数可以访问本地数据项,也可以进行通信以完成数据一致性的维护。进 程还可以执行库调用以完成有关DSM消息的接收和发送。 基于虚拟页的方式应受到更多的关注。这主要因为它不需要在DSM中 采用特殊的结构。
11.1.1消息传递与DSM的比较 1.程序模型 (1)在消息传递模型中,发送进程将变量进行类似编 码方式的操作,传送出去后,接收进程要进行类似解码方式 的操作才能取出变量。相比之下,在共享内存方式下,进程 直接访问共享变量,而不需要进行编码解码操作。 (2)消息传递可以保护一个进程的私有地址空间不被 另一进程破坏,而DSM则通过导致另一进程访问失败来防 止错误的数据修改。 (3)如果消息传递采用的是异构计算机,在对变量进 行组织时就会遇到数据的多种表示问题,然而在DSM中, 数据的表现形式是统一的。 (4)在消息传递模型中,进程间的同步是通过将消息 分割传递来实现的,采用的技术如锁服务器应用等。在 DSM中,同步通过共享内存程序米实现,例如加锁和原语 通信。
1.2.5 颗粒性 与DSM结构有关的一个问题就是共享的颗粒性。在实际运行时,在 某一段时间,只有一部分数据被共享,如果一个进程访问并修改了数据, 就将整个DSM的内容传送给备份管理者,这样做显然是浪费。当一个 进程对DSM进行了写操作时,DSM实时支持系统需要传送哪些数据以 保证其他备份的数据一致性? 在基于虚拟页的DSM中,硬件所支持的地址空间由多个页面及由 指向各个页面的页指针所组成的页表两部分组成。一个典型的页面大小 是8 KB,对于修改内容的传送而言,这是一个比较合适的数目。但是, 不论是整个页面被修改,还是页面中的一个字节被修改,传送的代价仍 是一个页面的内容。 ★使用页面大小为512或l 024个字节的小页面对整个系统的性能 并没有多大提高。 ★ 使问题复杂化的是,当页面较大时,进程总是容易为页面产生竞 争,因为随着页面大小的增加,几个进程访问的数据在一个页面的可能 性就越大。 ★在实际应用中,共享单元的选择取决于有效的物理页面大小。当 程序运行时,决定传送的页数的一个重要因素是数据在页面中的布局。
2.写无效 在多个读者一个修改者的情况下,写无效是常采用的一种 方式。在任何时刻,一个数据可能被一个或多个进程进行只读 访问,也可能被一个进程读或写。在只读访问方式下的数据可 以无限制地拷贝给其他进程,而当一个进程要进行写操作时, 它首先要通知其他进程该数据的备份无效,在通知完成时,再 进行写操作,其他进程因此可以避免读到过时的数据,因为在 写操作进行期间,无效数据是不能访问的。写操作完成后,修 改值被传送给其他进程,其他进程就可以进行数据访问了。 在写无效方式下,只有当读操作发生时,修改值才被传送,在 一次传送之前,可以有多次修改操作。反对这一方式的意义在 于,在写操作之前,要通知所有备份无效,这个开销太大。 在多个读者一个修改者的情况下,这确实是一个潜在的、 较昂贵的开销。但如果读/写比率足够大的话,多个读操作同ห้องสมุดไป่ตู้时进行而实现的并行性,使得这一开销得到补偿。当读/写比 率相当小,特别是一个读者一个修改者的情况下,写无效也是 很合适的,它的开销并不大。
相关文档
最新文档