第四章文件系统习题Q1: 给出文件/etc/passwd的五种不同的路径名。
(提示:考虑目录项”.”和”…”。
)A:/etc/passwd/./etc/passwd/././etc/passwd/./././etc/passwd/etc/…/etc/passwd/etc/…/etc/…/etc/passwd/etc/…/etc/…/etc/…/etc/passwd/etc/…/etc/…/etc/…/etc/…/etc/passwdQ2:在Windows中,当用户双击资源管理器中列出的一个文件时,就会运行一个程序,并以这个文件作为参数。
操作系统要知道运行的是哪个程序,请给出两种不同的方法。
A:Windows使用文件扩展名。
每种文件扩展名对应一种文件类型和某些能处理这种类型的程序。
另一种方式时记住哪个程序创建了该文件,并运行那个程序。
Macintosh以这种方式工作。
Q3:在早期的UNIX系统中,可执行文件(a.out)以一个非常特別的魔数开始,这个数不是随机选择的。
这些文件都有文件头,后面是正文段和数据段。
为什么要为可执行文件挑选一个非常特别的魔数,而其他类型文件的第一个字反而有一个或多或少是随机选择的魔数?A:这些系统直接把程序载入内存,并且从word0(魔数)开始执行。
为了避免将header作为代码执行,魔数是一条branch指令,其目标地址正好在header之上。
按这种方法,就可能把二进制文件直接读取到新的进程地址空间,并且从0 开始运行。
Q4: 在UNIX中open系统调用绝对需要吗?如果没有会产生什么结果?A: open调用的目的是:把文件属性和磁盘地址表装入内存,便与后续调用的快速访问。
首先,如果没有open系统调用,每次读取文件都需要指定要打开的文件的名称。
系统将必须获取其i节点,虽然可以缓存它,但面临一个问题是何时将i节点写回磁盘。
可以在超时后写回磁盘,虽然这有点笨拙,但它可能起作用。
Q5:在支持顺序文件的系统中总有一个文件回绕操作,支持随机存取文件的系统是否也需要该操作?A:否。
如果要再次读取文件,只需随机访问字节0。
Q6:某一些操作系统提供系统调用rename给文件重命名,同样也可以通过把文件复制到新文件并删除原文件而实现文件重命名。
请问这两种方法有何不同?A:rename调用不会改变文件的创建时间和最后的修改时间,但是创建一个新的文件,其创建时间和最后的修改时间都会改为当前的系统时间。
另外,如果磁盘满,复制可能会失败。
Q7: 在有些系统中有可能把部分文件映射进内存中。
如此一来系统应该施加什么限制?这种部分映射如何实现?A:文件的映射部分必须以页边界开始,并且长度为整数页数。
每个映射的页面使用文件本身作为后备存储。
未映射的内存使用临时文件或分区作为后备存储。
Q8: 有一个简单操作系统只支持单一目录结构,但是允许该目录中有任意多个文件,且带有任意长度的名字。
这样可以模拟层次文件系统吗?如何进行?A:使用文件名,如/usr/ast/file。
虽然它看起来像一个层次化的路径名称,但它只是一个包含嵌入的斜杠的单一名称。
Q9: 在UNIX 和Windows 中通过使用一个特殊的系统调用把文件的“当前位置”指针移到指定字节,从而实现了随机访问。
请提出一个不使用该系统调用完成随机存取的替代方案。
A:一种方法是在读取系统调用中添加一个额外的参数,告诉你要读取哪个地址。
实际上,每次读取都有可能在文件中进行搜索。
该方案的缺点是(1)每个读取调用都含有额外参数,以及(2)要求用户跟踪文件指针在哪里。
Q10.考虑图4-8中的目录树,如果当前工作目录是/usr/jim,则相对路径名为…/ast/x的文件的绝对路径名是什么?A: …将搜索移动到/usr,所以…/ast就是/usr/ast。
因此…/ast/x与/usr/ast/x相同。
Q11: 正如书中所提到的,文件的连续分配会导致磁盘碎片,因为当一个文件的长度不等于块的整数倍时,文件中的最后一个磁盘块中的空间会浪费掉,请问这是内碎片还是外碎片?并将它与先前一章的有关讨论进行比较。
A:原答案:由于这些被浪费的空间在分配单元(文件)之间,而不是在它们内部,因此,这是外部碎片。
这类似于交换系统或者纯分段系统中出现的外部碎片。
网上有人说这个答案是错的,说应该是内部碎片,这里是混淆了内存的内部/外部碎片,和磁盘的内部/外部碎片的区别。
外部碎片和内部碎片的区别- CSDN博客一、在内存上(使用连续分配算法来管理分配内存时会产生)的外部碎片和内部碎片两个概念内存碎片分为:内部碎片和外部碎片【内部碎片】内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;内部碎片是处于(操作系统分配的用于装载某一进程的内存)区域内部或页面内部的存储块。
占有这些区域或页面的进程并不使用这个存储块。
而在进程占有这块存储块时,系统无法利用它。
直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
单道连续分配只有内部碎片。
多道固定连续分配既有内部碎片,又有外部碎片。
【外部碎片】外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
外部碎片是处于任何两个已分配区域或页面之间的空闲存储块。
这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
产生外部碎片的一种情况:举个例子,在内存上,分配三个操作系统分配的用于装载进程的内存区域A、B和C。
假设,三个内存区域都是相连的。
故而三个***内存区域***不会产生外部碎片。
现在假设B对应的进程执行完毕了操作系统随即收回了B,这个时候A和C中间就有一块空闲区域了。
多道可变连续分配只有外部碎片。
总之,在内存上,外部碎片是位于任何两个操作系统分配的用于装载进程的内存区域或页面之间的空闲区域,内部碎片是位于一个操作系统分配的用于装载进程的内存区域或页面内部的空闲区域。
二、在磁盘上的外部碎片和内部碎片两个概念很多人会把文件碎片跟簇的概念混淆起来。
其实对windows系统来说硬盘上的每个分区都是由最小存储单元——簇组成的。
就好比,一面墙是由一块块转头组成的。
簇的大小可以在分区格式化时由用户定义,一般是数个KB大小,比如是8KB。
假设我有一个文件,大小是80MB零1KB(1MB=1000KB),换算一下就是80,001KB,其中的80,000KB正好占用10000个簇,**剩下的那1KB,不得以也要占用1个簇,但这最后一个簇还有7KB的空间没用上了。
而且这个未完全使用的簇,其他文件也不允许继续使用。
**这就造成了一点点的空间浪费。
不少人就把这被浪费了的7KB空间就是磁盘上的内部碎片。
而磁盘上的外部碎片(即平时所说的磁盘碎片,磁盘碎片清理工具只能清理磁盘上的外部碎片,清除不了磁盘上的内部碎片,除非改变文件系统的分配单位即簇的大小,使之是一个文件大小的整数倍。
)实际上指的是一个文件占据那些簇是不连续的,就相当于文件被分割开来,分别存放在相互间断的几段簇上。
文件被分割为几个部分就是几个碎片。
所以碎片其实是指文件碎片,可以理解成,文件破碎成片之意。
而且文件碎片之间有时候顺序还是错乱的。
比如说,有时候“文件里靠后的碎片”所占的簇段在硬盘上反而会排在“文件里位置靠前的碎片”簇段的前面。
这样一来,一个文件就会以比较混乱的顺序存放在硬盘上。
显然计算机读取连续的有序的数据肯定要比不连续的乱序的数据来得快。
所以整理碎片可能会大幅度提高系统性能。
举个例子,起初硬盘某个分区是空白的,写入三个文件A、B和C。
显然这个时候,三个文件都是顺次占用三个簇段(这个说明存放文件所用的文件系统应该是类似FAT这样的文件系统,具体参看注释1)。
故而三个文件不会产生碎片。
现在假设你删除了B文件,这个时候A和C中间就有一块空闲簇段了。
此时还是不存在文件碎片的,因为每个文件各自占据的簇段都是连续的,没有文件被分割。
而如果现在需要写入一个文件D,而且D 比刚刚删去的文件B要大。
那么A和C之间的空闲簇段就不足以放入D,再假设C后面的空闲簇段也不足以放下D,这个时候D就势必要分割成两块存放,一块放在A和C之间,另一块放在C之后。
这样一来,文件碎片就产生了。
D文件有两个文件碎片。
磁盘碎片整理要做的工作就是:把C文件前移,一直移到紧接A文件的簇段上去。
这样A和C之间就没有空闲簇了,C之后剩下的将是一段完整的空闲簇段,足以放下文件D。
这样D就也占据一段连续的簇段。
碎片也就消除了。
Q12:描述一个损坏的数据块对以下三种形式的文件的影响:(a)连续的,(b)链表的,(c)索引的。
A: 如果数据块在相邻的分配系统中被破坏,那么只有该块受到影响;文件块的其余部分可以被读取。
在链表分配的情况下,不能读取损坏的块;而且,从该损坏的块开始的所有块的位置数据也会丢失。
在索引分配的情况下,只有受损坏的数据块受到影响。
Q13: 一种在磁盘上连续分配并且可以避免空洞的方案是,每次删除一个文件后就紧缩一下磁盘。
由于所有的文件都是连续的,复制文件时需要寻道和旋转延迟以便读取文件,然后全速传送。
在写回文件时要做同样的工作。
假设寻道时间为5ms,旋转延迟为4ms,传送速率为8MB/s,而文件平均长度是8 KB,把一个文件读入内存并写回到磁盘上的一个新位置需要多长时间?运用这些数宇,计算紧缩16GB 磁盘的一半需要多长时间?A:传送一个文件需要的时间= 8KB / (8MB/s) = 0.9765625 ms把一个文件读入内存并写回到磁盘上的一个新位置所需时间= (5+4+0.9765625)x 2 = 19.953125 ms紧缩16GB磁盘的一半,需要传送8GB/8KB=2^20个文件,所需时间2M x 19.953125 = 20922368 ms = 20922.368 sQ14:基于前一个问题的答案,紧缩磁盘有什么作用吗?A:因为在系统删除的所有文件都会以碎片的形式存在磁盘中,当碎片到达一定量磁盘就不能再装文件了,必须进行外部清理,所以紧缩磁盘会释放更多的存储空间,但在每个文件删除后都压缩磁盘不是一个好办法。
Q15:某些数字消费设备需要存储数据,比如存放文件等。
给出一个现代设备的名字,该设备需要文件存储,并且适合连续的分配空间。
A:数码相机按顺序记录一系列照片,存储在某种非易失性存储媒介(例如,闪存)上。
当照相机复位时,该媒介被清空。
然后,按顺序依次记录一张照片,直到存储满,然后上载到硬盘上。
对于这种应用,相机内部文件的连续文件系统时最理想。
Q16:考虑图4-13中的i节点。
如果它含有用4个字节表示的10个直接地址,而且所有的磁盘块大小是1024KB,那么文件最大可能有多大?A: i节点包含10个直接磁盘地址还有一个间接块的地址,这个间接块里存放着额外的磁盘地址,额外的磁盘地址有1024KB/4B=218个,假设文件占用了所有可能的磁盘块,共计218+10=262154块,每块1MB,文件最大可能有262154MB。