山东大学操作系统课后作业8-13章

第八章

8.1 解释内部碎片和外部碎片的区别?

内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间。内部碎片是处于(操作系统分配的用于装载某一进程的内存)区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。外部碎片是处于任何两个已分配区域或页面之间的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

 

8.5 对下列问题,试比较连续内存分配方案、纯分段方案、纯分页方案中的内存组织方法:

a.外部碎片b.内部碎片c.跨进程共享代码的能力

连续内存分配会产生外部碎片,不会产生外部碎片。因为地址空间是被连续分配的,当旧进程结束,新进程初始化的时候,洞会扩大。连续内存分配也不允许进程共享代码,因为一个进程的虚拟内存段是不被允许闯入不连续的段的。

纯分段方案也会产生外部碎片,因为在物理内存中,一个进程的段是被连续放置的,以及当死进程的段被新进程的段所替代时,碎片也将会产生。然而,段式分配可以使进程共享代码;比如,两个不同的进程可以共享一个代码段,但是有不同的数据段。

纯分页方案不会产生外部碎片,但会产生内部碎片。进程可以在页中被分配,以及如果一页没有被完全利用,它就会产生内部碎片并且会产生一个相当的空间浪费。纯分页方案也允许进程共享代码。

 

8.6在一个分页系统中,为什么一个进程不被允许进入它所不拥有的内存?操作系统怎么能允许访问其他的内存?应不应该?为什么?

地址在分页系统上是一个逻辑页号和一个偏移量。在逻辑页号的基础上产生一个物理页号,物理页通过页表被找到。因为操作系统控制这张表的内容,只有在这些物理页被分配到进程中时,它可以限制一个进程的进入。一个进程想要分配一个它所不拥有的页是不可能的,因为这一页在页表中不存在。

为了允许这样的进入,操作系统只简单的需要 准许入口给无进程内存被加到进程页表中。当两个或多个进程需要交换数据时,这是十分有用的。它们只是读和写相同的物理地址(可能在多样的物理地址中)。在进程内通信时,这是十分高效的。

 

8.9考虑一个分页系统在内存中存储着一张页表。

a.如果内存的查询需要200毫秒,那么一个分页内存的查询需要多长时间?

b.如果我们加上相关联的寄存器,75%的页表查询可以在相关联的寄存器中找到,那么有效的查询时间是多少?(假设如果入口存在的话,在相关的寄存器中找到页表入口不花费时间)

a.400毫秒:200毫秒进入内存读取页表,200毫秒进入内存中的字        

b.有效进入时间=0.75*200毫秒+0.25*400毫秒=250毫秒

 

8.12 假设有下面的段表:

  段           基地址         长度

  0             219            600

 1             2300           14

 2             90             100

 3             1327           580

 4             1952           96

下面逻辑地址的物理地址是多少?

0430      649

110       2310

2500      590

3400      1727

4122      2074

 

8.13页表分页的目的是什么?

在某些情况下,分页的页表可以变得足够大,可以简化内存分配问题(确保全部可以分配固定大小的网页,而不是可变大小的块),确保当前未使用的部分页表可以交换。

 

 

第九章

9.2考虑按需调页所需的硬件支持。

支持按需调页的硬件与分页和交换的硬件一样。需要页表和次级存储器。

页表能够通过有效-无效位或保护位的特定值,将条目设为无效。TLB(转换表缓冲区)可快速起到该作用。

次级存储器用来保存不在内存中的页。通常为快速磁盘。

 

9.3什么是写时复制?在什么情况下这种特点有效?支持此功能的硬件是什么?

当两个进程正在访问同一页面。如果任何一个进程对页面进行写操作,那么就创建一个共享页的副本。。

硬件要求:在每个内存访问的页表需要协商,以检查是否该页表是写保护。如果确实是写保护,陷阱会出现,操作系统可以解决这个问题。

 

9.4某个计算机给它的用户提供了2^32的虚拟内存空间,计算机有214B的物理内存,虚拟内存使用页面大小为4094B的分页机制实现。一个用户进程产生虚拟地址11123456,现在说明一下系统怎么样建立相应的物理地址,区分一下软件操作和硬件操作

