东北大学2023分布式操作系统考试题目及答案

news2024/11/19 2:36:45

Note:答案仅供参考,自己所写,不是标准答案,若发现错误,请指正,谢谢!

文章目录

  • 考试题目
  • 参考答案

考试题目

1、简述分布式系统的设计目标中开放性的特点有哪些?


























2、简述分布式体系结构中的层次结构,并举出一个层次结构的例子


























3、RPC是什么?简述RPC过程


























4、简述实体定位使用的转发指针方法,并简述它的优缺点


























5、下面表格中分别是进程1到进程6中消息的时间戳向量,在满足因果关系的前提下,试分析说明进程2中当前的消息m在哪些进程中能够递交,在哪些进程中暂时不能递交。
在这里插入图片描述

6、考虑如下图所示的chord系统:
(1)试为该系统建立指状表。
(2)根据指状表,试描述从结点11解析键值k=23的过程。
(3)如何判断是否有新结点加入了该系统?

在这里插入图片描述

7、由0到7号共计8个进程组成一个进程组,7号进程作为协作者。简述3号进程发现7号进程崩溃后,按照Bully算法选举新协作进程。

8、什么是拜占庭将军协议?假设有五个节点,其中一个发生了拜占庭故障,使用Lamport递归算法来找到这个错误点。

参考答案

1、简述分布式系统的设计目标中开放性的特点有哪些?

开放性:通过一系列的接口来提供服务,而这些接口的定义是符合某个标准

特点:

  • 互操作性: 不同系统依靠共同的标准, 可以依赖彼此的组件共同工作
  • 可移植性: 应用程序可在具备相同接口的、 不同分布式系统上运行
  • 灵活性: 可配置不同开发者的组件
  • 可扩展性: 可增减组件

2、简述分布式体系结构中的层次结构,并举出一个层次结构的例子

层次体系结构:系统由自上而下的不同层次的组件组成,只有相邻的层次可以通信,请求消息自上而下,响应自下而上.

举例:标准的OSI七层参考模型

3、RPC是什么?简述RPC过程
RPC:全称远程过程调用,像本地子程序一样,调用远地子程序;调用者和被调用者都不用考虑消息通信

RPC执行的主要步骤
在这里插入图片描述

  1. 客户过程以普通方式调用相应的客户存根

  2. 客户存根建立消息并激活内核陷阱

  3. 内核将消息发送到远程内核

  4. 远程内核将消息送到服务器存根

  5. 服务器存根取出消息中的参数后调用服务器的过程

  6. 服务器完成工作后将结果返回值服务器存根

  7. 服务器存根将它打包并激活内核陷阱

  8. 远程内核将消息发送至客户端内核

  9. 客户端内核将消息交给客户存根

  10. 客户存根从消息中取出结果返回给客户

效果:讲客户过程对客户存根发出的本地调用转换成对服务器过程的本地调用,而客户和服务器都不会意识到有中间步骤的存在。

4、简述实体定位使用的转发指针方法,并简述它的优缺点

转发指针:当实体从A移动到B之后,在A上设置一个指向B的引用

优点:客户可利用传统的命名服务

缺点:间址链可能会很长、链的中间节点需要维护转发信息、链容易断

目标:限制链的长度,保证链的鲁棒性

优化策略:通过在proxy中存储一个捷径(shortcut),重定向转发指针

  • 单独:仅有请求发起人,即初始proxy建立proxy短路
  • 全部:转发链上的所有proxy建立短路

5、下面表格中分别是进程1到进程6中消息的时间戳向量,在满足因果关系的前提下,试分析说明进程2中当前的消息m在哪些进程中能够递交,在哪些进程中暂时不能递交。
在这里插入图片描述
对于此题,需要分别分析两个条件是否满足。

**对于条件(1):消息由进程2发送,则首先需要满足 ** V 2 = L 2 + 1 V_2 = L_2 + 1 V2=L2+1

也就是对于每个进程的第一维数据(6,8,8,8,8,8)而言,9=8+1,所以可以看出进程1不能接收消息,需要等待,其余进程均满足条件(1)。

对于条件(2):消息由进程1发送,则需要满足** i ≠ j i \neq j i=j****(即所有进程排除第一维数据),有 ** V i ≤ L i V_i ≤ L_i ViLi

所以对于1-6这几个进程而言,排除第二维数据后,其余的数据都需要比进程2的各维数据相等或更大,所以可以看出,

  • 对于进程4而言7<9,所以进程4不能接收消息,需要等待;
  • 对于进程3而言4<5,所以进程3不能接收消息,需要等待;
  • 对于进程5而言3<4,所以进程5不能接收消息,需要等待;
  • 对于进程6而言10<11,所以进程6不能接收消息,需要等待;

