操作系统课后题及答案

更新时间:2024-04-26 06:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

1.1在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a. 列出此类的问题b.在一个分时机器中,能否确保像在专用机器上一样的安全度?并解释之。

Answer:a.窃取或者复制某用户的程序或数据;没有合理的预算来使用资源(CPU,内存,磁盘空间,外围设备)b.应该不行,因为人类设计的任何保护机制都会不可避免的被另外的人所破译,而且很自信的认为程序本身的实现是正确的是一件困难的事。

1.4在下面举出的三个功能中,哪个功能在下列两种环境下,(a)手持装置(b)实时系统需要操作系统的支持?(a)批处理程序(b)虚拟存储器(c)分时

Answer:对于实时系统来说,操作系统需要以一种公平的方式支持虚拟存储器和分时系统。对于手持系统,操作系统需要提供虚拟存储器,但是不需要提供分时系统。批处理程序在两种环境中都是非必需的。

1.10中断(interupt)的目的是什么?陷阱(trap)与中断的区别是什么?陷阱可以被用户程序(user program)有意地的产生吗?如果可以,那目的是什么? Answer: 中断是一种在系统内硬件产生的流量变化。中断操作装置是用来处理中断请求;然后返回控制中断的上下文和指令。陷阱是软件产生的中断。中断可以被用来标志 I/O的完成,从而排除设备投票站(device polling)的需要。陷阱可以被用来调用操作系统的程序或者捕捉到算术错误。

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.周转时间 FCFS RR SJF 非抢占优先级 P1 P2 P3 P4 P5 10 11 13 14 19 FCFS 0 10 11 13 14 19 2 7 4 14 RR 9 1 5 3 9 19 1 4 2 9 SJF 9 0 2 1 4 16 1 18 19 6 非抢占优先级 6 0 16 18 2 c.等待时间 P1 P2 P3 P4 P5 d.SJF 5.5下面哪些算法会引起饥饿

a.先来先服务

b.最短工作优先调度 c.轮换法调度 d.优先级调度

答:最短工作优先调度和优先级调度算法会引起饥饿 5.10解释下面调度算法对短进程编程度上的区别: a.FCFS b.RR

c.多级反馈队列

答: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+n Answer:使用Section7.6.2的术语,可以有: a. _n i =1 Maxi < m + n b. Maxi ≥ 1 for all i Proof: Needi = Maxi ? Alloca tioni If there exists a deadlock state then: c. _n i =1 Alloca tioni = m Use a. to get:_ Needi + _ Alloca tioni = _ Maxi < m + n Use c. to get:_ Needi + m < m + n Rewrite to get:_n i =1 Needi < n //符号打不出来,大家自己看答案 这意味着存在一个Pi的进程,其Needi=0.如果Maxi>=1,那么Pi进程至少有一个资源可以释放。从而系统就不会进入死锁状态。

7.11考虑下面的一个系统在某一时刻的状态:

Allocation Max Available A B C D A B C D A B C D

P0 0 0 1 2 0 0 1 2 1 5 2 0 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 使用银行家算法回答下面问题: a.Need矩阵的内容是怎样的? b.系统是否处于安全状态?

c.如果从进程P1发出一个请求(0 4 2 0),这个请求能否被满足?

Answer:a.Need矩阵的内容是P0(0 0 0 0) P1(0 7 5 0) P2(1 0 0 2) P3(0 0 2 0)

P4(0 6 4 0)。

b. .系统处于安全状态,因为Available矩阵等于(1 5 2 0),进程P0和P3都可以运行,当进程P3运行完时,它释放它的资源,而允许其它进程运行。 c.可以被满足,满足以后,Available矩阵等于(1 1 0 0),当以次序P0,P2, P3, P1 ,P4运行时候,可以完成运行。

第八章

8.5 比较在主存组织方案中,连续内存分配,纯段式分配和纯页式分配在下面问题中的关系。 a.外部碎片b.内部碎片c.通过进程分享代码的能力

Answer:连续内存分配会产生外部碎片,因为地址空间是被连续分配的,当旧进程结束,新进程初始化的时候,洞会扩大。连续内存分配也不允许进程共享代码,因为一个进程的虚拟内存段是不被允许闯入不连续的段的。纯段式分配也会产生外部碎片,因为在物理内存中,一个进程的段是被连续放置的,以及当死进程的段被新进程的段所替代时,碎片也将会产生。然而,段式分配可以使进程共享代码;比如,两个不同的进程可以共享一个代码段,但是有不同的数据段。纯页式分配不会产生外部碎片,但会产生内部碎片。进程可以在页granularity中被分配,以及如果一页没有被完全利用,它就会产生内部碎片并且会产生一个相当的空间浪费。在页granularity,页式分配也允许进程共享代码。

