高级操作系统复习Word文档格式.docx
- 文档编号:20258237
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:34
- 大小:197.57KB
高级操作系统复习Word文档格式.docx
《高级操作系统复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《高级操作系统复习Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
高
低
所有的节点使用的操作系统是否相同
是
否
操作系统拷贝数目
1
N
通信基于的实体
共享内存
消息
文件
特定模型
资源管理
全局,集中管理
全局,分布管理
各节点自行管理
可扩展性
部分
各系统不同
开放性
封闭的
开放的
5.什么是客户端-服务器模型?
客户端-服务器模型分成,服务器端和客户端,服务器端和客户端进行交互完成一定的功能。
服务器端是实现某个特定服务的进程,客户端是向服务器请求服务的进程,它向服务器发送一个请求,随后等待服务器的应答。
这种客户-服务器的交互也称为请求-应答行为。
6.分布式系统中的硬件
(1)根据是否共享存储器分为:
多处理器系统:
共享存储器
多计算机系统:
不共享存储器
•同构的:
相同计算机,单一互联网络
•异构的:
不同计算机,通过不同网络互连
(2)根据网络互连体系结构分为:
总线型:
使用一根主干线连接
交换型:
各机器之间用独立线路相连
第二章
1.什么是远程过程调用?
远程过程调用的步骤。
远程过程调用是指本地程序调用位于其他机器上的进程,调用方通过消息的形式把参数传递到被调用方的进程,然后等待被调用方执行完后用消息的方式把结果传回调用方。
具体步骤是:
(1)客户过程以正常的方式调用客户存根
(2)客户存根生成一个消息,然后调用本地操作系统
(3)客户端操作系统将消息发送给远程操作系统
(4)远程操作系统将消息交给服务器存根
(5)服务器存根将参数提取出来,然后调用服务器
(6)服务器执行要求的操作,操作完成后将结果返回给服务器存根
(7)服务器存根将结果打包成一个消息,然后调用本地操作系统
(8)服务器操作系统将含有结果的消息发送回客户端操作系统
(9)客户端操作系统将消息交给客户存根
(10)客户存根将结果从消息中提取出来,返回给调用它的客户过程
2.什么是远程对象调用?
远程对象调用指的是在本地调用位于其他机器上的对象,和远程过程调用主要的区别在于方法被调用的方式。
在远程对象调用中,远程接口使每个远程方法都具有方法签名。
如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被远程对象调用的客户方所调用。
在远程过程调用中,当一个请求到达远程过程调用的服务器时,这个请求就包含了一个参数集和一个文本值。
3.消息持久通信与暂时通信的区别?
消息持久通信指的是,需要传输的消息在提交之后由通信系统来储存,直到将其交付给接受者为止,在将消息成功交付给下一个服务器之前消息一直储存在通信服务器上,因此发送消息的程序不必在发送消息后保持运行,同样要接受消息的应用程序在消息提交的时候可以不处于运行状态。
消息暂时通信指的是通信系统只是在发送和接收消息的应用程序运行期间存储消息,否则消息就会被丢弃。
4.消息同步通信与异步通信的区别?
异步通信特征在于发送者要把传输的消息提交之后立即执行其他的程序,这意味着该消息存储在位于发送端主机的本地缓冲区里中,或者存储在送达的第一个通信服务器上的缓冲区上中。
而对于同步通信来说,发送者在提交信息之后会被阻塞直到消息已经到达并储存在接收主机的本地缓冲区中以后也就是消息确实已经传到接收者之后,才会继续执行其他程序。
5.给出示意图,能够判断消息通信的类型。
a)持久异步通信b)持久同步通信
c)暂时异步通信d)基于接收的暂时同步通信
e)基于交付的暂时同步通信f)基于响应的暂时同步通信
第三章
1.进程和线程的比较。
进程定义为执行中的程序。
未引入线程前是资源分配单位(存储器、文件)和CPU调度(分配)单位。
线程是CPU调度单位,拥有线程状态、寄存器上下文和栈这些资源,也有就绪、阻塞和执行三种基本状态。
(1)对于地址空间和其他资源(如打开文件)来说,进程间是相互独立的,同一进程的各线程间共享该进程地址空间和其他资源--某进程内的线程在其他进程不可见。
(2)在通信上,进程间通信通过IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信--需要进程同步和互斥手段的辅助,以保证数据的一致性。
(3)在调度上,线程上下文切换比进程上下文切换要快得多。
线程是CPU调度单位,而进程只作为其他资源分配单位。
线程的创建时间比进程短;
线程的终止时间比进程短;
同进程内的线程切换时间比进程短;
因此,多线程能提高性能,线程不像进程那样彼此隔离,并受到系统自动提供的保护,因此多线程应用程序开发需要付出更多努力
2.多线程服务器的优点?
多线程技术不仅能够显著简化服务器代码,还能够使得应用并行技术来开发高性能的服务器变得更加容易,即使在单处理器系统上也是如此。
多线程能够保留顺序处理的思路,使用阻塞性系统的系统调用,仍然能到达并行处理的目的,提高了系统的性能。
3.代码迁移的动机有哪些?
代码迁移指的是将程序(或执行中的程序)传递到其它计算机。
迁移动机:
(1)实现负载均衡:
将进程从负载重的系统迁移到负载轻的系统,从而改善整体性能。
(2)改善通信性能:
交互密集的进程可迁移到同一个节点执行以减少通信开销,当进程要处理的数据量较大时,最好将进程迁移到数据所在的节点。
(3)可用性:
需长期运行的进程可能因为当前运行机器要关闭而需要迁移
(4)使用特殊功能:
可以充分利用特定节点上独有的硬件或软件功能
(5)灵活性:
客户首先获取必需的软件,然后调用服务器
4.进程对资源的绑定类型有哪些?
5.资源对机器的绑定类型有哪些?
掌握迁移代码时,根据引用本地资源方式不同应采取的做法。
进程对资源的绑定类型有三类,分别是按标志符(URL)、按值和按类型。
资源对机器绑定类型分成:
未连接(数据文件)、附着连接(数据库)和紧固连接(本地设备)三类。
6.处理机分配的超载者启动的分布式启发式算法思想。
算法描述:
当一个进程创建时,若创建该进程的机器发现自己超载,就将询问消息发送给一个随机选择的机器,询问该机器的负载是否低于一个阀值。
1)如果是,那么该进程就被传送到该机器上去运行。
2)否则,就再随机地选择一台机器进行询问。
这个过程最多执行N次,若仍然找不到一台合适的机器,那么算法将终止,新创建的进程就在创建它的机器上运行。
算法分析:
当整个系统负载很重的时候,每一个机器都不断地向其他机器发送询问消息以便找到一台机器愿意接收外来的工作。
在这种情况下,所有机器的负载都很重,没有一台机器能够接收其它机器的工作,所以,大量的询问消息不仅毫无意义,而且还给系统增添了巨大的额外开销。
7.处理机分配的欠载者启动的分布式启发式算法思想。
在这个算法中,当一个进程结束时,系统就检查自己是否欠载。
如果是,它就随机地向一台机器发送询问消息。
如果被询问的机器也欠载,则再随机地向第二台、第三台机器发送询问消息。
如果连续N个询问之后仍然没有找到超载的机器,就暂时停止询问的发送,开始处理本地进程就绪队列中的一个等待进程,处理完毕后,再开始新一轮的询问。
如果既没有本地工作也没有外来的工作,这台机器就进入空闲状态。
在一定的时间间隔以后,它又开始随机地询问远程机器。
在欠载者启动的分布式启发式算法中,当系统繁忙时,一台机器欠载的可能性很小。
即使有机器欠载,它也能很快地找到外来的工作。
在系统几乎无事可做时,算法会让每一台空闲机器都不间断地发送询问消息去寻找其它超载机器上的工作,造成大量的系统额外开销。
但是,在系统欠载时产生大量额外开销要比在系统过载时产生大量额外开销好得多。
8.什么软件代理?
举例说明其作用。
软件代理是一些独立的单元,能与其他的代理进行协作,一同执行任务。
定义为对环境的变化做出反应,并且启动这种变化的自治进程,而且可以与用户代理或其他代理协同。
与进程的区别在于能够对自己执行操作,在适当的时候采取主动。
代理分类:
合作代理:
通过协作达到某个共同的目标:
会议安排
移动代理:
能够在不同机器间迁移
接口代理:
协助最终用户使用应用程序,拥有学习能力:
促成买卖
信息代理:
管理来自多个信息源的信息:
排序、过滤和比较
固定信息代理:
电子邮件代理
移动信息代理:
网络漫游,搜集所需信息
第四章
1.DNS名称解析的方法有哪两种?
各自优缺点?
(1)迭代名称解析:
每个服务器只能解析自己下面的路径服务器,把服务器的地址给解析程序,然后解析程序继续访问下一个服务器一直到实体。
优点:
名称服务器而外负担小
缺点:
通信开销大
(2)递归名称解析:
在每一台服务器都使用递归解析。
缓存效果更有效;
减少通信开销
要求名称服务器有较高性能
2.移动实体的定位的方法有哪些?
简单方法有:
(1)广播和多播
(2)转发指针
高级方法有:
(1)基于起始位置的方法
(2)分层方法
3.描述分层方法中查找一实体的过程。
(1)希望定位实体E的客户向它所在的叶域D的目录节点发送了一个查找请求
(2)如果叶域D的目录节点中没有存储该实体的位置记录,那么就说明该实体现在不在D中。
因此这个节点会把请求转发给它的父节点。
(3)如果父节点也没有E的位置记录,那么就会把查找请求转发给更高一层的域,依次类推
(4)如果节点M存储了E的位置记录,那么一旦请求到达M后,就可以知道E位于节点M代表的域中,M存储了一条位置记录,其中包含了一个指向其子域的指针
(5)然后M就把请求转发给那个子域的目录节点,那个子域会依次向树的下方转发请求,直到请求最终到达叶节点为止。
存储在叶节点的位置记录会包含E在哪一个叶域中的地址。
(6)将该地址返回给发送请求的客户。
4.描述分层方法中插入一实体的过程。
(1)实体E在叶域D中创建了一个复制实体,需要在这个复制实体中插入E的地址。
插入操作从D的叶节点开始,然后D会立即把插入请求转发给它的父节点。
(2)父节点也转发插入请求,直到插入请求到达已经为E存储了位置记录的目录节点M为止。
(3)节点M在E的位置记录中存储了一个指针,这个指针指向转发插入请求的那个子节点,该子节点会建立一条关于E的位置记录,这条位置记录中包含一个指针,该指针指向转发请求的下一层节点。
这个过程会连续进行,直到到达发起请求的叶节点为止
(4)最后,那个叶节点会建立一条记录,这条记录包含实体在关联叶域中的位置。
5.掌握删除无引用实体的方法。
(1)引用计数方法:
包括简单引用计数和高级引用计数方法
在通信不可靠的情况下维护正确的引用计数所存在的问题
a)向其他进程复制引用计数之后再递增引用计数b)解决方法
a)加权引用计数中权数的初始值b)创建新引用时的权数值
在引用的部分权数达到1时创建一个间接权数在世代引用计数中创建和复制引用
(2)引用列表方法:
在骨架端维护一张明确的列表,持续跟踪引用他的代理。
不需要可靠通信;
进程发生故障时,容易保持引用列表的一致性
引用列表的规模问题---分发租用
第五章
1.Lamport时间戳算法的思想?
(1)网络上的每个系统(站点)维护一个计数器,起时钟的作用
(2)每个站点有一个数字型标识,消息的格式为(m,Ti,i),m为消息内容,Ti为时间戳,i为站点标识
(3)当系统发送消息时,将时钟加一
(4)当系统j接收消息时,将它的时钟设为当前值和到达的时间戳这两者的最大者加一
(5)在每个站点,时间的排序遵循以下规则:
对来自站点i的消息x和站点j的消息y,如果
•Ti<
Tj或
•Ti=Tj,且i<
j
–则说消息x早于消息y
2.什么是(一致的)全局状态?
全局状态:
定义了每个进程的本地状态和正在传输中的消息.可以用“切口”的图示表示(下)
一致的全局状态:
如果已经记录了一个进程P收到了来自进程Q的一条消息,那么也应该记录Q确实已经发送了那条消息。
(a)一致的切口(b)不一致的切口
分布式快照算法:
分布式快照反映了该系统可能处于的状态,它的基本思想是,每个进程记录它的状态,对每个进入通道来记录发送给它的消息。
对每个通道,进程记录在它自己记录下状态后和在发送方记录下它自己状态之前到达的任何消息。
3.选举算法中Bully算法和环算法的思想?
选择一个进程作为协调者、发起者或其他特殊角色,一般选择进程号最大的进程(假设每个进程都知道其他进程的进程号,但不知道是否还在运行)它的目的是保证在选举之行后,所有进程都认可被选举的进程。
Bully算法:
当进程P注意到需要选举一个进程作协调者时:
(1)向所有进程号比它高的进程发ELECTION消息
(2)如果得不到任何进程的响应,进程P获胜,成为协调者
(3)如果有进程号比它高的进程响应,该进程接管选举过程,进程P任务完成
(4)当其他进程都放弃,只剩一个进程时,该进程成为协调者
(5)一个以前被中止的进程恢复后也有选举权
进程4启动选举
进程5和进程6响应,接管选举,成为协调者
进程6响应进程5的消息,接管选举,进程6成为协调者,通知所有进程
4.选举算法中环算法的思想?
不使用令牌,按进程号排序,每个进程都知道自己的后继者,当进程P注意到需要选举一个进程作协调者时:
(1)创建一条包含该进程号的ELECTION消息,发给后继进程
(2)后继进程再将自己的进程号加入ELECTION消息,依次类推
(3)最后回到进程P,它再发送一条COORDINATOR消息到环上,包含新选出的协调者进程(进程号最大者)和所有在线进程,这消息在循环一周后被删除,随后每个进程都恢复原来的工作。
5.掌握分布式互斥的三种算法及其区别?
A.集中式算法:
如果一个进程要进入临界区,它要向协调者发送一个请求信息,说明它想要进入哪个临界区并请求允许:
(1)如果当前没有其它进程在该临界区,协调者就发送允许进入的应答消息。
收到应答后,该请求进程即进入临界区。
(2)若当前有进程在该临界区,协调者不能同意该请求,拒绝进入的方法依系统而定(可以不发送应答或发一个“拒绝请求”的应答)。
B,分布式算法:
(1)当进程想进入临界区时,它向所有其他进程发一条打了时间戳的消息Request
(2)当收到所有其他进程的Reply消息时,就可以进入临界区了
(3)当一个进程收到一条Request消息时,必须返回一条Reply消息:
–如该进程自己不想进入临界区,则立即发送Reply消息
–如该进程想进入临界区,则把自己的Request消息时间戳与收到的Request消息时间戳相比较,
•如自己的晚,则立即发送Reply消息
•否则,就推迟发送Reply消息
a)进程0和2都想进入临界区
b)进程0的时间戳低,抢先进入临界区
c)进程0退出临界区后,发应答给进程2,进程2随后进入临界区
C,令牌环算法:
(1)构造进程逻辑环,环中为每个进程分配了一个位置
(2)令牌在环上顺序循环传播
(3)获得令牌的当前进程
–若想进入临界区,则进入;
退出时将令牌向后传;
不允许使用同一令牌进入另一临界区
–若不想进入临界区,则直接将令牌向后传;
(4)令牌丢失时产生新令牌
(5)某进程崩溃时,绕过该进程
三种互斥算法的比较
算法
每次进/出临界区所需消息次数
进入前的延迟
(消息次数)
问题
集中式
3
2
协调者崩溃
分布式
2(n–1)
任一进程崩溃
令牌环
1to
0ton–1
丢失令牌,
进程崩溃
6.掌握实现事务的两种方法。
(1)私有工作空间:
当一个进程开始一个事务时,为进程提供一个私有工作空间,包含进程有权访问的所有对象。
进程的读写操作在私有工作空间进行,而不对实际的文件系统进行。
如果事务中止,私有工作空间被释放,指向的私有块被删除。
如果事务提交,私有索引被移到父辈空间,不再被访问的块被释放掉。
a)包含三个块的文件及其索引
b)块0被修改,块3被添加后的情况c)事务提交之后
(3)写前日志(writeaheadlog):
先写日志,再做实际修改。
日志内容:
哪个事务在对文件进行修改,哪个文件和数据被改动,新值和旧值是什么…
日志写入后,改动才被写入文件
事务中止,使用写前日志回退到原来的状态;
借助稳定存储器中的写前日志:
当系统崩溃后,完成事务或取消事务
7.死锁预防的等-死算法和伤-等算法
(1)等-死算法:
由于使用了时间戳,当请求被占用的资源时只可能有两种情况:
–老进程请求被新进程占用的资源,
–或者,新进程请求被老进程占用的资源
一种情况应该允许进程等待,另一种情况应该中止进程。
也即等-死算法
(2)伤-等算法:
允许抢占:
假设只允许老进程抢占新进程,
因此图a被标记为抢先,图b为等待。
这种算法称为伤-等算法(wound-wait),因为一个事务可能会受到伤害(实际是被中止)而其他的事务等待。
8.举例说明集中式的死锁检测中的假死锁问题。
PA和PB运行在机器0上,C运行在机器1上。
共有三种资源S,R和T。
如图,一开始A拥有S并想请求R,但B正在使用R;
C拥有T并想请求S。
协调者看到的情况如图c所示。
这种配置是安全的。
一旦B结束运行,A就可以得到R然后结束,并释放C所等待的S。
过一会儿,B释放R并请求T,这是一个完全合法的安全操作。
机器0向协调者发送一条消息声明它释放R,机器1向协调者发送了一条消息声明进程B正在等待它的资源T。
不幸的是,机器1的消息首先到达,这导致协调者生成了一幅如图d所示的资源图。
根据上图中的信息,协调者将错误的得出死锁存在的结论,并中止某个进程。
这种情况称为假死锁。
由于信息的不完整和延迟,使得分布式系统中的许多死锁算法产生了类似的假死锁问题。
9.分布式的死锁检测Chandy-Misra-Haas算法的思想?
Chandy-Misra-Haas算法允许进程一次请求多个资源(如锁)而不是一次一个。
通过允许多个请求同时进行使得事务的增长阶段加速。
这使得一个进程可以同时等待两个或多个进程。
机器1上的进程3正在等待两个资源,一个由进程4占有,一个由进程5占有。
一些进程正在等待本地资源,例如进程1。
一些进程,如进程2在等待其他机器上的资源。
当某个进程等待资源时,例如P0等待P1,将调用Chandy-Misra-Haas算法。
生成一个探测消息并发送给占用资源的进程。
消息由三个数字构成:
阻塞的进程,发送消息的进程,接受消息的进程。
由P0到P1的初始消息包含三元组(0,0,1)。
消息到达后,接受者检查以确认它自己是否也在等待其他进程。
若是,就更新消息,字段1保持不变,字段2改成当前进程号,字段3改为等待的进程号。
然后消息接着被发送到等待的进程。
若存在多个等待进程,就要发送多个不同的消息。
不论资源在本地还是在远程,该算法一直继续下去。
图中(0,2,3),(0,4,6),(0,5,7)和(0,8,0)都是远程消息。
若消息转了一圈后又回到最初的发送者,即字段1所列的进程,就说明存在一个有死锁的环路系统。
第六章
1.复制的目的和代价。
目的:
提高可靠性和提高性能。
代价:
引起服务器数量扩展以及地理区域扩展,那么在一致性上的代价就高了;
网络通信开销;
强一致性导致要求的原子操作很难快速完成。
解决办法:
放宽一致性方面的限制,放宽程度取决于复制数据的访问和更新模式以及数据的用途。
2.能区分是否符合严格一致性、顺序一致性、因果一致性、FIFO一致性、弱一致性、释放一致性、入口一致性。
共享数据读操作和写操作时的一致性问题:
一致性模型实质上是进程和数据存储间的约定,如果进程同意遵守某些规则,数据存储将正常进行。
正常情况下,进程的读操作应该返回最后一次写操作的结果。
没有全局时钟,精确定义哪次写操作是最后一次写操作是困难的。
作为全局时钟的替代,产生了一系列一致性模型,每种模型都有效地限制了一个数据项上执行一次读操作所应返回的值。
严格一致性:
任何对数据项X的读操作将返回最近一次对X进行写操作的值。
对所有进程来说,所有写操作都是瞬间可见的,系统维护着一个绝对的全局时间顺序。
a)严格的一致性存储b)非严格的一致性存储
线性化和顺序一致性:
顺序一致性对存储器的限制比严格一致性要弱一些,要满足以下的条件:
(1)
每个进程的内部操作顺序是确定不变的;
(2)
假如所有的进程都对某一个存储单元执行操作,那么,它们的操作顺序是确定的,即任一进程都可以感知到这些进程同样的操作顺序。
a)顺序一致的数据存储b)非顺序一致的数据存储
因果一致性:
所有进程必须以相同的顺序看到具有潜在因果关系的写操作,不同机器上的进程可以以不同的顺序看到并发的写操作。
当一个读操作后面跟着一个写操作的时候,这两个事件有潜在的因果关系,同样,读操作也作为为读操作提供数据的写操作因果相关。
没有因果关系的操作可以看作是并发的,并发的操作的顺序是不考虑的。
上图是因果一致性存储允许的,但顺序和严格一致性存储不允许的顺序
a)违背因果一致性的时间存储顺序b)符合因果一致性的时间存储顺序
FIFO一致性模型是在因果一致性模型上的进一步弱化,它满足下面的条件:
由某一个进程完成的写操作可以被其他所有的进程按照顺序感知到,而从不同进程中来的写操作对不同的进程可以有不同的顺序。
一致性表现在要求任何位置都可以按顺序看到某个单一进程的写操作。
弱一致性:
同步变量S仅有一个关联操作synchronization(S),该操作同步数据存储的所有本地拷贝。
弱一致性模型必须满足的条件有下面几点:
(1)对同步变量的访问满足一致性的要求:
说明所有进程都以相同的顺序看到同步变量进行的所有操作
(2)对同步变量的访问,只有在以前的写操作在各处都完成之后才能进行。
强迫在所有备份上完成所有的写操作.
(3)对数据的操作(读或写),只有在以前的对同步变量的操作完成之后才能进行。
保证所得到的数值是最新值.
a)对弱一致性有效的时间顺序b)对弱一致性无效的时间顺序
b之
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 操作系统 复习