综上两个条件,进程1,3,4,5,6需要等待

6、考虑如下图所示的chord系统:
(1)试为该系统建立指状表。
(2)根据指状表,试描述从结点11解析键值k=23的过程。
(3)如何判断是否有新结点加入了该系统?

在这里插入图片描述
(1)指状表

id/节点281118212228
1811182122282
2811182128282
3818182228282
411182128228
518282828818

(2):11→21→22→28

(3)判断加入节点:

要检查是否有新节点加入Chord系统,可以使用多种方法。一种方法是监视系统中每个节点的手指表项的变化。当一个新节点加入时,它将导致对部分或全部手指表进行更改。另一种方法是监视网络流星并查找任何表明已加入新节点的消息。最后,你还可以定期查询系统中的每个现有节点,并询问它们最近是否有任何新节点加入。

7、由0到7号共计8个进程组成一个进程组,7号进程作为协作者。简述3号进程发现7号进程崩溃后,按照Bully算法选举新协作进程。

(1)有3号进程主持选举,向4,5,6,7号进程发消息

在这里插入图片描述

(2)4,5,6号进程应答,通知3号进程停止

在这里插入图片描述

(3)进程4主持选举

在这里插入图片描述

(4)进程5,6应答,通知进程4停止

在这里插入图片描述

(5)进程5,6主持选举

在这里插入图片描述

(6)进程6应答,通知进程5停止

在这里插入图片描述

(7)进程6获胜,并通知所有进程

在这里插入图片描述

8、什么是拜占庭将军协议?假设有五个节点,其中一个发生了拜占庭故障,使用Lamport递归算法来找到这个错误点。

拜占庭将军协定问题:假设通信是可靠的,但进程可能是不可靠的,即,在不可靠的信息上试图通过消息传递方式达到一致时不可能的。

5个节点,其中1个节点错误,使用Lamport算法寻找错误节点,假设1号节点错误,Lamport算法共有4步

(1)正确节点发送真实信息,错误节点发送错误信息

  • 节点1:x, y, z, w → 错误节点,错误信息
  • 节点2:2 →真实信息
  • 节点3:3 →真实信息
  • 节点4:4 →真实信息
  • 节点5:5 →真实信息

(2)把第一步声明的结构组成向量形式:

  • 节点1: Got(1, 2, 3, 4, 5)
  • 节点2: Got(x, 2, 3, 4, 5)
  • 节点3: Got(y, 2, 3, 4, 5)
  • 节点4: Got(z, 2, 3, 4, 5)
  • 节点5: Got(w, 2, 3, 4, 5)

(3)每个节点将第(2)步中的向量传递给其他节点,其中错误节点继续发送错误信息,使用ERR表示错误信息

  • 节点1: G o t = [ 1 2 3 4 5 x 2 3 4 5 y 2 3 4 5 z 2 3 4 5 w 2 3 4 5 ] Got= { \left[ \begin{array}{ccc} 1 & 2 & 3 &4 & 5\\ x & 2 & 3 &4 & 5\\ y & 2 & 3 &4 & 5\\ z & 2 & 3 &4 & 5\\ w & 2 & 3 &4 & 5\\ \end{array} \right ]} Got= 1xyzw22222333334444455555
  • 节点2: G o t = [ E R R E R R E R R E R R E R R x 2 3 4 5 y 2 3 4 5 z 2 3 4 5 w 2 3 4 5 ] Got= { \left[ \begin{array}{ccc} ERR & ERR & ERR &ERR & ERR\\ x & 2 & 3 &4 & 5\\ y & 2 & 3 &4 & 5\\ z & 2 & 3 &4 & 5\\ w & 2 & 3 &4 & 5\\ \end{array} \right ]} Got= ERRxyzwERR2222ERR3333ERR4444ERR5555
  • 节点3: G o t = [ E R R E R R E R R E R R E R R x 2 3 4 5 y 2 3 4 5 z 2 3 4 5 w 2 3 4 5 ] Got= { \left[ \begin{array}{ccc} ERR & ERR & ERR &ERR & ERR\\ x & 2 & 3 &4 & 5\\ y & 2 & 3 &4 & 5\\ z & 2 & 3 &4 & 5\\ w & 2 & 3 &4 & 5\\ \end{array} \right ]} Got= ERRxyzwERR2222ERR3333ERR4444ERR5555
  • 节点4: G o t = [ E R R E R R E R R E R R E R R x 2 3 4 5 y 2 3 4 5 z 2 3 4 5 w 2 3 4 5 ] Got= { \left[ \begin{array}{ccc} ERR & ERR & ERR &ERR & ERR\\ x & 2 & 3 &4 & 5\\ y & 2 & 3 &4 & 5\\ z & 2 & 3 &4 & 5\\ w & 2 & 3 &4 & 5\\ \end{array} \right ]} Got= ERRxyzwERR2222ERR3333ERR4444ERR5555
  • 节点5: G o t = [ E R R E R R E R R E R R E R R x 2 3 4 5 y 2 3 4 5 z 2 3 4 5 w 2 3 4 5 ] Got= { \left[ \begin{array}{ccc} ERR & ERR & ERR &ERR & ERR\\ x & 2 & 3 &4 & 5\\ y & 2 & 3 &4 & 5\\ z & 2 & 3 &4 & 5\\ w & 2 & 3 &4 & 5\\ \end{array} \right ]} Got= ERRxyzwERR2222ERR3333ERR4444ERR5555

