分布式操作系统 - 6.分布式同步控制

news2024/11/18 17:33:22

文章目录

  • 1.物理时钟同步
    • 1.1 时钟同步问题
    • 1.2 时钟同步算法
    • 1.3 网络时间协议
      • (1)Christian算法
      • (2)考虑的问题
      • (3)Berkeley算法-集中式方法
      • (4)平均值算法-非集中式方法
      • (5)多重外部时间源法
      • (6)无线网络中的时间同步
      • (7)参考广播同步协议(RBS)
  • 2.逻辑时钟同步
    • 2.1 基本概念
    • 2.2 Lamport算法:校正算法
      • (1)Lamport算法
      • (2)全序多播:Lamport应用示例
    • 2.3 向量时钟
      • (1)因果性
      • (2)Vector Clock
      • (3)进程Pi上的向量时钟$VC_
      • (4)向量修改规则
      • (4)Pi的消息m在进程Pk正确递交的条件:
  • 3.互斥控制
    • 3.1基本概念
    • 3.2 集中式算法
    • 3.3 分布式算法(Ricart-Agrawala算法)
      • (1)算法
      • (2)举例
      • (3)算法评价
    • 3.4 令牌环算法
    • 3.5 三种互斥算法的比较
  • 4.选举算法
    • 4.1 基本概念
    • 4.2 霸道(Bully)算法
    • 4.3 环算法
    • 4.4 无线网络系统的选举算法
    • 4.5 大型系统的选举

1.物理时钟同步

分布式协同处理:基于真实时间的同步

分布式算法的特点:

  • 相关信息分布在多个场地上
  • 应避免因单点失败造成整个系统的失败
  • 不存在公共时钟或精确的全局时间

1.1 时钟同步问题

makefile误差

两计算机本地时钟不一致导致先后顺序错乱

在这里插入图片描述

1.2 时钟同步算法

同步问题:

  • 如何与现实时钟同步
  • 如何使不同机器之间相互同步

设进程P的机器时钟值 C p ( t ) C_p(t) Cp(t):t为UTC时间

