您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 操作系统课后题及答案
第一章1.1在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a.列出此类的问题b.在一个分时机器中,能否确保像在专用机器上一样的安全度?并解释之。Answer:a.窃取或者复制某用户的程序或数据;没有合理的预算来使用资源(CPU,内存,磁盘空间,外围设备)b.应该不行,因为人类设计的任何保护机制都会不可避免的被另外的人所破译,而且很自信的认为程序本身的实现是正确的是一件困难的事。1.4在下面举出的三个功能中,哪个功能在下列两种环境下,(a)手持装置(b)实时系统需要操作系统的支持?(a)批处理程序(b)虚拟存储器(c)分时Answer:对于实时系统来说,操作系统需要以一种公平的方式支持虚拟存储器和分时系统。对于手持系统,操作系统需要提供虚拟存储器,但是不需要提供分时系统。批处理程序在两种环境中都是非必需的。1.10中断(interupt)的目的是什么?陷阱(trap)与中断的区别是什么?陷阱可以被用户程序(userprogram)有意地的产生吗?如果可以,那目的是什么?Answer:中断是一种在系统内硬件产生的流量变化。中断操作装置是用来处理中断请求;然后返回控制中断的上下文和指令。陷阱是软件产生的中断。中断可以被用来标志I/O的完成,从而排除设备投票站(devicepolling)的需要。陷阱可以被用来调用操作系统的程序或者捕捉到算术错误。1.13给出缓存(caches)十分有用的两个理由。他们解决了什么问题?他们引起了什么问题?如果缓存可以被做成装备想要缓存的容量(例如,缓存像磁盘那么大),为什么不把它做的那么大,其限制的原因是什么?Answer:当两个或者更多的部件需要交换数据,以及组成部件以不同的速度完成转换时,缓存是十分有用的。缓存通过在个组成部件之间提供一个中间速度的缓冲区来解决转换问题。如果速度较快的设备在缓存中发现它所要的数据,它就不需要再等待速度较慢的设备了。缓存中的数据必须与组成部件中的要一致。如果一个组成部件中的数据值改变了,缓存中的这个数据也必须更新。在多进程系统中,当有不止一个进程可能进入同一个数据时,这就成了一个显著的问题。一个组成部件将会被一个同等大小的组成部件所消除,但是只有当;(a)缓存和组成部件有相同状态存储能力(也就是,当断电的时候,组成部件还能保存它的数据,缓存也一样能保存它的数据),(b)缓存是可以负担的起的,因为速度更快的存储器意味着更高的价格。第二章2.1操作系统提供的服务和功能可以分为两个类别。简单的描述一下这两个类别并讨论他们的不同点。Answer:第一种操作系统提供的服务是用来保护在系统中同时运行的不同进程。进程只被允许获得与它们地址空间有联系的内存位置。同样,进程不允许破坏和其他用户有关的文件。一个进程同样不允许在没有操作系统的干预下直接进入设备。第二种服务由操作系统提供的服务是提供一种新的功能,而这种功能并不直接被底层的硬件支持。虚拟存储器和文件系统就是由操作系统提供的这种新服务的实例。2.9为什么要把机制和策略区分开来?Answer:机制和策略必须区分开来,来保证系统能够被很容易的修改。没有两个系统的装置是完全相同的,所以每一个装置都想要把操作系统改为适合自己的。当机制和政策分开时,政策可以随意的改变但机制还是不能改变。这种安排提供了一个更灵活的制度2.14操作系统设计员采用虚拟机结构的主要优点是什么?对用户来说主要有什么好处?Answer:系统是容易被调试的,此外,安全问题也是容易解决的。虚拟机同样为运作体系提供了一个很好的平台,因为许多不同的操作系统只可以在一个物理系统中运行。第三章3.2问:描述一下内核在两个进程间进行上下文功换的动作.Answer:总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。(书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。3.4图表3.24里显示的程序,说明A行将会输出什么?Answer:当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。第四章4.3在哪些情况下使用多内核线程的多线程方案比单处理器系统的单个线程方案提供更好的性能。答:当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换成使用交错时间。另一方面,当页面发生错误时,一个单一线程进程将不能够发挥有效性能。因此,在一个程序可能有频繁的页面错误或不得不等待其他系统的事件的情况下,多线程方案会有比单处理器系统更好的性能。4.4以下程序中的哪些组成部分在多线程程序中是被线程共享的?a.寄存值b.堆内存c.全局变量d.栈内存答:一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。第五章5.1为什么对调度来说,区分I/0限制的程序和CPU限制的程序是重要的?答:I/0限制的程序有在运行I/O操作前只运行很少数量的计算机操作的性质。这种程序一般来说不会使用很多的CPU。另一方面,CPU限制的程序利用整个的时间片,且不做任何阻碍I/O操作的工作。因此,通过给I/O限制的程序优先权和允许在CPU限制的程序之前运行,可以很好的利用计算机资源。5.2讨论以下各对调度标准在某种背景下会有的冲突a.CPU利用率和响应时间b.平均周转时间和最大等待时间c.I/O设备利用率和CPU利用率答:a.CPU利用率和响应时间:当经常性的上下文切换减少到最低时,CPU利用率增加。通过减少使用上下文切换程序来降低经常性的上下文切换。但这样可能会导致进程响应时间的增加。b.平均周转时间和最大等待时间:通过最先执行最短任务可以使平均周转时间最短。然而,这种调度策略可能会使长时间运行的任务永远得不到调度且会增加他们的等待时间。c.I/O设备利用率和CPU利用率:CPU利用率的最大化可以通过长时间运行CPU限制的任务和同时不实行上下文切换。I/O设备利用率的最大化可以通过尽可能调度已经准备好的I/O限制的任务。因此,导致上下文切换。5.4考虑下列进程集,进程占用的CPU区间长度以毫秒来计算:假设在时刻0以进程P1,P2,P3,P4,P5的顺序到达。a.画出4个Gantt图分别演示用FCFS、SJF、非抢占优先级(数字小代表优先级高)和RR(时间片=1)算法调度时进程的执行过程。b.在a里每个进程在每种调度算法下的周转时间是多少?c.在a里每个进程在每种调度算法下的等待时间是多少?d.在a里哪一种调度算法的平均等待时间对所有进程而言最小?答:a.甘特图略b.周转时间FCFSRRSJF非抢占优先级P110191916P211211P3137418P4144219P5191496c.等待时间FCFSRRSJF非抢占优先级P10996P210100P3115216P4133118P514942d.SJF5.5下面哪些算法会引起饥饿a.先来先服务b.最短工作优先调度c.轮换法调度d.优先级调度答:最短工作优先调度和优先级调度算法会引起饥饿5.10解释下面调度算法对短进程编程度上的区别:a.FCFSb.RRc.多级反馈队列答:a.FCFS----区别短任务是因为任何在长任务后到达的短任务都将会有很长的等待时间。b.RR-----对所有的任务都是能够相同的(给它们相同的CPU时间区间),所以,短任务可以很快的离开系统,只要它们可以先完成。c.多级反馈队列和RR调度算法相似——它们不会先选择短任务。第六章6.4解释为什么自旋锁不适合在单处理器系统,而经常在多处理器系统下使用?答:自旋锁不适合在单处理器系统是因为从自旋锁中打破一个进程的条件只有在执行一个不同的进程时才能获得。如果这个进程没有闲置处理器,其他进程不能够得到这个机会去设定一个第一个进程进展需要的程序条件。在一个多处理器系统中,其他进程在其他处理器上执行,从而为了让第一个进程从自旋锁中释放修改程序状态。6.15讨论在读者-作者问题中的公平和吞吐量的权衡问题。提出一种解决读者-作者问题而不引起饥饿的方法答:在读者-作者问题中吞吐量是由利益多的读者增加的,而不是让一个作家独占式地获得共同的价值观。另一个方面,有利于读者可能会导致饥饿的作者。在读者-作者问题中的借能够通过保持和等待进程有关的时间戳来避免。当作者完成他的任务,那么唤醒那些已经等了最长期限的进程。当读者到达和注意到另一个读者正在访问数据库,那么它只有在没有等待的作者时才能进入临界区域。这些限制保证公平。第七章7.1假设有如图7.1所示的交通死锁。证明这个例子中实际上包括了死锁的四个必要条件。给出一个简单的规则用来在这个系统中避免死锁。死锁的四个必要条件:(1)互斥;(2)占有并等待;(3)非抢占;(4)循环等待。互斥的条件是只有一辆车占据道路上的一个空间位置。占有并等待表示一辆车占据道路上的位置并且等待前进。一辆车不能从道路上当前的位置移动开(就是非抢占)。最后就是循环等待,因为每个车正等待着随后的汽车向前发展。循环等待的条件也很容易从图形中观察到。一个简单的避免这种的交通死锁的规则是,汽车不得进入一个十字路口如果明确地规定,这样就不会产生相交。7.2考虑如下的死锁可能发生在哲学家进餐中,哲学家在同个时间获得筷子。讨论此种情况下死锁的四个必要条件的设置。讨论如何在消除其中任一条件来避免死锁的发生。死锁是可能的,因为哲学家进餐问题是以以下的方式满足四个必要条件:1)相斥所需的筷子,2)哲学家守住的筷子在手,而他们等待其他筷子,3)没有非抢占的筷子,一个筷子分配给一个哲学家不能被强行拿走,4)有可能循环等待。死锁可避免克服的条件方式如下:1)允许同时分享筷子,2)有哲学家放弃第一双筷子如果他们无法获得其他筷子,3)允许筷子被强行拿走如果筷子已经被一位哲学家了占有了很长一段时间4)实施编号筷子,总是获得较低编号的筷子,之后才能获得较高的编号的筷子。7.6假设系统中有四个相同类型的资源被三个进程共享。每个进程最多需要两个资源。证明这个系统不会死锁。假设该系统陷入死锁。这意味着,每一个进程持有一个资源,并且正等待另一个资源。因为有三个进程和四个资源,一个进程就必须获取两个资源。这一进程并不需要更多的资源,因此当其完成时会返回其资源。7.7假设一个系统有m个资源被n个进程共享,进程每次只请求和释放一个资源。证明只要系统符合下面两个条件,就不会发生死锁:a.每个进程需要资源的最大值在1到m之间b.所有进程需要资源的最大值的和小于m+nAnswer:使用Section7.6.2的术语,可以有:a._ni=1Maxim+nb.Maxi≥1foralliProof:Needi=Maxi−AllocationiIfthereexistsadeadlockstatethen:c._ni=1Allocationi=mUsea.toget:_Needi+_Allocationi=_Maxim+nUsec.toget:_Needi+mm+nRewritetoget:_ni=1Needin//符号打不出来,大家自己看答案这意味着存在一个Pi的进程,其Needi=0.如果Maxi=1,那么Pi进程至少有一个资源可以释放。从而系统就不会进入死锁状态。7.11考虑下面的一个系统在某一时刻的状态:AllocationMaxAvailableABCDABCDABCDP0001200121520P110001750P213542356P306320652P400140656使用银行家算法回答下面问题:a.Need矩阵的内容是怎样的?b.系统是否处于安全状态?c.如果从进程P1发出一个请求(0420),这个请求能否被满足?Answer:a.Need矩阵的内容是P0(0000)P1(0750)P2(1002)P3(0020)P4(0640)。b..系统处于安全状态,因为A
本文标题:操作系统课后题及答案
链接地址:https://www.777doc.com/doc-2454676 .html