(4)每个节点检查接收向量,把某个值占多数的,放入向量中,生成结果向量

  • 节点1: Got(1, 2, 3, 4, 5)
  • 节点2: Got(unknown, 2, 3, 4, 5)
  • 节点3: Got(unknown, 2, 3, 4, 5)
  • 节点4: Got(unknown, 2, 3, 4, 5)
  • 节点5: Got(unknown, 2, 3, 4, 5)

综上,判断出1号节点出现错误,结果向量:[unknown, 2, 3, 4, 5]

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

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

相关文章

​燕东微科创板上市:市值276亿 亦庄国投与京东方是股东

雷递网 雷建平 12月16日北京燕东微电子股份有限公司&#xff08;简称&#xff1a;“燕东微”&#xff0c;股票代码为&#xff1a;“688172”&#xff09;今日在科创板上市&#xff0c;燕东微本次发行17986.5617万股&#xff0c;发行价21.98元&#xff0c;募资总额39.56亿元。燕…

关于hcaptcha (vm wasm ob)三合一

该文章主要提供交流学习使用&#xff0c;请勿利用其进行不当行为&#xff01; 如本篇文章侵犯了贵公司的隐私&#xff0c;请联系我立刻删除&#xff01; 如因滥用解密技术而产生的风险与本人无关&#xff01; 1 Hcaptcha hCaptcha 旨在解决机器学习中最劳动密集型的问题&am…

毕业设计 - 基于 java web的网上花店销售系统设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计数据流图功能模块2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 毕业设计项目: 网上花店销售系统的设计与实现 一、项目设计 1. 模块设计 数据流图 功能模块 1、首页&#xff08;主界面&#xff09; 提供简洁美观的主界…

Jenkins+Kubernetes企业级DevOps容器云平台

一、Kubernetes在DevOps中的作用 1、DevOps DevOps假导所有新的功能特性可以像流动的水一样,迭代到用户的终端,而水是不能讲流的,为了保证水流的质量,我们就必须在水流动的途中治理,直到最终交付到用户的手中。 DevOps是一套方法论、一系列的原则和实践,其主要目标为帮…

【Robot Framework】发送GET和POST请求

做接口自动化时&#xff0c;经常要使用GET与POST请求&#xff0c;那么如何使用RF发送对应的请求呢&#xff1f; 一、安装RequestsLibrary pip install robotframework-requests安装以后&#xff0c;导入到对应的测试套件或测试用例中. 本次主要介绍通过RequestsLibrary来实现…

JavaEE - JVM八股文(JVM内存区域划分,典型面试题,JVM类加载机制)

文章目录1. JVM运行时数据区&#xff08;内存区域划分&#xff09;2. JVM类加载机制常见面试题1. JVM运行时数据区&#xff08;内存区域划分&#xff09; JVM运行时数据区域也叫内存布局&#xff0c;但需要注意的时它和Java内存模型&#xff08;JMM&#xff09;不同&#xff0…

使用PyTorch进行知识蒸馏的代码示例

随着机器学习模型的复杂性和能力不断增加。提高大型复杂模型在小数据集性能的一种有效技术是知识蒸馏&#xff0c;它包括训练一个更小、更有效的模型来模仿一个更大的“教师”模型的行为。 在本文中&#xff0c;我们将探索知识蒸馏的概念&#xff0c;以及如何在PyTorch中实现它…

计算机毕设Python+Vue校园舆情监控系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C#修改富文本框(RichTextBox)指定内容颜色

