java分布式共享内存_分布式共享内存

28ed78afebb2

DSM

本文是mit6.824 Schedule: Spring 2016的第12课,前面课程内容可以在分布式找到,更多详细资料可以到:distributed-system查看。

介绍

在并发编程中,我们需要处理两个关键问题:

线程之间如何通信

线程之间如何同步

通信是指线程之间以何种机制来交换信息,在命令式编程中,线程之间的通信机制有两种:

共享内存

消息传递

28ed78afebb2

我们从通信和同步两个维度来看共享内存和消息传递。

在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。

同步是指程序用于控制不同线程之间操作发生相对顺序的机制。在共享内存并发模型里,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。

通过上面的介绍我们知道了共享内存是一种隐式的通信手段,需要显示的方法来实现同步。

而在分布式系统中,我们希望能够的是能尽可能的利用普通的机器,来达到并行计算的目标,而distributed shared memory (DSM) 在分布式系统中实现了共享内存,让所有process都共享一个全局地址空间,通过提供简单的api,方便process的访问。

先让我们看下api

28ed78afebb2

其中barrier,acquire和realease用于同步操作,一旦调用barrier等待所有process都到达这个点后才继续执行,acquire和realease则用于锁的获取和释放。

设计

在实现DSM时,主要考虑的两个问题是:

一致性

False Sharing<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值