因此只有一个相距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/3
11.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+∑∑BjHi
11.6对基于频率的替换算法(见图11.12),定义Fnew,Fmiddle和Fold分别为包含新区,中间区和的高速缓存片段,显然Fnew+Fmiddle+Fold=1.如果有
a.Fold=1—Fnew
b.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=8
11.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/s
VDT1KB/s
系统中的最大合计传送率为多少?
每次只有一个驱动设备能在选择通道上得到服务,
因此,最大速率=800+800+2×6.6+2×1.2+10×1=1625.6KB/s
11.13当条带大小比I/O大小小时,磁盘条带化显然可以提高数据传送率。
同样,相对于单个的大磁盘,由于RAID0可以并行处理多个I/O请求,显然它可以提高性能。
但是,相对于后一种情况,磁盘条带化还有必要存在吗?
也就是说,相对于没有条带化的磁盘阵列,磁盘条带化可以提高I/O请求速度的性能吗?
这取决于I/O请求类型。
对于一种极端情况,如每次只有一个进程有一个大I/O请求时,磁盘条带化可以提高性能。
但如果有许多进程有许多小的I/O请求时,相对于RADI0没有条带化的磁盘阵列可以提高性能。
第12章文件管理
复习题:
12.1、域和记录有什么不同?
答:
域(field)是基本数据单位。
一个域包含一个值。
记录(record)是一组相关的域的集合,它可以看做是应用程序的一个单元。
12.2、文件和数据库有什么不同?
答:
文件(file)是一组相似记录的集合,它被用户和应用程序看做是一个实体,并可以通过名字访问。
数据库(database)是一组相关的数据集合,它的本质特征是数据元素间存在着明确的关系,并且可供不同的应用程序使用。
12.3、什么是文件管理系统?
答:
文件管理系统是一组系统软件,为使用文件的用户和应用程序提供服务。
12.4、选择文件组织时的重要原则是什么?
答:
访问快速,易于修改,节约存储空间,维护简单,可靠性。
12.5、列出并简单定义五种文件组织。
答:
堆是最简单的文件组织形式。
数据按它们到达的顺序被采集,每个记录由一串数据组成。
顺序文件是最常用的文件组织形式。
在这类文件中,每个记录都使用一种固定的格式。
所有记录都具有相同的长度,并且由相同数目、长度固定的域按特定的顺序组成。
由于每个域的长度和位置已知,因此只需要保存各个域的值,每个域的域名和长度是该文件结构的属性。
索引顺序文件保留了顺序文件的关键特征:
记录按照关键域的顺序组织起来。
但它还增加了两个特征:
用于支持随机访问的文件索引和溢出文件。
索引提供了快速接近目标记录的查找能力。
溢出文件类似于顺序文件中使用的日志文件,但是溢出文件中的记录可以根据它前面记录的指针进行定位。
索引文件:
只能通过索引来访问记录。
其结果是对记录的放置位置不再有限制,只要至少有一个索引的指针指向这条记录即可。
此外,还可以使用长度可变的记录。
直接文件或散列文件:
直接文件使用基于关键字的散列。
12.6、为什么在索引顺序文件中查找一个记录的平均搜索时间小于在顺序文件中的平均搜索时间?
答:
在顺序文件中,查找一个记录是按顺序检测每一个记录直到有一个包含符合条件的关键域值的记录被找到。
索引顺序文件提供一个执行最小穷举搜索的索引结构。
12.7、对目录执行的典型操作有哪些?
答:
搜索,创建文件,删除文件,显示目录,修改目录。
12.8、路径名和工作目录有什么关系?
答:
路径名是由一系列从根目录或主目录向下到各个分支,最后直到该文件的路径中的目录名和最后到达的文件名组成。
工作目录是一个这样的目录,它是含有用户正在使用的当前目录的树形结构。
12.9、可以授予或拒绝的某个特定用户对某个特定文件的访问权限通常有哪些?
答:
无(none),知道(knowledge),执行(execution),读(reading),追加(appending),更新(updating),改变保护(changingprotection),删除(deletion)。
12.10、列出并简单定义三种组块方式。
答:
固定组块(fixedblocking):
使用固定长度的记录,并且若干条完整的记录被保存在一个块中。
在每个块的末尾可能会有一些未使用的空间,称为内部碎片。
可变长度跨越式组块(variable-lengthspannedblocking):
使用长度可变的记录,并且紧缩到块中,使得块中没有未使用空间。
因此,某些记录可能会跨越两个块,通过一个指向后继块的指针连接。
可变长度非跨越式组块(variable-lengthunspannedblocking):
使用可变长度的记录,但并不采用跨越的方式。
如果下一条记录比块中剩余的未使用空间大,则无法使用这一部分,因此在大多数块中都会有未使用的空间。
12.11、列出并简单定义三种文件分配方法。
答:
连续分配是指在创建文件时,给文件分配一组连续的块。
链式分配基于单个的块,链中的每一块都包含指向下一块的指针。
索引分配:
每个文件在文件分配表中有一个一级索引,分配给该文件的每个分区在索引中都有一个表项。
习题:
12.1、定义:
B=块大小R=记录大小P=块指针大小F=组块因子,即一个块中期望的记录数。
对图12.6中描述的三种组块方法分别给出关于F的公式。
答案:
固定组块:
最大整数
当一个可变长度记录被保存到组块中的时候,组块中会增加一个标记着记录边界的数据,用来标识记录。
当跨越式记录桥联块边界的时候,需要用到一些关联着后继组块的结构。
一种可能情况是在每个记录前加一个长度标识。
另一种可能情况是在两个记录之间加一个特殊的区分标识。
因此,我们假设每一个记录需要一个标识,并且标识大小约等于块指针大小。
对于跨越式组块,指向它下一个组块的大小为P的块指针被包含在每一个组块中,所以跨越式记录可以很容易地被重定位。
由此可知:
可变组块跨越式:
由于不采用跨越的方式,可变长度非跨越式组块会导致平均R/2的空间浪费,但不需要指向后继组块的指针:
12.2、一种避免预分配中的浪费和缺乏邻近性问题的方案是,分配区的大小随着文件的增长而增加。
例如,开始时,分区的大小为一块,在以后每次分配时,分区的大小翻倍。
考虑一个有n条记录的文件,组块因子为F,假设一个简单的一级索引用做一个文件分配表。
a.给出文件分配表中入口数的上限(用关于F和n的函数表示)。
b.在任何时候,已分配的文件空间中,未被使用的空间的最大量是多少?
答案:
a.
b.未被使用的空间总是小于已分配文件空间。
12.3、当数据
a.很少修改并且以随机顺序频繁地访问时,
b.频繁地修改并且相对频繁地访问文件整体时,
c.频繁地修改并以随机顺序频繁地访问时,
从访问速度、存储空间的使用和易于更新(添加/删除/修改)这几方面考虑,为了达到最大效率,你将选择哪种文件组织?
答案:
a.索引文件
b.索引顺序文件
c.索引文件或散列文件
12.4、目录可以当做一种只能通过受限方式访问的“特殊文件”实现,也可以当做普通文件实现。
这两种方式分别有哪些优点和缺点?
答案:
很明显地,如果操作系统把目录当做一种通过受限方式访问的“特殊文件”实现,安全性更容易被加强。
把目录当做一种通过受限方式访问的普通文件实现使得操作系统更统一地管理对象,更容易地创建和管理用户目录。
12.5、一些操作系统具有一个树结构的文件系统,但是把树的深度限制到某个比较小的级数上。
这种限制对用户有什么影响?
它是如何简化文件系统的设计的(如果能简化)?
答案:
这是一个少见的专题。
如果操作系统构造一个文件系统以便子目录被允许包含在一个主目录底下,那么就很少或没有额外的逻辑被要求允许包含任意深度的子目录。
限制子目录树的深度造成对用户组织文件空间不必要地限制。
12.6、考虑一个层次文件系统,空闲的磁盘空间保留在一个空闲空间表中。
a.假设指向空闲空间的指针丢失了。
该系统可以重构空闲空间表吗?
b.给出一种方案,确保即使出现了一次存储失败,指针也不会丢失。
答案:
a.可以重构。
使用的方法与许多LISP的垃圾收集系统用的方法非常相似。
首先,我们将建立一种数据结构,代表磁盘的每一块,并且这个磁盘支持一种文件系统。
在这里某种映射是比较合适的。
然后,我们从这个文件系统的根目录开始,通过文件系统的递归下降寻找,我们标记每一块已被文件使用的磁盘块。
当完成的时候,我们将为没有被使用的磁盘块建立一个空闲列表。
这实质上就是UNIX命令fsck的功能。
b.在磁盘上一个或多个地方备份空闲空间列表指针。
无论何时列表的开端发生变化,备份指针也同样更新。
这样将会保证即使发生了存储器或者磁盘块错误,你也总是能找到一个有效的指针值。
12.7、考虑由一个索引节点所表示的UNIX文件的组织(见图12.13).假设有12个直接块指针,在每个索引节点中有一个一级、二级和三级间接指针。
此外,假设系统块大小和磁盘扇面大小都是8K。
如果磁盘块指针是32位,其中8位用于标识物理磁盘,24位用于标识物理块,那么
a.该系统支持的最大文件大小是多少?
b.该系统支持的最大文件系统分区是多少?
c.假设主存中除了文件索引节点外没有其他息,访问在位置12,423,956中的字节需要多少次磁盘访问?
答案:
a.找出每一个块中根据指针大小来划分块大小的磁盘块指针的数目:
8K/4=2Kpointersperblock
I-Node所支持的最大文件大小是:
12+2K+(2K×2K)+(2K×2K×2K)
直接寻址一级间接寻址二级间接寻址三级间接寻址
12+2K+4M+8Gblocks
将以上数据乘以块大小(8K),得到:
96KB+16MB+32GB+64TB
这就是该系统支持的最大文件大小。
b.每一个分区中都有24位用于识别物理块,由此可知:
224×8K=16M×8K=128GB
c.由问题(a)中所得的信息可知,直接块只覆盖了第一个96KB区域,而一级间接块覆盖了接下来的16MB区域。
被请求文件的位置是13MB而其偏移很明显地随机落在了一级间接块中。
因此会有2次磁盘存储访问。
一次是为了一级间接块,一次是为了包含被请求数据的块。