1.前言 最近给客户做了一个协议解包与组包的工具&#xff0c;以便于他们给终端客户或者集成商使用&#xff0c;让客户能够快速集成产品协议&#xff0c;降低客户集成工作量&#xff0c;产品协议是基于JT/T808&#xff0c;但是有增加了自己的一些特殊修改。 客户使用的是C#开发…

数据库原理及MySQL应用 | 并发控制

无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制问题&#xff0c;MySQL通过多版本并发控制和加锁实现并发控制。 多用户并发执行事务访问同一个数据库时&#xff0c;可能引发脏写、脏读、不可重复读、幻读等一致性问题。并发事务访问相同记录的情况&#xff0…

Golang 【basic_leaming】数组

阅读目录Array(数组)数组定义数组的初始化方法一方法二方法三数组的遍历数组是值类型多维数组二维数组的定义二维数组的遍历数组练习题1、请求出一个数组的和以及平均值 for-range2、请求出一个数组的最大值&#xff0c;并得到对应的下标3、从数组 [1, 3, 5, 7, 8] 中找出和为 …

探花交友_第10章_搭建后台系统(新版)

探花交友_第10章_搭建后台系统&#xff08;新版&#xff09; 文章目录探花交友_第10章_搭建后台系统&#xff08;新版&#xff09;1.1 概述1.2 API网关1.2.1 搭建网关依赖引导类跨域问题配置类配置文件测试1.2.2 配置鉴权管理器1.3 Nacos配置中心1.3.1 添加依赖1.3.2 添加boots…

33.数据统计

数据统计 后台系统首页中&#xff0c;显示各种统计数据&#xff0c;比如&#xff1a;累计用户数、新增用户数、登录次数等内容。 解决方案 数据库表分析 一、数据采集 需求&#xff1a; 1、探花系统将用户操作日志写入RabbitMQ 2、管理后台获取最新消息&#xff0c;构造日…

SpringBoot+微信小程序实现的云音乐小程序系统 附带详细运行指导视频

文章目录一、项目演示二、项目介绍三、项目运行截图四、主要代码一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBoot微信小程序框架开发的云音乐微信小程序系统。首先&#xff0c;这是一个前后端分离的项目&#xff…

C语言百日刷题第十五天

前言 今天是刷题第15天&#xff0c;放弃不难&#xff0c;但坚持一定很酷~ 再刷一套模拟题 C语言百日刷题第十五天前言一、选择题二、判断题三、多选题四、填空题五、分析程序题一、选择题 1.下列选项中&#xff0c;不属于开发一个C语言应用程序的具体实现步骤的是&#xf…

为什么网络应用程序是今年的主要攻击媒介之一

网络犯罪分子在绕过最新的网络应用程序防火墙方面的独创性正在将互联网应用程序变成今年增长最快的攻击媒介。面向公众的 Web 应用程序现在是渗透组织边界的最广泛使用的攻击媒介。 根据卡巴斯基全球应急响应团队最近的一份报告&#xff0c;始于 Web 应用程序的攻击从 2020 年…

ocker高级篇1-dockeran安装mysql主从复制

大家好&#xff0c;咱们前面通过十篇的文章介绍了docker的基础篇&#xff0c;从本篇开始&#xff0c;咱们的《docker学习系列》将要进入到高级篇阶段(基础篇大家可以查看之前发布的文章)。 咱们先来介绍&#xff1a;docker复杂方式安装软件。通过按照mysql\redis两个案例来讲解…

XC6SLX100-3FGG484C规格、XC7A15T-2CPG236I产品概述及应用

Spartan-6系列提供领先的系统集成能力&#xff0c;为大批量应用提供最低的总成本。这个由13个成员组成的家族扩展了逻辑单元的密度&#xff0c;从3840个扩展到147443个&#xff0c;功耗仅为之前斯巴达家族的一半&#xff0c;并且具有更快、更全面的连接。 Spartan-6系列基于成熟…

拯救动画卡顿之FLIP

前置知识 什么是FPS FPS是浏览器的每秒的渲染帧数&#xff0c;也就是浏览器切换画面的次数&#xff0c;大多数设备的刷新率都是60FPS&#xff0c;一般来说FPS越低页面就会越卡顿。 什么是像素管道&#xff1f; 像素管道是浏览器单个帧的渲染流水线&#xff0c;如果其中有某…

vue数据双向绑定

5.Vue数据双向绑定 5.1.什么是双向数据绑定 Vue.js 是一个 MVVM 框架&#xff0c;即数据双向绑定&#xff0c;即当数据发生变化的时候&#xff0c;视图也就发生变化&#xff0c;当视图发生变化的时候&#xff0c;数据也会跟着同步变化。这也算是 Vue.js 的精髓之处了。 值得…