第十一章I/O管理和磁盘调度复习题11.1列出并简单定义执行I/O的三种技术。·可编程I/O:处理器代表进程给I/O模块发送给一个I/O命令,该进程进入忙等待,等待操作的完成,然后才可以继续执行。·中断驱动I/O:处理器代表进程向I/O模块发送一个I/O命令,然后继续执行后续指令,当I/O模块完成工作后,处理器被该模块中断。如果该进程不需要等待I/O完成,则后续指令可以仍是该进程中的指令,否则,该进程在这个中断上被挂起,处理器执行其他工作。·直接存储器访问(DMA):一个DMA模块控制主存和I/O模块之间的数据交换。为传送一块数据,处理器给DMA模块发送请求,只有当整个数据块传送完成后,处理器才被中断。11.2逻辑I/O和设备I/O有什么区别?·逻辑I/O:逻辑I/O模块把设备当作一个逻辑资源来处理,它并不关心实际控制设备的细节。逻辑I/O模块代表用户进程管理的一般I/O功能,允许它们根据设备标识符以及诸如打开、关闭、读、写之类的简单命令与设备打交道。·设备I/O:请求的操作和数据(缓冲的数据、记录等)被转换成适当的I/O指令序列、通道命令和控制器命令。可以使用缓冲技术,以提高使用率。11.3面向块的设备和面向流的设备有什么区别?请举例说明。面向块的设备将信息保存在块中,块的大小通常是固定的,传输过程中一次传送一块。通常可以通过块号访问数据。磁盘和磁带都是面向块的设备。面向流的设备以字节流的方式输入输出数据,其末使用块结构。终端、打印机通信端口、鼠标和其他指示设备以及大多数非辅存的其他设备,都属于面向流的设备。11.4为什么希望用双缓冲区而不是单缓冲区来提高I/O的性能?双缓冲允许两个操作并行处理,而不是依次处理。典型的,在一个进程往一个缓冲区中传送数据(从这个缓冲区中取数据)的同时,操作系统正在清空(或者填充)另一个缓冲区。11.5在磁盘读或写时有哪些延迟因素?寻道时间,旋转延迟,传送时间11.6简单定义图11.7中描述的磁盘调度策略。FIFO:按照先来先服务的顺序处理队列中的项目。SSTF:选择使磁头臂从当前位置开始移动最少的磁盘I/O请求。SCAN:磁头臂仅仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上最后一个磁道,或者在这个方向上没有其他请求为止。接着反转服务方向,沿相反方向扫描,同样按顺序完成所有请求。C-SCAN:类似于SCAN,11.7简单定义图7层RAID。0:非冗余1:被镜像;每个磁盘都有一个包含相同数据的镜像磁盘。2:通过汉明码实现冗余;对每个数据磁盘中的相应都计算一个错误校正码,并且这个码位保存在多个奇偶校验磁盘中相应的文件。3:交错位奇偶校验;类似于第二层,不同之处在于RAID3为所有数据磁盘中同一位置的位的集合计算一个简单的奇偶校验位,而不是错误校正码。4:交错块分布奇偶校验;对每个数据磁盘中相应的条带计算一个逐位奇偶。5:交错块分布奇偶校验;类似于第四层,但把奇偶校验条带分布在所有磁盘中。6:交错块双重分布奇偶校验;两种不同的奇偶校验计算保存在不同磁盘的不同块中。11.8典型的磁盘扇区大小是多少?512比特习题11.1考虑一个程序访问一个I/O设备,并比较无缓冲的I/O和使用缓冲区的I/O。说明使用缓冲区最多可以减少2倍的运行时间。如果计算的时间正好等于它的I/O时间(它是最佳环境),操作者和外围设备同时运行。如果单独运行,只要花费他们的一半时间,设C是整个程序的计算时间,T为所要求总的I/O时间,因而寄存器最好的运行时间是max(C,T),不需要寄存器的运行时间是C+T,显然((C+T)/2)≤max(C,T)≤(C+T).11.2把习题11.1的结论推广到访问n个设备的程序中。最佳比是(n+1)﹕n11.3使用与表11.2类似的方式,分析下列磁道请求:27,129,110,186,147,41,10,64,120。假设磁头最初定位在磁道100处,并且沿着磁道号减小的方向移动。假设磁头沿着磁道增大的方向移动,请给出同样的分析。FIFOSSTFSCANC-SCAN下一个被访问的磁道27129110186147411064120平均寻道长度横跨的磁道数7310219763910631545661.8下一个被访问的磁道11012012914718664412710平均寻道长度横跨的磁道数10109183912223141729.1下一个被访问的磁道64412710110120129147186平均寻道长度横跨的磁道数36231417100109183929.6下一个被访问的磁道64412710186147129120110平均寻道长度横跨的磁道数36231417176391891038如果磁头沿着增大的方向,只有SCAN和C-SCAN的结果有变化SCANC-SCAN下一个被访问的磁道11012012914718664412710平均寻道长度横跨的磁道数10109183912223141729.1下一个被访问的磁道11012012914718610274164平均寻道长度横跨的磁道数10109183917617142335.111.4考虑一个磁盘,有N个磁道,磁道号从0到(N-1),并且假设请求的扇区随机地均匀分布在磁盘上。现在要计算一次寻道平均跨越的磁道数。a.首先,计算当磁头当前位于磁道t时,寻道长度为j的可能性。提示:这是一个关于确定所有组合数目的问题,所有磁道位置作为寻道目标的可能性是相等的。b.接下来计算寻道长度为K的可能性。提示:这包括所有移动了K个磁道的可能性之和。c.使用下面计算期望值得公式,计算一次寻道平均跨越的磁道数目:N-1E[X]=∑i∑Pr[x=i]i=0d.说明档N比较大时,一次寻道平均跨越的磁道数接近N/3.(a)设P[j/t]表示位于磁道t,寻道长度为j的概率,知随机访问一个任何一个磁道的可能性为相等为1/N,因此我们有P[j/t]=1/N,t=j-1或者t=N-j;P[j/t]=2/N,j-1tN-j.前一种情况下,当前磁道接近于磁盘的两端。因此只有一个相距j长度的磁道,故为2/N。(b)令P[k]=∑P[k/t]*P[t]=1/N∑P[k/t],由(a)可知,取值1/N的有2k个磁道,取值为2/N有(N-k)个,所以有P[k]=(2k/N+2(N-k)/N)/N=2(N-k)/N*N(c)E[k]=∑k*P[k]=∑2k(N-k)/N*N=(N*N-1)/3N(d)当N比较大时,从上文可以看出一次寻道平均跨越磁道数接近N/311.5下面的公式适用于高速缓冲存储器和磁盘高速缓存:Ts=Tc+M×Td请把这个公式推广到N级存储器结构,而不是仅仅2级。定义:Ai=从i级存储器找到信息的时间;Hi=消息在第i级存储器并且没有在更高级存储器的概率;Bi=从第(i+1)级向第i级传送一块数据的时间。假设缓存在1级存储上,主存在2级存储上,如此下去,形成一个N级存储结构,因此有Ts=∑AiHi若消息在M1层,可以立即被读,如果在M2中,不在M1中,那么这块数据从M2传到M1中再读。因此A2=B1+A1进而有A3=B2+A2=B1+B2+A1即有Ai=A1+∑Bj所以Ts=T1∑Hi+∑∑BjHi因为∑Hi=1最后可得Ts=T1+∑∑BjHi11.6对基于频率的替换算法(见图11.12),定义Fnew,Fmiddle和Fold分别为包含新区,中间区和的高速缓存片段,显然Fnew+Fmiddle+Fold=1.如果有a.Fold=1—Fnewb.Fold=1/(高速缓存大小)请分别描述该策略。a.图11.11的中间区是空的,因此这种策略退化为图11.11a的策略。b.老区由一块组成,并且我们有LRU替换策略。11.7对于一个有9个磁道的磁带,磁带速度为120英寸每秒,磁带密度为1600线位/英寸,请问它的传送率为多少?密度可表示为1600线位每英寸,因此传送速率为1600×1200=192000线位每秒。11.8假设有一个2400英寸的磁带盘,记录间的间隙为0.6英寸,这个间隙是磁带在读操作之间的停止;在间隙期间磁带速度成线性增加或减小,磁带的其他与习题11.7相同。磁带上的数据按物理记录组织,每个物理记录包含固定数目的由用户定义的单元,称为逻辑记录。a.在磁带上读取分装在10个物理记录中的120个逻辑记录需要多少时间?b.同样。如果是分装在30个物理记录中,则需要多少时间?c.对于上述每种分块方案,整个磁带分别可以保存多少个逻辑记录?d.对于上述每种分块方案,有效的总传速率分别是多少?e.磁带的容量是多少?假设每个记录由30块组成。b.我们先定义从一个物理块加间隙到了另一块的读取时间物理块的大小=(30个逻辑记录每物理记录)×(120比特每逻辑记录)=3600字节物理块的长度=3600字节/(1600比特/英寸)=2.35英寸间隙的长度=0.6英寸传输一个块加间隙的传输时间=2.25/120+0.6/60=0.02875秒磁带上块的数目=(2400×12)/(2.25+0.6)=10105物理块因此,读取时间为10105×0.02875=291秒c.如果分装在30个物理记录中,磁带包含10105个物理记录和30×10105=303150个逻辑记录。d.分装在30个物理记录中的有效传输数率:R=(303150×120)/291=125010字节/秒e.容量=303150×120=36378000字节11.9如果磁盘中扇区大小固定为每扇区为512字节,并且每磁道96个磁区,每面110个磁道,一共有8个可用的面,对于习题11.8(b),计算存储这些逻辑记录需要多少磁盘空间(扇区、磁道和面)。忽略文件头记录和磁道索引,并假设记录不能跨越两个扇区。每个扇区能容纳4个记录,所需扇区数=303150/4=75788所需磁道数=75788/96=790所需面数=790/110=811.10考虑习题11.9所描述的磁盘系统,假设该磁盘的旋转速度为360r/m。一个处理器使用中断驱动I/O从磁盘中读取一个扇区,每个字节一个中断。如果处理每个中断需要2.5us,处理器花费在处理I/O上的时间占多少百分比(忽略寻道时间)?每扇区512字节,每字节一个中断,所以每扇区512个中断。中断总时间=2.5×512=1280us。每个扇区读取时间=60s/m×360r/m×96扇区/磁道=1736us处理器花费在处理I/O上的时间百分比=100×1280/1736=74%11.11如果使用DMA策略并假设每个扇区一个中断,重做习题11.10。使用DMA策略,中断总时间=2.5us处理器花费在处理I/O上的时间百分比=100×2.5/1736=0.14%11.12一个32位计算机有两个选择通道和一个多路通道,每个选择通道支持两个磁盘和两个磁带部件。多路通道有两个行式打印机、两个卡片阅读机,并连接着10个VDT终端。假设有以下的传送率:磁盘驱动器800KB/s磁带驱动器200KB/s行式打印机6.6KB/s卡片阅读机1.2KB/sVDT1KB/s系统中的最大合计传送率为多少?每次只有一个驱动设备能在选择通道上得到服务,因此,最大速率=800+800+2×6.6+2×1.2+10×1=1625.6KB/s11.13当条带大小比I/O大小小时,磁盘条带化显然可以提高数据传送率。同样,相对于单个的大磁盘,由于RAID0可以并行处理多个I/O请求,显然它可以提高性能。但是,相对于后一种情况,磁盘条带化还有必要存在吗?也就是说,相对于没有条带化的磁盘阵列,磁盘条带化可以提高I/O请求速度的性能吗?这取决于I/O请求类型。对于一种极端情况,如每次只有一个进程有一个大I/O请求时,磁盘条带化可以提高性能。但如果有许多进程有许多小的I/O请求时,相对于RADI0没有条带化的磁盘阵列可以提高性能。第12章文件管理复习题:12.1、域和记录有什么不同?答:域(field)是基本数据单位。一个域包含一个值。记录(record)是一组相关的域的集合,它可以看做是应用程序的一个单元。12.2、文件和数