该虚拟地址的二进制形式是 0001 0001 0001 0010 0011 01000101 0110。由于页大小为2^12,页表大小为2^20,因此,低12位的“0100 0101 0110 ”被用来替换页(page),而前20位“00010001 0001 0010 0011”被用来替换页表(page table)。

 

 

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.15 颠簸的原因是什么?系统怎样检测颠簸?一旦系统检测到颠簸,系统怎样做来消除这个问题?

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

 

第十章

10.2 打开文件表被用以保持当前打开文件的信息,操作系统应该为每个用户保持一个单独的表吗?或者只是保持一个包含当前所有用户访问文件的引用的表?如果两个不同程序或用户访问同样的文件,在打开文件表中应包含单独的条目吗?

保持一个中央的打开文件表,操作系统可以执行下列操作,否则不可执行:假设一个当前有一个或一个以上进程访问的文件。如果该文件被删除,那么应该直到所有正在访问文件的进程关闭它时,它才能从磁盘上删除。只要有正在访问文件的进程数目的集中核算,该检查就可以执行。另一方面,如果两个进程正在访问该文件,则需要保持两个单独的状态来跟踪当前位置,其中部分文件正被两个进程访问。这就要求操作系统为两个进程保持单独的条目。

第十一章

11.5讨论文件系统的性能优化会给计算机崩溃后保持系统的一致性带来什么困难?

由于延迟更新数据和元数据可能出现最主要的困难。在希望同样的数据可能被更新时候更新可能会推迟,或更新的数据可能是临时性的,而且在不久后可能会被删除。但是,如果系统崩溃,则不必致力于延迟更新,文件系统的一致都将被破坏。

 

11.6 设想一个在磁盘上的文件系统的逻辑块和物理块的大小都为512B。假设每个文件的信息已经在内存中,对3种分配方法(连续分配,链接分配和索引分配),分别回答下面的问题:

A,逻辑地址到物理地址的映射在系统中怎么样进行的?(对于索引分配,假设文件总是小于512块)

B,假设现在处在逻辑块10(最后访问的块是块10),限制想访问逻辑块4,那么必须从磁盘上读多少个物理块)

答:设想Z是开始文件的地址(块数) ,  a.毗连。分裂逻辑地址由512的X和Y所产生的份额和其余的分别。 1:将X加入到Z获得物理块号码。 Y是进入该区块的位移。 2.:1 b.联系。分裂逻辑地址由511的X和Y所产生的份额和其余的分别。 1.:找出联系名单(将X + 1块) 。 Y + 1是到最后物理块的位移 2.:4 c.收录。分裂的逻辑地址由512的X和Y所产生的份额和其余的分别。  1.:获得该指数块到内存中。物理块地址载于该指数在所在地块10, Y是到理想的物理块的位移。 2.:2

 

11.10解释为什么记录元数据更新能确保文件系统能从崩溃中恢复过来?

对于档案系统崩溃后的重恢复,它必须是一致的或必须能够取得一致。因此,我们必须证明,测井数据在不断更新的档案系统中是一致的或有能力达成一致的状态。对于一个不一致的文件系统,元数据必须不完全是书面的或在文件系统的数据结构是错误的。测井数据的写入的是一个连续的记录。

 

第十二章

先来先服务FCFS:公平,简单,每个进程的请求都能依次得到处理。没有对寻道优化,平均寻道时间长。

最短时间优先调度算法SSTF:要求访问的磁道是当前磁头所在的磁道最近,每次寻道时间最短。可能导致一些请求无限期推延。

电梯调度算法SCAN:不仅考虑当前磁道的距离,优先考虑在磁道前进方向的最短时间,排除磁头在盘面上的往复运动。电梯原理。

N-SCAN:是SCAN的改良。磁头改变方向时,以到达请求服务的最短时间。对中间请求服务更有利。

C-SCAN:磁头单项移动。消除N-SCAN对两端请求的不公平。

 

12.1 除了FCFS,没有其他的磁盘调度算法是真正公平的(可能会出现饥饿)。

a、说明为什么这个断言是真。

b、描述一个方法,修改像SCAN这样的算法以确保公平性。

c、说明为什么在分时系统中公平性是一个重要的目标。

d、给出三个以上的例子,在这些情况下操作系统在服务I/O请求时做到“不公平”很重要。

 

a. 只有FCFS算法对每一个I/O请求都是严格按照先到先得的顺序来执行的,所有的请求都会得到执行,不会有任何请求能够越过前一个请求,提前得到执行。