最大偏移率( ρ \rho ρ

  • 精确时钟(理想情况):$C_p(t)=t
    , 即 ,即 dC/dt=1$
  • 快时钟: d C / d t > 1 dC/dt>1 dC/dt>1
  • 慢时钟: d C / d t < 1 dC/dt<1 dC/dt<1

在这里插入图片描述

时钟校正:

  • 设时钟偏移率为 ρ \rho ρ,两个时钟之间的允许误差为 δ \delta δ
  • Δ t \Delta t Δt后,最大可能误差为 2 ρ Δ t 2\rho \Delta t 2ρΔt
  • 为了保证 2 ρ Δ t ≤ δ 2\rho \Delta t ≤ \delta 2ρΔtδ,则$ \Delta t ≤ \delta/2\rho$;即每隔 δ / 2 ρ \delta/2\rho δ/2ρ 应该校准时间

校准原则:单调递增

  • 假设:每秒产生100次中断,每次中断将时间加10毫秒
  • 若调慢时钟,中断服务程序每次只加9毫秒
  • 若加快时钟,每次加11毫秒

1.3 网络时间协议

(1)Christian算法

  • 时间服务器, 可接受WWV的UTC时间
  • 每隔 δ / ( 2 ρ ) δ/(2ρ) δ/(2ρ), 客户机向服务器询问时间
  • 服务器返回CUTC
  • 客户机校正自己时间

(2)考虑的问题

时间服务请求过程参数

  • T 1 T_1 T1:A请求时间
  • T 2 T_2 T2:B接收时间
  • T 3 T_3 T3:B发送时间
  • T_4:A接收时间

传输延时

  • 假定双向路径相同
  • d T r e q ≈ d T r e s dT_{req} \approx dT_{res} dTreqdTres
  • 平均传输时延$ \delta=(dT_{req}+dT_{res})/2 \approx dT_{req} \approx dT_{res}$

时间偏差 θ \theta θ

  • T 1 = T 2 − d T r e q + θ T_1 = T_2 - dT_{req} + \theta T1=T2dTreq+θ
  • T 4 = T 3 + d T r e s + θ T_4=T_3+dT_{res} + \theta T4=T3+dTres+θ
  • θ = T 4 − T 3 − d T r e s = T 4 − T 3 − δ = T 4 − T 3 − ( T 2 − T 1 + θ ) + ( T 4 − T 3 − θ ) 2 = ( T 1 − T 2 ) + ( T 4 − T 3 ) 2 \theta = T_4-T_3 -dT_{res} = T_4-T_3-\delta = T_4-T_3- \frac{(T_2-T_1+\theta) + (T_4-T_3 -\theta)}{2} = \frac{(T_1-T_2)+(T_4-T_3)}{2} θ=T4T3dTres=T4T3δ=T4T32(T2T1+θ)+(T4T3θ)=2(T1T2)+(T4T3)

在这里插入图片描述

(3)Berkeley算法-集中式方法

  1. 时间监控器定期查询其他机器时间
  2. 计算出平均值
  3. 通知其他机器调整时间

在这里插入图片描述

(4)平均值算法-非集中式方法

  1. 划分固定时间间隔R
  2. 在每个间隔,所有机器广播自己的时钟时间
  3. 启动本地计时器手机在S时间间隔中到达的其他机器广播的时间
  4. 执行平均时间计算算法,得到新的时间值

在这里插入图片描述

(5)多重外部时间源法

消除传播延迟造成的误差

例:OSF DCE方法

  1. 接收所有时间源的当前UTC区间
  2. 去掉与其他区间不相交的区间
  3. 将相交部分的中间作为校准时间

在这里插入图片描述

(6)无线网络中的时间同步

传统分布式系统特点:

  • 时间服务器容易部署
  • 机器相互联系
  • 双向协议

无线网络系统特点

  • 结点资源受限
  • 多跳路由器代价高

参考广播同步协议(RBS)

  • 没有具体精确时间结点
  • 目标:接收器之间相对同步

在这里插入图片描述

(7)参考广播同步协议(RBS)

一个节点广播一个消息m后,其他节点记录本地接收时间 T p , m T_{p,m} Tp,m。P和Q交换各自的接收时间,计算相互偏差

偏 差 [ p , q ] = ∑ k = 1 M ( T p . k − T q , k ) M    M = { m 1 , m 2 , . . . , m k } 偏差[p,q]=\frac{\sum_{k=1}^{M}(T_{p.k}-T_{q,k})}{M} ~~ M=\{m_1, m_2,...,m_k\} [p,q]=Mk=1M(Tp.kTq,k)  M={m1,m2,...,mk}

偏移量随时间增大,采用线性回归方法估计

$$
偏差p,q = \alpha t + \beta

$$

其中,系数$ \alpha$ 、 β \beta β ( T p . k , T q , k ) (T_{p.k},T_{q,k}) (Tp.k,Tq,k)对计算确定

2.逻辑时钟同步

2.1 基本概念

物理时钟:真实事件

逻辑时钟:相对时间

确定事件的先后顺序,而不精确到事件。例子: 记录input.c的版本号, 而不是物理时间, 和input.o进行版本比对。

“之前”关系(happens-before): → \rightarrow

  • 同一进程:事件a在b之前出现,则: a → b a \rightarrow b ab
  • 不同进程:a为发送消息m,b为接收m,则: a → b a \rightarrow b ab
  • 具有传递性: a → b a \rightarrow b ab, b → c b \rightarrow c bc,则 a → c a \rightarrow c ac

并发事件(concurrent):

  • 两个事件相互对立。既不 a → b a \rightarrow b ab,不 b → a b \rightarrow a ba

2.2 Lamport算法:校正算法

(1)Lamport算法

C(a)表示事件a的时钟值。性质:

  • if a → b a\rightarrow b ab,then $C(a)<C(b) $
  • $\forall a,b ~~~~ C(a) \neq C(b) $
  • C是递增的

校正算法

  • a → b a\rightarrow b ab
  • if C ( b ) < C ( a ) C(b)<C(a) C(b)<C(a), then C ( b ) = C ( a ) + 1 C(b) = C(a) +1 C(b)=C(a)+1

三个进程,各有自己的局部时钟,他们速率不同;通过Lamport算法,校正时钟

校正算法:

  1. P i P_i Pi 在执行一个事件之前, P i P_i Pi执行 C i ← C i + 1 C_i \leftarrow C_i + 1 CiCi+1
  2. P i P_i Pi 在发送消息m给 P j P_j Pj时,时间戳 t s ( m ) ← C i ts(m) \leftarrow C_i ts(m)Ci
  3. P j P_j Pj接收到消息m后, C j ← m a x { C j , t s ( m ) } C_j \leftarrow max\{C_j, ts(m)\} Cjmax{Cj,ts(m)}

在这里插入图片描述

(2)全序多播:Lamport应用示例

问题:两个进程分别对同一个复制数据库进行更新时,造成不一致状态

原因:全局次序不一致。 u 1 → u 2 ; u 2 → u 1 u1→u2; u2→u1 u1u2;u2u1

在这里插入图片描述

解决方案:全序多播

  • 发送进程多播发送消息m时,给m带上当前时间戳ts

  • 当接收进程收到消息m后,存放其局部队列q,并按时间戳排序

  • 接收进程向所有进程多播发送应答

  • 当消息m被所有进程应答,且排在队列q队首后, 方可处理(递交给接收进程,从队列中删除)

定理:各个进程的局部队列的值最终都相同

2.3 向量时钟

(1)因果性

如果事件a, b存在因果关系, a为因, b为果, 则 C ( a ) < C ( b ) C(a)<C(b) C(a)<C(b); 但反之不一定成立。

通过向量时钟捕获因果关系

在这里插入图片描述

(2)Vector Clock

如果 V C ( a ) < V C ( b ) VC(a)<VC(b) VC(a)<VC(b), 则a与b为因果关系

(3)进程Pi上的向量时钟$VC_

i$的基本性质

  1. V C i [ i ] = n VC_i[i]=n VCi[i]=n, 在Pi中发生了n个事件
  2. V C i [ j ] = k VC_i[j]=k VCi[j]=k, Pi已知在Pj中发生了k个事件

(4)向量修改规则

  1. Pi在执行一个事件之前, Pi执行$VC_i[i]←VC_i[i]+1 $
  2. 当进程Pi发送消息m时,$ts(m)=VC_i $
  3. 当进程Pj收到m后,置$VC_j[k]=max{VC_j[k],ts(m)[k]} $

(4)Pi的消息m在进程Pk正确递交的条件:

  • $ts(m)[i] = VC_k[i]+1 $
  • $ts[m][j]≤VC_k[j] ~~for all i≠j $ (符合因果关系)

在这里插入图片描述

3.互斥控制

3.1基本概念

互斥访问:当一个进程使用某个共享资源,其他进程不允许对这个资源操作

临界区:对共享资源进行操作的程序段

基本方法:信号量、管程

问题:死锁、饥饿

3.2 集中式算法

协调者:确定那个进程可进入临界区

通信量:3个消息:请求-许可-释放

在这里插入图片描述

优点:通信量少,实现简单,不会死锁、饿死

缺点:单点失败;单点瓶颈(大规模系统中)

3.3 分布式算法(Ricart-Agrawala算法)

(1)算法

在一个进程P打算进入临界区R之前,向所有其他进 程广播消息 < 临 界 区 R 名 、 进 程 号 、 时 间 戳 > <临界区R名、进程号、时间戳> <R>

当一个进程P’收到消息后,做如下决定:

  • 若P’不在临界区R中,也不想进入R,它就向P发送OK;
  • 若P’已经在临界区R中,则不回答,并将P放入请求队列;
  • 若P’也同时要进入临界区R,但是还没有进入时,则将发来的消息和它发送给其余进程的时间戳对比。如果P时间戳小, 则向P发送OK;否则,不回答,并将P放入请求队列;

当P收到所有的OK消息后,进入R。否则,等待。

当P退出R时,如果存在等待队列,则取出全部请求者,向其发送OK消息

(2)举例

共有0,1,2三个进程,进程0,2申请进入临界区

在这里插入图片描述

(3)算法评价

优点:不会死锁和饿死

缺点:

  • n点失败
  • n点瓶颈
  • 2 ( n − 1 ) 2(n-1) 2(n1)个消息

改进方案:

  • 总是发送应答

  • 超时重发请求

  • 组通信(进程少且不改变组成员时)

  • 简单多数同意(>1/2)

3.4 令牌环算法

构造一个逻辑环,得到令牌才可进入临界区

问题:令牌丢失检测

在这里插入图片描述

3.5 三种互斥算法的比较

算法每次进出需要的消息进入前的延迟(按消息次数)存在问题
集中式32协调者崩溃
分布式2(n-1)2(n-1)n点崩溃
令牌环1到 ∞ \infty 0到n-1丢失令牌,进程崩溃

4.选举算法

4.1 基本概念

作用

  • 在分布式进程之间做出统一的的决定
  • 例如:确定协调者

前提

  • 每个进程具有唯一的号码,如IP地址
  • 每个进程知道其它进程的号码

选举标准:确定具有最大号码的进程

4.2 霸道(Bully)算法

将进程进行排序

  1. P向号码高的进程发E消息
  2. 如果没有响应,P选举获胜
  3. 如果有进程Q响应,则P结束,Q接管选举并继续下去。

在这里插入图片描述

4.3 环算法

所有进程按逻辑或物理次序排序,形成一个环

  1. 当一个进程P发现协调者C失效后,向后续进程发送E消息
  2. 每个进程继续向后传递E消息,直到返回P
  3. P再将新确定的协调者C’ 传给所有进程

在这里插入图片描述

4.4 无线网络系统的选举算法

选举一个协调者,它具有最大的能力

1、发起者,提出选举

在这里插入图片描述

2、向邻居结点扩展,形成一个生成树(spanning tree)

在这里插入图片描述

3、沿生成树向父节点返回 [ i , c m a x ] [i, c_{max}] [i,cmax] c m a x c_{max} cmax为最大值

4、发起者,向其余节点发布协调者

在这里插入图片描述

4.5 大型系统的选举

大型系统中需要选举多个节点

  • 如p2p系统中的超级节点

对如何选择超级节点(superpeer)的要求:

  • 普通节点对超级节点的访问延迟要小
  • 超级节点应均匀地分布在覆盖网络中
  • 相对于覆盖网络中的节点数量,应有一定数量的预先定义好的超级节点
  • 每个超级节点服务的普通节点个数不能超过规定的数量

例:一个小型chord系统m=8(长度), k=3(预留)

  • P AND 11100000作为超级节点的键值

  • N个节点中平均有 2 k 2^k 2k个超级节点

M维空间中的超级节点选举

  • 首先,在N个随机选择的节点中,放置N个令牌

  • 每个节点不允许拥有一个以上的令牌

  • 每个令牌具有排斥力,推动另一个令牌移动

  • 通过互相排斥,最终达到在空间中的均匀分布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python教程十 列表

列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进行的操作…

java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_3_Linux整起(Linux常见命令操作、Shell)

OS的一些基本概念简介&#xff0c;在下面两篇中已经介绍了一些&#xff1a; OS_Part_1整起&#xff08;进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制&#xff09;OS_Part_2整起~IO们那些事【包括五种IO模型&#xf…

爬虫内容学习-工具类---xpath-1

爬虫学习建议&#xff1a; 在编写python爬虫程序时&#xff0c;只需要做以下两件事&#xff1a; 发送GET请求&#xff0c;获取HTML [第一类]解析HTML&#xff0c;获取数据 [第二类] 这两件事&#xff0c;python都有相应的库帮你去做&#xff0c;你只需要知道如何…

ubuntu20.04 搭建kernel调试环境第四篇--图形化调试kernel

一、安装eclipse 1&#xff09;官网下载对应的版本&#xff08;eclipse-inst-jre-linux64.tar.gz&#xff09; Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects... 2&#xff09;…

群集【LNMP+SSL+nfs+负载均衡及高可用】

目录 &#x1f990;web1部署 &#x1f341;创建证书 &#x1f341;创建论坛 &#x1f990;mysql部署 &#x1f990;php部署 &#x1f990;nfs部署 &#x1f341;创建共享目录 &#x1f341;挂载目录 &#x1f990;LNMP测试 &#x1f990;web2部署 &#x1f990;lb1部署 &#x…

资料:成为全栈dApp开发者的学习计划

资料&#xff1a;成为全栈dApp开发者的学习计划 本篇介绍与区块链和去中心化应用程序有关的一切。 前提条件 任何面向对象编程语言的基础知识。Node.js和Npm。前端基础知识。如果你有兴趣做一个全栈的去中心化应用&#xff0c;而不仅仅是智能合约。 流程 去中心化技术和区块…

Mybatis:Mybatis动态SQL(8)

动态SQL1. 动态sql简介2. if3. where4. trim5. choose、when、otherwise6. foreachforeach实现批量添加foreach实现批量删除7. SQL片段8. 总结1. 动态sql简介 Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能&#xff0c;它存在的意义是为了解决拼接SQL语句…

CAS介绍

CAS介绍一、什么是CAS二、CAS是怎么实现的三、CAS应用场景3.1 实现原子类3.2 实现自旋锁四、CAS的 ABA问题4.1 什么是ABA问题4.2 ABA问题引来的bug4.3 解决方案一、什么是CAS CAS&#xff1a;全称Compare and swap&#xff0c;字面意思&#xff1a;“比较并交换”。一个 CAS 涉…

基于Oracle数据库的学生信息管理系统的设计与开发(JSP)

目 录 1 引言 1 1&#xff0e;1 课题来源及意义 1 1&#xff0e;2 研究内容与目标 1 1&#xff0e;3 本文的内容结构 2 1&#xff0e;4 本章小结 3 2 需求分析 4 2&#xff0e;1 系统功能需求 4 2&#xff0e;2 系统的性能需求 4 2&#xff0e;3 系统数据要求 5 2&#xff0e;4…

Linux恶意攻击自查方案

用户及用户文件检查 &#xff08;1&#xff09;passwd文件 文件权限 /etc/passwd默认权限为644&#xff0c;其最小权限为444&#xff0c;首先应对该文件权限进行检查&#xff0c;以确认配置是否正确&#xff1a; ls -l /etc/passwd 用户检查 查看passwd文件内容&#xff…

浅谈电缆行业MES系统解决方案

电缆行业虽然只是一个配套行业&#xff0c;却占据着中国电工行业1/4的产值。它产品种类众多&#xff0c;应用范围十分广泛&#xff0c;涉及到电力、建筑、通信、制造等行业&#xff0c;与国民经济的各个部门都密切相关。电缆还被称为国民经济的“动脉”与“神经”&#xff0c;是…

Guice + Jersey + Jetty 框架 - 学习笔记

因项目使用 Guice Jersey Jetty 框架&#xff0c;所有进行了学习&#xff0c;下面是学习笔记。 目录 一、Guice 1. 依赖注入方式&#xff1a; Inject 2. 依赖绑定(依赖注册)&#xff1a; bind() 3. 作用域 4. 基本使用 二、Jersey 使用内置容器为例&#xff08;使用J…

[附源码]Python计算机毕业设计单位库房管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

老公下班要跟我学测试,35岁3娃全职宝妈的逆袭之路

马上35了&#xff0c;当了5年全职宝妈&#xff0c;看起来我应该是幸福的&#xff0c;公婆一直在帮忙带娃&#xff0c;老公也舍得给我花钱&#xff0c;愿意把钱全都交给我&#xff0c;在家里不用做饭&#xff0c;家务有人帮把手&#xff0c;主要就是带娃。我应该是幸福的&#x…

说说真实Java项目的开发流程,以及面试前的项目准备说辞

介绍项目是必不可少的Java面试环节&#xff0c;求职者需要借此证明自己真实Java项目的经验&#xff0c;如果再做的好的话&#xff0c;需要借此展开自己的亮点说辞。 不过之前如果只有学习项目经验&#xff0c;比如是自己跑通一个项目&#xff0c;或者是在培训班里通过一个Sprin…

Centos7:Postgresql 14安装

文章目录安装Server配置数据目录创建数据存储目录配置环境变量&#xff0c;数据目录Reload systemd初始化DB启动数据库安装模块包postgresql14-contribpostgresql14-devel安装Server sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64…

(附源码)ssm高校实验室系统 毕业设计 800008

高校实验室管理系统 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是使用动态网页开发技术JSP&#xff0c;J…

前端js实现canvas压缩图片并上传

一. 上传前压缩图片的好处 可以减少用户的等待时间&#xff0c;提升使用体验&#xff0c;目前手机拍摄的图片文件大小一般在几 M 左右&#xff0c;文件直接上传时会有卡顿现象。可以减少服务端的存储空间。再次回去图片资源是也可以快速的加载。虽然目前阿里云的 oss 有相对应…

NPDP在国内有多少含金量?

产品经理国际资格认证&#xff0c;New Product Development Professional(NPDP)&#xff0c;由美国产品开发与管理协会&#xff08;PDMA&#xff09;所发起&#xff0c;是国际公认的唯一的新产品开发专业认证。是考察产品经理能力的证书。&#xff08;npdp产品经理资料文末&…

文本生成图像简述3--杂谈技术难点、研究意义、应用领域和目前的局限性

文本生成图像&#xff08;text-to-image&#xff09;指的是使用人工智能技术将文本转换为图像的过程&#xff0c;其可以根据给定文本生成符合描述的真实图像&#xff0c;其是多模态机器学习的任务之一&#xff0c;具有巨大的应用潜力&#xff0c;如视觉推理、图像编辑、视频游戏…