8.9考虑一个分页系统在内存中存储着一张页表。a.如果内存的查询需要200毫秒,那么一个分页内存的查询需要多长时间?b.如果我们加上相关联的寄存器,75%的页表查询可以在相关联的寄存器中找到,那么有效的查询时间是多少?(假设如果入口存在的话,在相关的寄存器中找到页表入口不花费时间)

Answer:a.400毫秒:200毫秒进入页表,200毫秒进入内存中的字 b.有效进入时间=0.75*200毫秒+0.25*400毫秒=250毫秒 第九章

9.5假设有一个请求调页存储器,页表放在寄存器中:处理一个页错误,当有空的帧或被置换的页设有被修改过时要用8ms,当被置换的页被修改过明用20ms,存储器访问时间为100ns。

假设被置换的页中有70%被修改过,有效访问时间不超过200ns时最大可接受的页错误率是多少?(第六版有翻译)

答:0.2 _sec = (1 ? P) × 0.1 _sec + (0.3P) × 8 millisec + (0.7P) × 20 millisec 0.1 = ?0.1P + 2400 P + 14000 P 0.1 _ 16,400 P P _ 0.000006

9.10问:假设一个具有下面时间度量利用率的请求调页系统:

CPU利用率20%,分页磁盘 97.7%,其他I/O设备,5%

说明下面哪一个(可)能提高CPU的利用率,为什么? A安装一个更快的CPU

B安装一个更大的分页磁盘 C提高多道程序设计程序 D降低多道程序设计程度 E安装更多内存

F安装一个更快的硬盘,或对多个硬盘使用多个控制器 G对页面调度算法添加预取页 H增加页面大小。

答:该系统显然花费了许多时间进行分页,显示过度分配的内存,如果多级程序水平减少驻

地进程,将页面错误变少和提高CPU利用率。另一种方式来提高利用率是获得更多的物理内存或更快的分页鼓。 ABC都不行,D可以

E.可能提高CPU利用率为更多页面保持驻地,而不需要分页或磁盘。

F.另一个改进,因为磁盘的瓶颈是删除更快的响应,和更多的磁盘容量,CPU将会获得更多的数据传输速度

G.CPU将获得更快的数据传输率,所以更多地被使用。如果分页服从预调(即一些访问

顺序)这只是一个方面。

H.增加页面大小将导致减少页面错误,如果数据进行是随机的,则分页可以随之,因为较少页面可保存在内存上,更多的数据转移到页面错误 上,这种 变化可以减少CPU利用率或者增加CPU利用率。

9.14 假设一个请求调页系统具有一个平均访问和传输时间为20ms的分页磁盘。地址转换是通过在主存中的页表来进行的,每次内存访问时间为1μs。这样,每个通过页表进行的内存引用都要访问内存两次。为了提高性能,加入一个相关内存,当页表项在相关内存中时,可以减少内存引用的访问次数。

假设80%的访问发生在相关内存中,而且剩下中的10%(总量的2%)会导致页错误。内存的有效访问时间是多少? Answer:

有效访问时间= (0.8) × (1 μsec)+ (0.1) × (2 μsec) + (0.1) × (5002 μsec)

= 501.2 μsec = 0.5 millisec

9.15 颠簸的原因是什么?系统怎样检测颠簸?一旦系统检测到颠簸,系统怎样做来消除这个问题? Answer:

分配的页数少于进程所需的最小页数时发生颠簸,并迫使它不断地页错误。该系统可通过对比多道程序的程度来估计CPU利用率的程度,以此来检测颠簸。降低多道程序的程度可以消除颠簸。 第十章

10.3 一个提供强制锁,而非使用由用户决定的咨询锁的进程有何优点和缺点? Answer:

在许多情况下,单独的程序可能愿意容忍同时访问一个文件,而不需要获得锁,从而确保文件的相互排斥。其他程序结构也可以确保相互排斥,如内存锁;或其他同步的形式。在这种情况下,强制锁将限制访问文件的灵活性,也可能增加与访问文件相关的开销。

10.7举一个应用程序的例子,它能够受益于操作系统支持的随机存取,以建立索引的档案。 答:一个应用程序,它维持的一个数据库的条目可以受益于这种一种支持:举个列子, 如果某程序是维护一个学生数据库,则访问的数据库不能被任何预先确定的访问模式模拟,这种获得记录是随机的,而且该记录的定位,如果作业系统是提供某种形式的树为基础的指数,将会更有效。 第十一章

11.2使用FAT链合作区块的档案来进行变化相联系的分配有哪些优势? 答:它的优势是,在访问块是储存在中间的文件时候,在FAT里跟踪指针可以决定它的位置,而不是访问所有个别区块中的档案顺序的方式找到指针的目标块。