b. 可采用类似于“老化”的方法来提高长时间没得到执行的进程的优先级。添加一个关联位,记录请求的磁盘位置,但是这个磁盘位置能够随时间的增加而改变。起初这个记录是真实的位置值,但是一段时间后,这个值就会随着时间的增加而减少,从而使其“看起来”(并不是真实的)更接近磁头的位置。这样便能有效避免饥饿。

c. 为了防止超长的响应时间。在分时系统中,十分强调响应速度,也就是说等待请求得到的时间越短越好,那么为了提高每个请求的响应速度,应该尽量做到公平对待每个请求,让每个请求的等待时间更加平均。所以公平性是分时系统的一个重要目标。

d. 分页调度和置换应优先于用户的请求。

内核初始化的I / O(如文件系统元数据的写入),优先于用户I / O。

如果内核支持实时进程的优先级,那么这些进程的I / O请求会优先得到执行。

 

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

FCFS的调度是143 , 86 , 1470 , 913 , 1774 , 948 , 1509 , 1022 , 1750 , 130 。总寻求距离是(143-86)+ (1470-86) + (1470-913) + (1774-913)+ (1774-948) + (1509-948) + (1509-1022) + (1750-1022) + (1750-130) = 7081 。

SSTF的调度是143 , 130 , 86 , 913 , 948 , 1022, 1470, 1509, 1750, 1774。总寻求距离是(143-86) + (1774-86) = 1745。

SCAN的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774 , 4999 , 130 , 86 。总寻求距离是(4999-143) + (4999-86)  = 9769 。

LOOK的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774, 130 , 86 。总寻求距离是(1774 -143) + (1774-86) = 3319 。

C-SCAN的调度是143 , 913 , 948 , 1022 , 1470 , 1509 , 1750 , 1774 , 4999 , 0,86 , 130 。总寻求距离是(4999-143)+(4999-0)+ (130-0) = 9985 。

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

 

12.15 试讨论扇区保留和扇区滑动各自的优点和缺点

sparing扇区会增加额外的换道时间和旋转延迟,可能使响应时间增加8ms。sparing扇区对将来的读盘有较小的影响,但在重映射的时候,需要读写所有道上的数据来跳过坏块。

 

第十三章

13.3考虑单用户PC机上的下列I/O操作:

(1)图形用户界面下使用鼠标

(2)在多任务操作系统下的磁带驱动器(假设没有设备预分配)

(3)包含用户文件的磁盘驱动器

(4)使用存储器映射I/O,直接和总线相连的图形卡

在针对这些I/O,你会在设计操作系统中使用缓冲技术,假脱机技术,Cache技术,或者它们的组合吗?实现时使用轮询检测I/O还是中断驱动I/O?为什么?

答:(1)在鼠标移动时,如果有高优先级的操作产生,为了记录鼠标活动的情况,必须使用缓冲技术,另外,假脱机技术和Caching技术不是很必要,而应采用中断驱动I/O方式。

(2)由于磁带驱动器和目标或源I/O设备间的吞吐量不同,必须采用缓冲技术;为了能对储存在磁带上的数据进行快速访问,必须采用Caching技术;当有多个用户需要对磁带进行读或写的时候,假脱机技术也是必须采用的;为了取得最好的性能,应该采用中断驱动I/O方式。

(3)为了能使数据从用户作业空间传送到磁盘或从磁盘传送到用户作业空间,必须采用缓冲技术;同样道理,也必须采用Caching技术;由于磁盘是属于共享设备,故没必要采用假脱机技术;最好采用中断驱动I/O方式。

(4)为了便于多幅图形的存取及提高性能,缓冲技术是可以采用的,特别是在显示当前一幅图形时又要取得下一幅图形时,应采用双缓冲技术;基于存储器映射及直接和总线相连的图形卡是快速和共享设备,所以没必要采用假脱机技术和Caching技术;轮询I/O和中断I/O只对输入和I/O是否完成的检测有用,而对于采用存储器映射的设备不必用到上述两种I/O方式。

 

13.5在处理中断的时候,涉及的不同性能开销是什么?

当发生中断时,当前执行的进程是中断,其状态存储在适当的进程控制块中。 然后调度中断服务程序来处理中断。 完成处理中断后,恢复进程的状态并恢复进程。因此,性能开销包括保存和恢复进程状态的成本以及刷新指令流水线的成本以及在重新启动进程时将指令恢复到管道中。

 


  • 23
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值