分布式算法作业
2.1 分析在同步和异步模型下,convergecast算法的时间复杂性。
解:
(1)在同步模型中
最坏情况下,算法执行的每一轮中只有一个msg传递,而此时生成树汇聚最大
值的算法最多执行n-1轮(即生成树中除了末端节点每一个节点只有一个子节
点),也就是说同步情况下时间复杂度为O(n-1)
(2)在异步模中
在异步模型的汇集算法的每个容许执行中,树中每个距离p r为t的处理器至多
在时刻t接收消息M,因此对于每个节点而言,它到它所有子节点中t最大的
路径决定了它本身时间花费。因此在最坏情况下,仍应该是同步模型下的最坏
情况,即生成树中除了末端节点每一个节点只有一个子节点,此时时间复杂度
仍为O(n-1)
2.2 G里一结点从pr可达当且仅当它曾设置过自己的parent变量。
证明:
(1)证:一结点从pr可达,则它曾设置过自己的parent变量。
因为图G是由parent和children确定的静态图,任一节点在收到M后才会加入到图中。即可达节点收到过M,执行了算法2.2的第五行。由于是容许执行的,所以第7行(parent:=j)也会执行。
(2)证:一节点设置过自己的parent变量,则其从pr可达。
若算法2.2的第7行执行过了,因为是容许执行,则必然有第5行也执行过了。即节点收到过M。而M又是从pr发出的,所以该节点是从pr可达的。
2.3 证明Alg2.3构造一棵以Pr为根的DFS树。
证明:
(1)算法2.3构造的图G必然是连通的。否则,设G存在邻居节点Pj和Pi。Pj从Pr可达,但Pi从Pr是不可达的。
则:
1)Pi的parent为空;
2)Pi不为Pj的child.
因为:
G里一结点从pr可达当且仅当它曾设置过自己的parent变量。
所以:
1)Pj的parent必然设置过了;
2)Pi的parent为nill;
3)Pi属于Pj的unexplored集合。
而算法的第11和14行决定了Pj会向Pi发送M,使得Pi的parent成为Pj,Pi成为Pj 的child。
这与假设的结果矛盾。故Pi必然也是从Pr可达的。
(2)算法2.3构造的图G必然是无环的。否则设G中有一个环,P1,P2,….,Pi,P1。令P1是该环中最早接收到M的节点。则Pi是从P1可达的,且P1的parent是Pi,P1是Pi 的child。
而Pi在收到M后,向P1发送M。因为P1的parent已经不为空,所以P1收到来自Pi的M时,根据第16行代码,P1会向Pi放回一个
故G是无环的。
(3)图G是一棵DFS树。只需证明在有子结点与兄弟结点未访问时,子结点总是先加入树中。
设有节点P1,P2和P3。P2和P3是P1的直接相邻节点。P1在第12~14行中先选择向P2发送M,则P1当且仅当P2向其返回一个
而P2仅在其向所有的相邻节点发送过M后才会向P1返回
所以P2的子节点是永远先于P3加入树中的,即G是DFS树。
2.4 证明Alg2.3的时间复杂性为O(m)。
证明:
(1):同步模型:每一轮中,根据算法,有且只有一个消息(M or Parent or Reject)在传输,从算法的第6 、14、16、20、25行发送消息的语句中可以发现:消息只发往一个处理器结点,除根结点外,所有的处理器都是收到消息后才被激活,所以,不存在多个处理器在同一轮发送消息的情况,所以时间复杂度与消息复杂度一致。
(2)异步模型:在一个时刻内至多有一个消息在传输,因此,时间复杂度也与消息复杂度一致。消息复杂度:对任一边,可能传输的消息最多有4个,即2 个M ,2 个相应M 的消息(Parent or Reject),所以消息复杂度为O(m)
综上,该算法的时间复杂度为O(m)
2.5 修改Alg2.3获得一新算法,使构造DFS树的时间复杂性为O(n)。
解:
两种考虑方式:
(1)在每个处理器中维护一本地变量,同时添加一消息类型,在处理器Pi转发M时,发送消息N通知其余的为访问过的邻居,这样其邻居在转发M时便不会向Pi转发。(2)在消息M和
两种方式都是避免向已转发过M的处理器发送消息M,这样DFS树外的边不再耗时,时间。
复杂度也降为O(n)
3.1 证明同步环系统中不存在匿名的、一致性的领导者选举算法。
证明:
在匿名系统中,每个处理器在系统中具有相同的状态机。由Lemma3.1可知,设算法A 是使环上某个处理器为leader 的算法。因为环是同步的,且只有一种初始配置。在每轮里,各处理器均发出同样的message ,所以在各轮里各个处理器接收到相同的message ,则状态改变也相同。所以所有处理要么同为leader ,要么同时不为leader 。
故同步环系统中匿名的、一致性的领导者选举算法的算法是不存在的。
3.2 证明异步环系统中不存在匿名的领导者选举算法。
证明:
每个处理器的初始状态和状态机相同,除了接收消息的时间可能不同外,接收到的消息序列也相同。
所以最终处理器的状态也是一致的。由于处理器处理一条消息至多需要1单位时间,若某时刻某个处理器宣布自己是leader ,则在有限时间内,其它处理器也会宣布自己是leader 。 故异步环系统中匿名的领导者选举算法是不存在的。
3.9 若将环R rev 划分为长度为j(j 是2的方幂)的连续片段,则所有这些片段是次序等价的。 证明:
对一个整数P(0≤P ≤n ?1),可以表示为:
P =∑a i .2i?1m
i=1
其中m=lg n
则有rev (P )=∑a i .2
m?1m i=1。 设P 、Q 在同一个片段上,P1、Q1在同一片段上,且设这两个片段时相邻的,由模运算的加法可得:
P1=P+l
Q1=Q+l
式中l 表示片段的长度,l=2k 。
又
P =∑a i .2i?1m
i=1
Q =∑b i .2i?1m
i=1
且P 、Q 在同一个片段上,有
|P-Q| 所以存在r(0≤r ≤k ),满足a r ≠b r 。否则,|P ?Q|≥l 。这与P 、Q 在同一个片段上矛盾。 设s =min?{r},则根据rev(P),rev(Q)的表示方法可得: sign(rev(P) - rev(Q)) = sign (a s - b s ) 而 m P1=P+l=∑a i.2i?1 +2k i=1 m Q1=Q+l=∑b i.2i?1 +2k i=1 显然,P与P1的前k位相同,Q与Q1的前k位相同。由0≤s≤k得 sign(rev(P1) - rev(Q1)) = sign (a s - b s) 这两个相邻片段是序等价的,根据等价的传递关系,可得所有的片段都是次序等价的。 算法设计与分析实验报告 学院信息科学与技术学院 专业班级软件工程3班 学号 20122668 姓名王建君 指导教师尹治本 2014年10月 实验四 矩阵相乘次序 一、问题提出 用动态规划算法解矩阵连乘问题。给定n 个矩阵{A 1,A 2,…,A n },其中A i 与A i+1是可乘的,i=1,2,…,n-1。要算出这n 个矩阵的连乘积A 1A 2…A n 。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A 是完全加括号的,则A 可表示为2个完全加括号的矩阵连乘积B 和C 的乘积并加括号,即A=(BC)。 例如,矩阵连乘积A 1A 2A 3A 4有5种不同的完全加括号的方式:(A 1(A 2(A 3A 4))),(A 1((A 2A 3)A 4)),((A 1A 2)(A 3A 4)),((A 1(A 2A 3))A 4),(((A 1A 2)A 3)A 4)。每一种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A 是一个p ×q 矩阵,B 是一个q ×r 矩阵,则计算其乘积C=AB 的标准算法中,需要进行pqr 次数乘。 (3)为了说明在计算矩阵连乘积时,加括号方式对整个计算量的影响,先考察3个矩阵{A 1,A 2,A 3}连乘的情况。设这三个矩阵的维数分别为10×100,100×5,5×50。加括号的方式只有两种:((A 1A 2)A 3),(A 1(A 2A 3)),第一种方式需要的数乘次数为10×100×5+10×5×50=7500,第二种方式需要的数乘次数为100×5×50+10×100×50=75000。第二种加括号方式的计算量时第一种方式计算量的10倍。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大的影响。于是,自然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n 个矩阵{A 1,A 2,…,A n }(其中矩阵Ai 的维数为p i-1×p i ,i =1,2,…,n ),如何确定计算矩阵连乘积A 1A 2…A n 的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。 二、求解思路 本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。本实验的算法思路是: 1)计算最优值算法MatrixChain():建立两张表(即程序中的**m 和**s ,利用二维指针存放),一张表存储矩阵相乘的最小运算量,主对角线上的值为0,依次求2个矩阵、3个矩阵…、直到n 个矩阵相乘的最小运算量,其中每次矩阵相乘的最小运算量都在上一次矩阵相乘的最小运算量的基础上求得,最后一次求得的值即为n 个矩阵相乘的最小运算量;另一张表存储最优断开位置。 2)输出矩阵结合方式算法Traceback():矩阵结合即是给矩阵加括号,打印出矩阵结合方式,由递归过程Traceback()完成。分三种情况: (1)只有一个矩阵,则只需打印出A1; (2)有两个矩阵,则需打印出(A1A2); (3)对于矩阵数目大于2,则应该调用递归过程Traceback()两次,构造出最优加括号方式。 三、算法复杂度 该算法时间复杂度最高为)(n 3 O 。 四、实验源代码 第三章部分习题答案 1、高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 答:高级调度主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说高级调度的调度对象是作业。 低级调度主要任务是:决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。 中级调度的任务:使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。 2、何谓作业、作业步和作业流? 答:作业(Job):作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。 作业步(Job Step)。通常,在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,我们把其 中的每一个加工步骤称为一个作业步,各作业步之间存在着相互联系,往往是把上一个作业步的输出作为下一个作业步的输入。 作业流:若干个作业进入系统后,被依次存放在外存上,这便形成了输入的作业流;在操作系统的控制下,逐个作业进行处理,于是便形成了处理作业流。 5、试说明低级调度的主要功能。 答:(1) 保存处理机的现场信息。 (2) 按某种算法选取进程。 (3) 把处理器分配给进程。 6、在抢占调度方式中,抢占的原则是什么? 答:(1) 优先权原则。 (2) 短作业(进程)优先原则。 (3) 时间片原则。 7、在选择调度方式和调度算法时,应遵循的准则是什么? 答:面向用户应遵循的准则是:(1) 周转时间短。(2) 响应时间快。 (3) 截止时间的保证。(4) 优先权准则。 面向系统应遵循的准则是:(1) 系统吞吐量高。(2) 处理机利用率好。(3) 各类资源的平衡利用。 《数据库系统基础》课后练习题 数据库系统基础 课后练习题 哈尔滨工业大学计算机科学与技术学院 《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 1.分别用关系代数、元组演算、SQL语句完成CAP数据库的查询。 CAP数据库有四个关系(表): Customers(cid, cname, city, discnt), 客户定义表,描述了客户的唯一标识 cid,客户名称cname,客户所在的城市city,以及该客户购买产品时所可能给予的折扣discnt Agents(aid, aname, city, percent), 代理商定义表,描述了代理商的唯一标识aid, 代理商名称aname, 代理商所在的城市city,以及该代理商销售产品时所可能给予的佣金/提成percent(以百分比形式表达) 哈尔滨工业大学计算机科学与技术学院 《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (1) 找出订单总价大于或者等于$1000的(ordno, pid)对 哈尔滨工业大学计算机科学与技术学院 《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (2) 找出所有价格在$0.50和$1.00之间的商品名字,包括边界价格 哈尔滨工业大学计算机科学与技术学院 《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (3) 找出订单价格低于$500的(ordno, cname)对,使用一次连接 哈尔滨工业大学计算机科学与技术学院 《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (4) 找出所有三月份接受的订单的(ordno, aname)对,使用一次连接 哈尔滨工业大学计算机科学与技术学院 《算法分析与设计》作业( 一) 本课程作业由两部分组成。第一部分为”客观题部分”, 由 15个选择题组成, 每题1分, 共15分。第二部分为”主观题部分”, 由简答题和论述题组成, 共15分。作业总分30分, 将作为平时成 绩记入课程总成绩。 客观题部分: 一、选择题( 每题1分, 共15题) 1、递归算法: ( C ) A、直接调用自身 B、间接调用自身 C、直接或间接 调用自身 D、不调用自身 2、分治法的基本思想是将一个规模为n的问题分解为k个规模 较小的字问题, 这些子问题: ( D ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 3、备忘录方法的递归方式是: ( C ) A、自顶向下 B、自底向上 C、和动态规划算法相同 D、非递归的 4、回溯法的求解目标是找出解空间中满足约束条件的: ( A ) A、所有解 B、一些解 C、极大解 D、极小解 5、贪心算法和动态规划算法共有特点是: ( A ) A、最优子结构 B、重叠子问题 C、贪心选择 D、 形函数 6、哈夫曼编码是: ( B) A、定长编码 B、变长编码 C、随机编码 D、定 长或变长编码 7、多机调度的贪心策略是: ( A) A、最长处理时间作业优先 B、最短处理时间作业优 先 C、随机调度 D、最优调度 8、程序能够不满足如下性质: ( D ) A、零个或多个外部输入 B、至少一个输出 C、指令的确定性 D、指令的有限性 9、用分治法设计出的程序一般是: ( A ) A、递归算法 B、动态规划算法 C、贪心算法 D、回溯法 10、采用动态规划算法分解得到的子问题: ( C ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 11、回溯法搜索解空间的方法是: ( A ) A、深度优先 B、广度优先 C、最小耗费优先 D、随机搜索 12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策 有可能导致算法: ( C ) A、所需时间变化 B、一定找到解 C、找不到所需的解 D、性能变差 13、贪心算法能得到: ( C ) A、全局最优解 B、 0-1背包问题的解 C、背包问题的 解 D、无解 14、能求解单源最短路径问题的算法是: ( A ) A、分支限界法 B、动态规划 C、线形规划 D、蒙特卡罗算法 15、快速排序算法和线性时间选择算法的随机化版本是: 哈尔滨工业大学 <<数据库系统>> 实验报告之一 (2014年度春季学期) 实验一交互式SQL语言 一、实验目的 ●掌握SQL语句的语法 ●着重熟悉掌握利用SQL编写Select查询的方法 ●熟悉SQLite的用法 二、实验内容 ●1) 双击打开sqlite3.exe,该程序为SQLite数据库管理系统 ●2) 利用.help查看SQLite支持的控制台系统命令。注意系统命令结尾处 没有结束符“;” ●3) 阅读.help中对.databases 命令的说明,并查看输出结果 ●4) 阅读.help中对.open命令的说明,并使用该命令创建一个数据库(名 字任意)后缀名统一为“.db3”(可以没有后缀名,但不推荐) ●5) 再次运行.databases 命令,与步骤3的输出结果对比 ●6) 阅读.help中对.tables命令的说明,并使用该命令查看当前数据库的所 有表 ●7) 创建满足要求的关系表(使用create table) ●表一 ●表名:College(存储大学的信息) ●属性:cName(字符串存储的大学名字),state(字符串格式的大学所在 州),enrollment(整数形式的大学入学学费) ●表二 ●表名:Student(存储学生的信息) ●属性:sID(整数形式的学号),sName(字符串形式的学生名字),GPA (小数形式的成绩),sizeHS(整数形式的所在高中规模) ●表三 ●表名:Apply(存储学生申请学校的信息) ●属性:sID(整数形式的学号),cName(字符串形式的大学名字),major (字符串形式的专业名字),decision(字符串形式的申请结果) ●8)利用.tables查看当前数据库中的表,对比步骤6中的运行结果 ●9) 利用如下命令,将存储在txt文件中的元组导入数据库的关系中●.separator "," ●.import dbcollege.txt College ●.import dbstudent.txt Student ●.import dbapply.txt Apply 第1章分布式计算概述 一、选择题 1,CD 2,ABC 3,ABCD 4,ACD 二、简答题 1,参考1.1.1和节 2,参考1.1.2节 3,分布式计算的核心技术是进程间通信,参考1.3.2节 4,单播和组播 5,超时和多线程 三、实验题 1.进程A在进程B发送receive前发起send操作 进程A进程B 发出非阻塞send操 作,进程A继续运行 发出阻塞receive操 作,进程B被阻塞进程B在进程A发起send前发出receive操作 发出非阻塞send 操作,进程A 继续运行 发出阻塞receive 操作,进程B 被阻塞 收到进程A 发送的数据,进程B 被唤醒 2. 进程A 在进程B 发送receive 前发起send 操作 进程A 进程B 发出阻塞send 操作, 进程A 被阻塞 发出阻塞receive 操作,进程B 被阻塞 进程B 在进程A 发起send 前发出receive 操作 发出阻塞send操作,进程A被阻塞 发出阻塞receive操作,进程B 被阻塞 收到进程A发送的数据,进程B 被唤醒 收到进程B返回的数 据,进程A被唤醒 3.1).在提供阻塞send操作和阻塞receive操作的通信系统中在提供非阻塞send操作和阻塞receive操作的通信系统中2).P1,P2,P3进程间通信的顺序状态图 m1 m1 m2 m2 第2章分布式计算范型概述 1.消息传递,客户-服务器,P2P,分布式对象,网络服务,移动代理等 2.分布式应用最广泛最流行的范型是客户-服务器范型,参考节 3.分布式应用最基本的范型是消息传递模型,参考节 4.参考节,P2P应用有很多,例如Napster,迅雷,PPS网络电视等 5.参考节 6.参考节 7.略 8.消息传递模式是最基本的分布式计算范型,适用于大多数应用;客户-服务器范型是最 流行的分布式计算范型,应用最为广泛;P2P范型又称为对等结构范型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象范型,是抽象化的远程调用,适用于复杂的分布式计算应用等。 9.略 10.中间件又称为代理,中间件为参与对象提供内容抽象,隐藏对象引用,起到中介作用。 11.略 第3章 Socket编程与客户服务器应用开发 一、填空题 1.数据包socket,流式socket 2.无连接方式,面向连接方式 3.数据层,业务层,应用层 4.迭代服务器和并发服务器 5.有状态服务器和无状态服务器 二、简答题 1.API:Application Programming Interface,应用程序编程接口,是一些预先定义 的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能 力,而又无需访问源码,或理解内部工作机制的细节 Socket API:套接字应用程序编程接口,适用于进程间通信的套接字应用程序编程 接口 《算法分析与设计》作业(一) 本课程作业由两部分组成。第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。第二部分为“主观题部分”,由简答题和论述题组成,共15分。作业总分30分,将作为平时成绩记入课程总成绩。 客观题部分: 一、选择题(每题1分,共15题) 1、递归算法:(C ) A、直接调用自身 B、间接调用自身 C、直接或间接调用自身 D、不调用自身 2、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的字问题,这些子问题:(D ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 3、备忘录方法的递归方式是:(C ) A、自顶向下 B、自底向上 C、和动态规划算法相同 D、非递归的 4、回溯法的求解目标是找出解空间中满足约束条件的:(A ) A、所有解 B、一些解 C、极大解 D、极小解 5、贪心算法和动态规划算法共有特点是:( A ) A、最优子结构 B、重叠子问题 C、贪心选择 D、形函数 6、哈夫曼编码是:(B) A、定长编码 B、变长编码 C、随机编码 D、定长或变长编码 7、多机调度的贪心策略是:(A) A、最长处理时间作业优先 B、最短处理时间作业优先 C、随机调度 D、最优调度 8、程序可以不满足如下性质:(D ) A、零个或多个外部输入 B、至少一个输出 C、指令的确定性 D、指令的有限性 9、用分治法设计出的程序一般是:(A ) A、递归算法 B、动态规划算法 C、贪心算法 D、回溯法 10、采用动态规划算法分解得到的子问题:( C ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 11、回溯法搜索解空间的方法是:(A ) A、深度优先 B、广度优先 C、最小耗费优先 D、随机搜索 12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策有可能导致算法:( C ) A、所需时间变化 B、一定找到解 C、找不到所需的解 D、性能变差 13、贪心算法能得到:(C ) A、全局最优解 B、0-1背包问题的解 C、背包问题的解 D、无解 14、能求解单源最短路径问题的算法是:(A ) A、分支限界法 B、动态规划 C、线形规划 D、蒙特卡罗算法 15、快速排序算法和线性时间选择算法的随机化版本是:( A ) A、舍伍德算法 B、蒙特卡罗算法 C、拉斯维加斯算法 D、数值随机化算法 主观题部分: 二、写出下列程序的答案(每题2.5分,共2题) 1、请写出批处理作业调度的回溯算法。 #include 1.1算法:是对特定问题求解步骤的一种描述,是指令的有限序列。 程序:当一个算法用某种程序设计语言来描述时,得到的就是程序,也就是说,程序是用某种程序设计语言对算法的具体实现. 算法有输入、输出、确定性、能行性和有限性等特征,当不具备有穷性时,只能叫做计算过程,而不能称之为算法,算法可以终止,而程序没有此限制。 1.2程序证明和程序测试的目的各是什么? 程序证明是确认一个算法能正确无误的工作. 程序测试的目的是发现错误 1-9解: n!的递归定义: 1 1 )! 1 (* { != ≥ - =n n n n n 求解n!的递归函数 long Factorial (long n) { if(n<0) { cout<<”error!”; exit(0); } if(n==0) return 1; else return n *Factorial (n-1); } 1-10使用归纳法,证明上题所设计的计算n!的递归函数的正确性 证明(归纳法证明): (1)首先,如果n=0,那么程序执行 if(n==0) return 1; 返回1,算法显然正确; (2)假定函数Factorial对n 分布计算环境作业 一.通过生成进程来构建并发服务器与使用多线程来构建并发服务器相比有优点也有缺点,请分析这两种方式的优缺点。你认为基于CORBA实现的并发服务器是基于生成进程的方法,还是基于多线程的方法?为什么? 并发服务器需要同时处理多个请求。 采用多进程: 优点:1)处理各个请求的进程之间隔离性好。 缺点:1)创建/撤销处理各个请求的进程的代价大;2)分发器(主进程……)将请求发送到另一个进程的代价大(如果能说明为什么代价大更好);3)如果各个子进程间需要通信,代价大。 采用线程: 优点:1)创建/撤销处理各个请求的线程的代价小;2)分发器(主线程……)将请求发送到另一个线程的代价小(如果能够说明为什么代价小更好);3)如果各个线程间需要通信,代价小。 缺点:1)一个线程出问题,可能会影响其他线程。 CORBA:使用多线程技术实现并发服务器。因为如果采用多进程实现,有以下问题:1)服务器端要同时维护多个可被用户访问的CORBA对象,这些对象的数量常常会比较大,为每个服务对象起一个进程,进程数会比较大,系统开销过大;2)对于远程方法调用来说,请求的参数比较复杂,主进程将请求再发送给子进程,开销比较大;3)主进程、子进程都需要ORB的Runtime,进程启动/撤销的代价大;所以如果采用多进程的话实现并发CORBA服务器很困难。 主要问题: (一)针对性不够: a)直接罗列进程和线程的优缺点 (二)理由不够充分: a)为支持高并发及高可用,所以多线程或多进程 b)为支持稳定性和健壮性,所以多线程或多进程 c)ORB拿到请求后要决定哪一个对象实例完成这个请求,送过去,这种工作过程类似于线程算法设计与分析(作业三)
第三章部分习题答案
数据库系统基础课后题
算法分析与设计作业及参考答案样本
HIT软件学院数据库实验1
《分布式计算、云计算与大数据》习题参考解答
最新算法分析与设计作业(一)及参考答案讲课讲稿
算法部分作业答案要点
北邮分布式计算环境课堂作业答案及点评
《算法分析与设计》作业参考答案