通常情况下,大多数的FAT可缓存在存储器里 ,因此,指针可以通过记忆体确定,而不用通过磁盘块。

11.4有些档案系统允许磁盘存储将分配在不同级别的粒度。举例来说,一个文件系统可以分配4 KB的磁盘空间作为单一的一个4字节的块或8个512字节的块。我们如何能利用这种灵活性来提高性能?对自由空间管理做出哪些修改以支持这一功能?

答:此项计划将减少内部分裂。如果文件是5字节,然后可以分配4 KB的区块和两个毗连的512字节的块。除了维持一个位图的自由块,一个目前正在使用的区块内也将保持额外的状

态。当所有的分块成为空闲时候,该分配器将不得不审查这笔额外分配状态分块和凝聚的分块,以获取更大的块。 第十二章

12.2 假设一个错哦盘驱动器有5000个柱面,从0到4999,驱动器正在为柱面143的一个请求提供服务,且前面的一个服务请求是在柱面125.按FIFO顺序,即将到来的请求队列是 86,1470,913,1774,948,1509,1022,1750,130 从现在磁头位置开始,按照下面的磁盘调度算法,要满足队列中即将到来的请求要求磁头总的移动距离(按柱面数计)是多少? a. FCFS b. SSTF c. SCAN d. LOOK e. C-SCAN

【答】a. FCFS的调度是143 , 86 , 1470 , 913 , 1774 , 948 , 1509 , 1022 , 1750 , 130 。总寻求距离是7081 。

b. SSTF的调度是143 , 130 , 86 , 913 , 948 , 1022, 1470, 1509, 1750, 1774。总寻求距离是1745。

c. SCAN的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774 , 4999 , 130 , 86 。总寻求距离是9769 。

d. LOOK的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774, 130 , 86 。总寻求距离是3319 。

e. C-SCAN的调度是143 , 913 , 948 , 1022 , 1470 , 1509 , 1750 , 1774 , 4999 , 86 , 130 。总寻求距离是9813 。

f. C-LOOK的调度是143 , 913 , 948 , 1022 , 1470 , 1509 , 1750 , 1774 , 86 , 130 。总寻求距离是3363 。

12.8 一个RAID 1组织读取请求是否可以比RAID 0组织实现更好的性能(非冗余数据带)?如果是的话,如何操作?

【答】是的,一个RAID 1级组织在阅读要求方面可以取得更好的性能。当执行一个读操作,一个RAID 1级系统可以决定应访问哪两个副本,以满足要求。这种选择可能是基于磁盘头的当前位置,因此选择一个接近目标数据的磁盘头可以使性能得到优化。

12.10 对比达到一个RAID 5级的组织 与所取得的一个RAID 1级安排的吞吐量如下: a:在单一块上读取操作

b:在多个毗连区块读取操作

【答】

a)吞吐量的数额取决于在RAID系统里磁盘的数量。一个RAID 5由为每套的奇偶块的四张块

延长的5个磁盘所组成,它可能同时支持四到五次操作。一个RAID 1级,包括两个磁盘可以支持两个同步行动。当然,考虑到磁盘头的位置,RAID级别1有更大的灵活性的副本块可查阅,并可以提供性能优势。

b)RAID 5为访问多个毗连区块提供更大的带宽,因为邻近的区块可以同时访问。这种带宽的改善在RAID级别1中是不可能的。

12.15 硬盘驱动器的可靠性常常用平均无故障时间(MTBF)来描述。虽然称之为时间,但经常用设备小时来计算无故障时间。

a.如果一个大容量磁盘有1000个驱动器,每个的MTBF是750 000小时,一下哪个描述能最好地体现该大容量磁盘出错的概率?每千年一次,每百年一次,每十年一次,每年一次,每月一次,每周一次,每天一次,每小时一次,每分钟一次,还是每秒一次?

b.根据死亡统计资料,平均来说,20至21岁的美国人死亡的概率是千分之一。推断出MTBF是20年。把这个数据从小时换成年。用MTBF来解释这个20年的寿命,可以得到什么?

c.如果一个厂商宣称某种型号的设备有100万小时的MTBF。这对设备预期的寿命有什么影响?

答:a.750000的平均无故障时间除以1000,得到故障间隔为750,所以是每月一次。

b.根据小时来计算,人的平均无故障时间是8760(一年中的小时数)除以0.001,得到8760000的MTBF值。8760000小时约等于1000年。所以,对于一个与、预期寿命是20年的人来说,这并不能说明说明。

c.MTBF与设备的寿命无关。硬盘的一般设计寿命是5年。即使一个硬盘真的有100万年的MTBF,设备本身的寿命也达不到那么长时间。

本文来源:https://www.bwwdw.com/article/nk3p.html

Top