操作系统复习题整理培训讲学.docx
- 文档编号:8075985
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:104.50KB
操作系统复习题整理培训讲学.docx
《操作系统复习题整理培训讲学.docx》由会员分享,可在线阅读,更多相关《操作系统复习题整理培训讲学.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统复习题整理培训讲学
操作系统复习题整理
第一章
1.说明分布式系统相对于集中式系统的优点和缺点。
从长远的角度看,推动分布式系统发展的主要动力是什么?
答:
相对于集中式系统,分布式系统的优点:
1)从经济上,微处理机提供了比大型主机更好的性能价格比;2)从速度上,分布式系统总的计算能力比单个大型主机更强;3)从分布上,具有固定的分布性,一些应用涉及到空间上分散的机器;4)从可靠性上,具有极强的可靠性,如果一个极强崩溃,整个系统还可以继续运行;5)从前景上,分布式操作系统的计算能力可以逐渐有所增加。
分布式系统的缺点:
1)软件问题,目前分布式操作系统开发的软件太少;2)通信网络问题,一旦一个系统依赖网络,那么网络的信息丢失或饱和将会抵消我们通过建立分布式系统所获得的大部分优势;3)安全问题,数据的易于共享也容易造成对保密数据的访问。
推动分布式系统发展的主要动力:
尽管分布式系统存在一些潜在的不足,但是从长远的角度看,推动分布式系统发展的主要动力是大量个人计算机的存在和人们共同工作于信息共享的需要,这种信息共享必须是以一种方便的形式进行。
而不受地理或人员,数据以及机器的物理分布的影响
2.多处理机系统和多计算机系统有什么不同?
答:
共享存储器的计算机系统叫多处理机系统,不共享存储器的计算机系统为多计算机系统。
它们之间的本质区别是在多处理机系统中,所有CPU共享统一的虚拟地址空间,在多计算机系统中,每个计算机有它自己的存储器。
多处理机系统分为基于总线的和基于交换的。
基于总线的多处理机系统包含多个连接到一条公共总线的CPU以及一个存储器模块。
基于交换的多处理机系统是把存储器划分为若干个模块,通过纵横式交换器将这些存储器模块连接到CPU上。
多计算机系统分为基于总线的和基于交换的系统。
在基于总线的多计算机系统中,每个CPU都与他自身的存储器直接相连,处理器通过快速以太网这样的共享多重访问网络彼此相连。
在基于交换的多计算机系统中,处理器之间消息通过互联网进行路由,而不是想基于总线的系统中那样通过广播来发送。
3.真正的分布式操作系统的主要特点是什么?
必须有一个单一的、全局的进程间通信机制。
进程管理必须处处相同。
文件系统相同。
使用相同的系统调用接口。
4.分布式系统的透明性包括哪几个方面,并解释透明性问题对系统和用户的重要性。
答:
对于分布式系统而言,透明性是指它呈现给用户或应用程序时,就好像是一个单独是计算机系统。
具体说来,就是隐藏了多个计算机的处理过程,资源的物理分布。
具体类型:
透明性
描述
存取透明性
隐藏了数据表示和获取资源的具体实现
位置透明性
用户不必知道资源位于何处
迁移透明性
资源可以不改名随意移动
重定位透明性
用户不必知道资源是位置是否改变
复制透明性
用户不必知道有多少拷贝存在
并发透明性
多个用户可以自动的共享资源
容错透明性
用户不必知道系统出现错误
5.在分布式操作系统中,为什么采用微内核技术,通常微内核提供哪些服务
答:
采用微内核技术的原因:
1)高度模块化,每一个服务都有一个定义好的接口,每个用户都可以访问任何服务,服务与位置独立;2)高度灵活性,具有添加、删除和修改服务的功能;3)用户定制,用户可以自定义服务。
微内核提供的服务有:
1)进程间通信机制;2)某些内存管理功能;3)少量的底层进程管理和调度;4)低层输入/输出服务。
第二章
6.客户-服务器模式的主要思想及优点。
答:
其主要思想是构造一种操作系统,它由一组协同进程组成,这组进程称为服务进程,为客户机提供服务的进程称为客户。
客户和服务器都运行在相同的微内核中,都以进程方式运行。
一台机器可以运行多个客户、多个服务器或者两者的结合,客户-服务器模式常常以简单的请求/应答协议为基础,客户向服务器发送一个请求,请求一些服务,服务器完成后返回所要的数据或者给出一个错误代码,指出工作未完成。
优点:
1)简单,客户发出一个请求得到一个应答,在使用之前无需建立连接也不需要释放连接;2)有效性,协议栈比较短因而更有效。
7.客户为了发送消息给服务器,它必须知道服务器的地址。
试给出服务器进程编址的几种方法,并说明如何定位进程。
答:
方法一。
机器号加进程号,内核使用机器号将消息正确地发送到适当的机器上,用进程号决定将消息发送给哪一个进程。
方法二。
进程选择随机地址,通过广播方式定位进程,进程在大范围的地址空间中随机指定自己的标识号。
在支持广播式的LAN中,发送者广播一个特殊的定位包,其中包含目的进程地址,所有的内核查看地址是不是他们的,如果是则返回消息给出网络地址,然后发送内核缓存地址。
方法三。
客户机运行时,使用ASCII码访问服务。
客户机运行时,向名字服务器发送请求信息,名字服务器将ASCII服务器名映射成服务器地址,客户机收到给地址后,可以访问服务器。
8.说明在C/S模式下解决消息可靠传输的三种方法?
答:
1、重新定义非可靠的send语义。
系统无法保证消息发送成功,完成可靠地通信依赖于用户。
2、要求接收机器的内核给发送机器的内核发送一个确认消息。
只有收到这个确认消息后发送内核释放用户进程。
确认消息从一个内核传送到另一个内核,无论是客户还是服务器都看不到确认消息。
3、客户在发送消息后阻塞,服务器内核不发送确认消息而是将应答作为确认消息。
因此客户进程一直阻塞到应答消息到来为止,如果时间太长,发送内核会重新发送请求以防止消息丢失。
9.说明RPC的主要思想及RPC调用的主要步骤。
(远程过程调用函数sum(4,7)为例说明)
答:
主要思想是允许程序去调用位于其他机器上的过程。
当位于机器A的一个进程调用机器B上的某个过程时,机器A上的过程被挂起,被调用的过程在机器B上执行。
调用者讲消息放在参数表中传送给被调用者,结果作为过程的返回值返回给调用者。
消息的传送与I/O操作对于编程人员是不可见的。
主要步骤如下:
1)客户过程以普通方式调用相应的客户存根;2)客户存根建立消息并激活内核陷阱;3)内核将消息发送到远程内核;4)远程内核将消息发送到服务器存根;5)服务器存根取出消息中的参数后调用服务器过程;6)服务器完成工作后将结果返回至服务器存根;7)服务器存根将它们打包并激活内核陷阱;8)远程内核将消息发送会客户内核;9)客户内核将消息提交给客户存根;10)客户存根从消息中取出结果返回给客户。
10.在RPC调用时,如果服务器或客户机崩溃了,各有哪些解决方法。
答:
如果是服务器崩溃了,用户无法区分服务器是在执行前还是执行后崩溃,解决方案如下:
1)至少一次语义,指等待服务器重新启动,然后重发请求。
这种方法要求不断重试直至客户收到应答消息。
它保证RPC至少执行一次。
2)之多一次语义,指立即放弃并报告失效。
它确保RPC至多执行一次,但也可能根本没有执行;3)不作保证;4)精确一次语义;
如果是客户机崩溃了,存在孤儿问题(客户已发送请求,在应答到来之前崩溃了,此时已经激活服务器中的过程并获得结果,但是没有客户在等待结果)解决方案如下:
1)根除,在客户存根发送RPC消息前先做日志(用来恢复崩溃),系统重新启动后,检查日志,发现孤儿存在并将其杀死;2)再生,把时间分成有序的纪元,当客户端重启时,向所有机器广播一个消息通知一个新纪元的到来,并结束所有的远程计算;3)温和再生,服务器接收到新纪元广播时,检查自己是否有远程计算,只有那些找不到所有者的远程计算终止。
4)过期,每个RPC都分配一个标准时间T来完成任务,如果超时没有完成则显示分配一个数额。
第三章
11.实现分布式系统同步的复杂性表现在哪几个方面?
说明先发生关系,并说明在LAMPORT算法中怎样给事件分配时间。
答:
分布式算法有如下性质:
1)相关信息分散在多台机器上;2)进程决策仅依赖于本地信息;3)系统中单点故障应避免;4)没有公用时钟和其他精确的全局时间资源存在。
前三点说明在一处收集所有信息并对他们进程处理是不可接受的,左后一点说明在分布式系统获得时间上的一致并不是容易的。
LAMPORT算法的解决方案是直接使用先发生关系,每条消息都携带发送者的时钟以指出其发送的时间,当消息到达时,接受者的时钟比消息发送者时钟小,就立即将自己的时钟调到比发送者的时间大1或更多的值,我们给出一种测量时间的方法,使得对每一事件a,在所有进程中都认可给它一个时间值C(a),在给事件分配时间时要遵循一下规则:
1)在同一进程中a发生在b之前则C(a) 12.说明RICART和AGRAWALE分布式互斥算法;假定A和B是相互独立的两个临界区,进程0要进入A,进程1要进入B,R-A分布式互斥算法会导致死锁吗? 说明理由。 答: RICART和AGRAWALE算法要求系统中所有事件都是全序的,也就是说,对任何事件组消息,哪个先发必须无歧义,算法如下: 当一个进程想进入临界区时,他要建立一个包括他要进入的临界区的名字、处理机号、当前时间的消息,然后将消息发送给所有其他进程,也包括发送给自身,当一个进程接收另一个进程消息时,它取决于接受方的状态以及临界区的名字有三种情况: 1)接受者不在临界区,也不想进入临界区,他就向发送者发送OK消息;2)接受者已经在临界区,它不必回答,而是负责对请求队列排队;3)接收者要进入临界区,但是还没有进入,它要负责将发来的消息和它发送给其他进程的时间戳对比,取小的那个。 如果来的消息时间戳小,接收者发送OK消息,否则接收者负责排列请求队列而不发送任何消息。 在发送完允许进入临界区的请求后,进程将不再做任何事,仅等待所有的允许消息,一旦得到允许,它就进入临界区。 它从临界区退出时,向队列中所有进程发送OK消息,并将它从队列中删除。 该算法可能导致死锁,例如: A和B是相互独立的两个临界区,进程0要进入A,进程1要进入B,而此时进程0在B中,进程1在A中就会进入死锁。 13.举例说明用私有工作空间实现事务处理时的基本思想。 答: 在进程开始一个事务时给它分配一个包含了所有需要访问的文件的私有工作空间,在事务提交或终止前,所有的读写操作都在私有空间而不是真正的文件系统中进行,存在的问题是所有内容都拷贝到私有空间,代价难以承受。 优化方法是: 1)私有空间中只包含一个指向父辈工作区的指针,当事务处于最顶层时,它的工作区是真正的文件系统。 2)使用索引节点,索引是一个与判断文件所在的磁盘块位置有关的数据库,给方法不将全部文件考入私有空间,而只是拷贝索引。 14.说明在分布式系统中实现原子性提交的两阶段提交协议的基本思想及其优点。 答: 两阶段提交协议的基本思想是有一个进程作为协调者,通常是执行事务的进程。 在准备提交阶段,协调者向日志中写入Prepare,然后向所有服务器发送准备提交消息,服务器接收到消息后,检查自己是否准备提交,如果是就向日志中写入Ready,然后向协调者发送准备好消息。 在提交阶段,协调者接收所有响应后决定提交还是撤销,如果所有服务器都准备提交,则提交事务;否则撤销事务。 无论如何协调者都会写入日志,并发送决定消息,服务器接到消息后也将结果写入日志,并发送结束消息,完成整个过程 15.举例说明为什么使用集中式的死锁检测算法会产生假死锁,并给出一种解决办法。 答: 集中式的死锁检测算法每台机器的资源图中只包含它自己的进程和资源,协调者节点保存整个系统(所有资源图的集合)的资源图。 当机器资源图发生变化时相应的消息发送给协调者以提供更新,当协调者检测到环路时,它终止一个进程以解决死锁。 如上图圆表示进程,方框表示资源,开始时如同a,b,c所示,过来一段时间,B释放R并请求T,这是一个合法的操作,机器0向协调者发送一条消息申明它释放资源R,机器1向协调者发送一条消息声明进程B正在等待它的资源T,不幸的是机器1的消息先到达协调者,导致生成资源图如图d所示。 协调者得出错误的结论——死锁存在,这种情况称为假死锁。 解决办法是: 使用Lamport算法以提供全局统一的时间,对协调者收到的消息按照时间戳排序 16.说明wait-die和wound-wait分布式死锁预防方法。 事务时间戳为50的进程申请事务时间戳为100的进程占用的资源。 按以上两种策略,结果会如何? 。 答: (时间戳越小的进程越是年老)wait-die死锁预防算法: 当较老的进程请求年轻进程所占有的资源时,老进程只能等待;如果年轻进程请求老进程占有的资源时,年轻进程会被终止。 Wound-wait死锁预防算法: 当老进程请求年轻进程所拥有的资源时,老进程抢占年轻进程的资源,年轻进程被终止;当年轻进程请求老进程所拥有的资源时,年轻进程等待。 第四章 17.叙述实现线程包的方法及其优缺点。 答: 1在用户空间实现线程: 是将线程包完全放到用户空间中去,内核对此一无所知。 优点: 在不支持线程的操作系统中实现;线程切换比使用内核陷阱快一个数量级;允许每个进程有自己定制的调度算法。 缺点: 阻塞调用怎样实现? 系统调用改为非阻塞,SELECT。 如何实现调度? 旋转锁,始终信号中断。 2在内核中实现线程: 当一个线程想去创建一个新线程或撤销已存在的线程时,它发出一个内核调用,由它完成创建和回收工作。 内核中每个进程都有一张包含线程信息(线程的寄存器、状态、优先权等)的表。 优点: 容易实现调度。 缺点: 系统开销大。 3调度者行为: 内核分配一定数量的虚拟处理机给每个进程,并且让(用户空间)运行期系统将线程分配给处理机。 优点: 效率,很好地解决了控制权由阻塞线程传递给非阻塞线程。 缺点: 可能产生死锁,与分层系统的内在结构违背。 18.说明发送者发起的分布式启发算法和接收者发起的分布式启发算法及各自的主要缺点。 答: 发送者发起的分布式启发算法: 当创建进程时,创建进程的机器将对一个随机选取的机器发生询问,询问它的负载是否低于某个阈值,如果是,将发送进程否则将选择另一台机子发送询问。 如果在N次询问内还没有找到合适的机器,算法停止新进程将在创建它的机器上运行。 该算法的缺点是: 在负载十分严重的情况下,所有机器都会不停的毫无意义的向其他机器发送询问,想找到一台愿意接受更多工作的机器,在这种情况下,几乎没有进程会被减轻负载,但却会引起相当可观的额外开销。 接收者发起的分布式启发算法: 当一个进程结束时,系统将检查自己是否有足够的工作可做,如果没有,将随机向一台机器申请工作,如果那台机器没有要给予的工作,系统将继续询问第二,第三台机器,如果询问N台机器都没有申请到工作,系统将暂停申请开始处理系统队列中一个等待进程,当这个进程结束后,开始下一轮的申请;如果系统无事可做,则将进入空闲状态,一定时间后从新开始申请。 给算法的缺点是: 系统在无事可做时会造成相当大的询问负载。 19.举例说明Lamport等人提出的算法是如何解决Byzantine将军问题的。 答: Lamport等人设计了一种递归算法可在特定条件下解决这一问题。 例如: N=4(有四个将军),M=1(其中有一个叛徒),对这样的参数,参数运行四步。 第一步,每个将军发送可靠的消息给其他所有的将军,声明自己真实的军队人数,忠诚的将军声明的是真值,叛徒则可能对其他每个将军都撒一个不同的谎。 如图a; 第二步,把第一步声明的结果组成向量形式,如图b; 第三步,每个将军把图b中各自的向量传递给其他每一个将军,这里叛徒再一次撒谎,使用了12个新值。 A—J。 如图c; 第四步,每个将军检查所有新接收向量的每一个元素,若某个值占多数则把该值放入结果向量中, 20.简述三模冗余的基本思想,并举例说明三模冗余能否处理Byzabtine故障。 答: 三模冗余是使用物理冗余来提供容错的技术,是使用主动复制方法的容错。 在电子电路中有设备A、B、C,然后每个设备复制三次,结果就是每级电路都设置了三个表决器,每个表决器有三个输入和一个输出,若两个或者三个输入相同,输出则等于输入,若三个输入各不相同,输出就是不定值,这种设计就是TMR。 若处理机是Byzabtine类型的,出错的处理机仍然工作并发出错误的随机的应答,那么至少需要2k+1个处理机才能达到k级容错。 最坏情况下k个失效的处理机偶然(甚至有意)地产生相同的应答,然而剩下的k+1个未出错的处理机也将产生相同的应答,因此客户机可以根据大多数的应答得到正确结果。 三模冗余在每组中有一个部件出现Byzabtine故障时可以处理,而一组中有两个甚至三个同时出现Byzabtine故障则不能处理。 21.举例说明采用图论确定性算法进行处理机分配的实现方法。 答: 整个系统可以表示为一张带权图,每个节点表示一个进程,每条边表示两个进程之间的通信量。 从数学角度看,整个问题就变成了如何根据特定的限制将图划分成k(k为系统中cpu数量)个不相连的子图(如每个子图的总cpu和内存需求在一定限制内)。 对于每种满足限制的解决方案,子图内部的边意味着机器内部的通信,可以忽略。 从一个子图连向另一个子图的边表示网络通信。 该算法的目标就是在满足限制下,找到一种划分方式使网络通信量最小。 下图表示了图的两种划分: 方案A: 通信量=(3+2+4+4)+(2+8+5+2)=30 方案B: 通信量=(3+2+4+4)+(3+5+5+2)=28 第五章 35、使用上载/下载模式的文件服务器系统与使用远程访问模式的文件系统之间有什么区别? 答: 文件服务分为两种类型: 上载/下载模式和远程访问模式。 上载/下载模式。 只提供两种主要的操作(读文件和写文件),读操作将整个文件从文件服务器传输到请求客户端,写操作则刚好相反,文件系统运行在客户端。 优点是系统概念简单,应用程序取得需要的文件,并在本地使用它。 当程序结束时,将所有修改的文件或新创建的文件写回去,不需要管理复杂的文件服务接口,文件传输效率高。 缺点是客户端需要足够的存储空间,当需要部分文件是需要传输整个文件。 远程访问模式。 提供了大量的操作,如打开、关闭文件,读写部分文件等等。 文件系统在服务器端运行。 优点是客户不需要大量存储空间,当需要部分文件是不需要传输整个文件。 22.分布式系统中处理共享文件的四种方法(文件共享的四种语义)。 答: 1)UNIX语义。 系统使所有的操作都有一个绝对时间顺序,READ操作读取最近一个WRITE操作后的内容,要求对一个文件系统的任何操作对所有进程都是及时可见的。 2)会话语义。 对于打开文件的修改最初只对修改文件的进程是可见的,当文件关闭后,对文件的修改对其他进程才是可见的。 3)不可修改语义。 不允许打开文件进行写操作,只提供CREATE和READ两种操作。 只能进程讲的的共享和复制。 4)事务语义。 使用原子事务,即所有的操作要么全做,要么全不做。 23.说明无状态服务器和有状态服务器,并说明二者的区别。 状态服务器 如果是状态化请求,那么服务端一般需要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。 状态服务器具有以下特点: -保存客户请求的数据(状态) -服务端容易对客户状态进行管理 -服务端并不要求每次客户请求都携带额外的状态数据 无状态服务器 无状态服务器处理的客户信息必须全部来自于请求所携带的信息以及其他服务器自身所保存的、并且可以被所有请求所使用的公共信息。 无状态服务器具有以下特点: -并不保存客户请求的数据(状态) -客户在请求时需要携带额外的状态数据 -无状态服务器更加健壮,重启服务器不会丢失状态信息,这使得维护和扩容更加简单 24.说明保持客户高速缓存一致性的四种算法。 答: 1)直接写,当缓存中的文件被更新后,新的值在缓存在保存,而且同时发送到服务器,而当另外的进程访问文件时,读到的是最新值,但是存在一个问题,其他进程在更新之前读到的文件内容可能是过期的,那么在每次用到文件时需要从服务器中读取文件版本进行比较,查看是否过期,但是每次都要在服务器和客户端之间通信,这样就体现不出缓存的作用了。 2)延迟写,操作不立即发送给服务器,而是延迟一段时间,也就减少了网络消息,当进程读取文件时,依赖于时间。 具体读到的是那次操作的结果不确定,语义模糊。 3)关闭写,操作只有在文件关闭后才写回服务器,配合session语义。 4)集中控制,就是在文件服务器上保存了进程对文件的操作方式等信息,类似于锁机制的管理,避免写操作的文件被其他进程操作,但是当修改的操作结束时,会将操作结束消息通知服务器,操作的结果也就立即会送到服务器 25.说明分布式系统提供文件复制服务的原因以及实现复制的三种方法。 答: 分布式系统通常保持文件的多个拷贝,每个拷贝放在一台单独的文件服务器上,提供这种服务主要有一些几种原因: 1)数据不丢失,通过对每个文件的独立备份来增加系统的可靠性;2)当一个文件服务器出现问题时,仍然允许进行文件访问;3)负载均衡,将工作量分配到多个服务器上。 图a 以后 以后 对个二进制地址 符号名 3 2 1 c s1 s2 s3 文件 proc.c 1.14 2.16 3.19 1.21 2.43 3.41 c s1 s2 s3 图b c s1 s2 s3 图c 三种复制方法一次如上图所示: 1)显示复制,如图a所示,是为编程人员控制整个进程所用,当进程产生一个文件时,可以在其他服务器上生产另外的拷贝,如果目录服务允许一个文件有多个拷贝,所有拷贝的网络地址都可以和这个文件名联系起来。 2)懒惰拷贝,如图b所示,只要在某个服务器上建立每个文件的一个拷贝服务器自己在其他的服务器上也可以自动生成副本。 3)用组复制文件,如图c所示,所有的写系统调用同时传送到所有的服务器,于是,其他的拷贝在源文件产生时就产生了。 26.说明更新复制文件的两种主要算法: 主拷贝算法、Gifford算法。 答: 主拷贝算法,使用时,指定一个服务器为主服务器,其他所有服务器为从服务器,当要更新一个复制文件时,我们就将该改变发送至主服务器上,在本地完成修改,然后向各从服务器发出命令,命令他们也完成修改。 这样可以在任何一个(主或者从)服务器上进行读操作。 这种方法简单,但是有个问题,当主服务器停机时,所有的更细将不能进行。 Gifford算法,基本思想是在读写一个复制文件之前要求先申请并获得多个服务器的允许。 例如,读一个已经有N个副本的复制文件,客户需要获得一个读法定数,它是任何Nr个或更多个服务器的任一集合,同样的,修改一个文件需要一个至少Nw个服务器的写法定数。 Nr和Nw的值必修满足约束条件Nr+Nw>N,只有在适当数目的服务器同意参与时,文件才能进行读写操作。 第六章 27.说明在Dash交换式多处理机系统中,如何读写一个存储器中的字。 CPU如何读取一个存储器中的字。 CPU首先检查自己的缓存。 若缓存中无此字,则在本地簇内发出请求,询问本地簇的其他cPu缓存中是否有此字。 若有,该数据块从该缓存传送到发出申请的CPU缓存中。 若数据块的状态是CLEAN,拷贝此数据块。 若块的状态是DIRTY,其目录将此块标记为CLEAN,使之共享无论如何,只妥命中缓存就能满足指令,但不影响任何目录的位图。 如果数据块不在任何簇的缓存中,CPU将发一请求信包给该块的宿主所在簇,这可以由存储器地址的高4位来确定。 宿主所在簇可能就是请求者所在的簇。 在这种情况下消息并未被实际发送。 宿主所在簇的目录管理硬件检查它的表以确定块的状态。 若为UNCACHED或CLEAN,硬件从全局存储器中取出块,将其发送到请求簇,该簇更新其日录,表明该块已在缓冲区中(如果还没有这样标记)。 如所需块的状态为DIRTY,目录硬件查找拥有该块的簇的标志,该簇响应请求。 拥有DIRTY块的簇将数据块发给请求簇,并因为数据块己共享,将其状态改为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 复习题 整理 培训 讲学
![提示](https://static.bdocx.com/images/bang_tan.gif)