《现代操作系统(中文第四版)》课后习题答案 第四章 文件系统

题目略。
如有错误答案,请各位评论指出,多谢多谢

1、使用 . 或 …切换文件路径

/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/passwd

2、Windows方法是使用文件扩展名。每个扩展名对应一个文件类型和一些处理该类型的程序。另一种方法是记住哪个程序创建了文件并运行该程序。麦金托什就是这样工作的。

3、这些系统直接将程序加载到内存中,并在单词0处开始执行,这就是幻数。为了避免试图以代码的形式执行头,幻数是一条分支指令,目标地址就在头的上方。通过这种方式,可以将二进制文件直接读取到新进程的地址空间中,并在0处运行它,而不必知道头有多大。

4、首先,如果没有打开,则每次读取时都需要指定要打开的文件的名称。然后,系统将不得不为它获取i节点,尽管可以缓存。快速出现的一个问题是何时将i节点刷新回磁盘。然而,它可能会超时。这可能有点笨拙,但可能会奏效。

5、如果要再次读取文件,只需随机访问字节0。

6、对。重命名调用不会更改创建时间或上次修改时间,但创建新文件会使其获取当前时间作为创建时间和上次修改时间。另外,如果磁盘快满了,复制可能会失败。

7、文件的映射部分必须从页面边界开始,并且是页面长度的整数。每个映射页使用文件本身作为后备存储。未映射的内存使用暂存文件或分区作为备份存储。

8、使用文件名,如/usr/ast/file。虽然它看起来像一个分层路径名,但实际上它只是一个包含嵌入斜杠的单一名称。

9、一种方法是向读取系统调用添加一个额外的参数,该参数告诉您要从哪个广告中读取内容。实际上,每次读取都有可能在文件中进行查找。该方案的缺点是:(1)在ev ery read调用中有一个额外的参数;(2)要求用户跟踪文件点er的位置。

10、dotdot组件将search移动到/usr,因此…/ast将其放入/usr/ast。因此…/ast/x与/usr/ast/x相同。

11、由于浪费的存储在分配单元(文件)之间,而不是在它们内部,所以这是外部碎片。它与交换系统或使用纯分割的系统发生的主存储器外部碎片完全相似。

12、如果一个数据块在一个连续的分配系统中损坏,那么只有这个块会受到影响;文件的其余块可以被读取。在链接分配的情况下,无法读取损坏的块;而且,从该损坏块开始的所有块的位置数据都将丢失。在索引分配的情况下,只影响损坏的数据块。

13、启动传输需要9毫秒。要以80MB/秒的传输速率读取2 13字节,需要0.0977毫秒,总共需要9.0977毫秒。再写回去需要9.0977毫秒。因此,复制文件需要18.1954毫秒。要压缩16 GB磁盘的一半,需要复制8 GB的存储空间,即2 20个文件。在每个文件18.1954毫秒时,这需要19079.25秒,即5.3小时。显然,每次删除文件后压缩磁盘不是一个好主意。

14、如果做得好,是的。压缩时,应组织每个文件,使其所有块都是连续的,以便快速访问。Windows有一个对磁盘进行碎片整理和重新组织的程序。鼓励用户定期运行它以提高系统性能。但考虑到需要多长时间,每月运行一次可能是一个很好的频率。

15、数码照相机在非易失性存储介质(如闪存)上按顺序记录一些照片。当相机复位时,介质被清空。此后,图像按顺序一次记录一张,直到介质满为止,此时它们被上载到硬盘。对于此应用程序,相机内部(例如,在图片存储介质上)的连续文件系统是理想的。

16、间接块可以容纳128个磁盘地址。与10个直接磁盘地址一起,最大文件有138个块。因为每个块都是1 KB,所以最大的文件是138 KB。

17、对于随机访问,表/索引和连续都是合适的,而链接分配并不是因为它通常需要对给定记录进行多个磁盘读取。

18、由于文件大小变化很大,连续分配将效率低下,需要重新分配磁盘空间,因为随着文件大小的增加,可用块的大小和压缩将随着文件大小的缩小而增加。链接和表/索引分配都将是有效的;在这两者之间,表/索引分配对于随机访问场景将更加有效。

19、必须有一种方法来表示地址块指针保存数据,而不是指针。如果在属性中的某个地方有一点剩余,则可以使用它。这将为数据留下全部九个指针。如果指针都是K字节,则存储的文件可能长达9K字节。如果at属性中没有剩余任何位,则第一个磁盘地址可以保存一个无效地址,以将后面的字节标记为数据而不是指针。在这种情况下,最大文件为8kbytes。

20、Elinor是对的。在表中同时拥有两个I节点副本是一种灾难,除非两者都是只读的。最坏的情况是两个都同时更新。当I节点被写回磁盘时,最后一个被写的节点将擦除另一个节点所做的更改,磁盘块将丢失。

21、给定文件的所有硬链接目录项都指向单个i节点。对于软链接,将为软链接创建一个新的i节点,并且该i node基本上指向被链接的原始文件。

22、给定文件的所有硬链接目录项都指向单个i节点。对于软链接,将为软链接创建一个新的i节点,并且该i node基本上指向被链接的原始文件。

23、磁盘上的块数=4 TB/4 KB=2^30。因此,每个块广告地址可以是32位(4字节),最接近的2次方。因此,每个块可以存储4kb/4=1024个地址。

24、位图需要B位。自由列表需要df位。如果d f<b,则空闲列表需要较少的位。或者,如果f/b<1/d,则空闲列表较短,其中f/b是空闲块的分数。对于16位磁盘地址,如果可用磁盘的6%或更少,则可用列表较短。

25、位图的开头如下:

(a) After writing file B: 1111 1111 1111 0000
(b) After deleting file A: 1000 0001 1111 0000
(c) After writing file C: 1111 1111 1111 1100
(d) After deleting file B: 1111 1110 0000 1100

26、这根本不是一个严重的问题。修复很简单,只需要时间,恢复算法是列出所有文件中的所有块,并将补码作为新的空闲列表。在Unix中,这可以通过扫描所有i节点来完成。在FAT文件系统中,由于没有空闲列表,因此无法发生问题。但即使有,恢复脂肪需要做的就是扫描脂肪寻找免费的条目。

27、奥利的论文可能没有他希望的那样可靠。备份程序可以传递当前打开以供写入的文件,因为该文件中的数据状态可能不确定。

28、它们必须跟踪磁盘上文件中最后一次转储的时间。在每次转储时,都会向该文件追加一个条目。在转储时,读取文件并记录最后一个条目的时间。从那时起更改的任何文件都会被转储。

29、在(a)和(b)中,21不会被标记。在(c)中,没有变化。在(d)中,21不会被标记。

30、许多Unix文件都很短。如果整个文件与i节点位于同一块中,则只需要一个磁盘访问来读取文件,而不是像目前的情况那样需要两个磁盘访问。即使对于较长的文件,也会有好处,因为只需要更少的磁盘访问。

31、这不应该发生,但由于某个地方可能发生错误。这意味着某些块出现在两个文件中,并且在空闲列表中出现两次。修复错误的第一步是从空闲列表中删除两个副本。接下来,必须获取一个空闲块,并复制病态块的内容。最后,应该更改其中一个文件中出现的块,以引用新获取的块副本。此时,系统再次保持一致。

32、所需时间为h+40×(1−h)。基址图只是一条直线。

33、在这种情况下,最好使用直写缓存,因为它将数据写入硬盘,同时更新缓存。这将确保更新的文件始终位于外部硬盘上,即使用户在磁盘同步完成之前意外删除了硬盘。

34、块预读技术在使用前按顺序读取块,以提高性能。在这个应用程序中,记录可能不会按顺序访问,因为用户可以在给定的时刻输入任何学生ID。因此,预读技术在这种情况下不会非常有用。

35、分配给F1的区块有:22、19、15、17、21。
分配给f2的区块有:16、23、14、18、20。

36、在15000转/分时,磁盘需要4毫秒才能运行一次。读取k字节的平均访问时间(毫秒)为6+2+(k/1048776)×4。对于1 kb、2 kb和4 kb的块,访问时间分别约为6.0039 msec、6.0078 msec和6.0156 msec(几乎没有任何不同)。这些速率分别约为170.556 kb/秒、340.890 kb/秒和680.896 kb/秒。

37、如果所有文件都是1KB,那么每个4KB块将包含一个文件和3KB的浪费空间。不允许在一个块中放置两个文件,因为用于跟踪数据的单位是块,而不是半块。这导致75%的空间浪费。在实践中,每个文件系统都有大文件和许多小文件,而且这些文件更有效地使用磁盘。例如,如果空间效率为32769/36864(约89%),32769字节的文件将使用9个磁盘块进行存储。

38、间接块可以容纳1024个地址。在10个直接地址中,总共有1034个地址。由于每个指向一个4kb的磁盘块,所以最大的文件是4235264字节。

39、它将所有文件长度的总和限制为不大于磁盘。这不是一个非常严重的限制。如果文件总的比磁盘大,那么就没有地方将它们全部存储在磁盘上。

40、i节点可容纳10个指针。单个间接块包含1024个指针。双间接块适用于 1024^2 个指针。三个间接块适用于 1024^3个指针。加上这些,我们得到的最大文件大小为1074791434块,大约是16.06 GB。

41、需要读取以下磁盘:

directory for /
i-node for /usr
directory for /usr
i-node for /usr/ast
directory for /usr/ast
i-node for /usr/ast/courses
directory for /usr/ast/courses
i-node for /usr/ast/courses/os
directory for /usr/ast/courses/os
i-node for /usr/ast/courses/os/handout.t

总共需要读取10个磁盘。

42、一些专业人士如下。首先,没有在未使用的i节点上浪费磁盘空间。第二,不可能耗尽i节点。第三,由于I节点和初始数据可以在一次操作中读取,因此需要较少的磁盘移动。一些缺点如下。首先,目录条目现在需要32位磁盘地址而不是16位i节点号。第二,整个磁盘甚至将用于不包含数据的文件(空文件、设备文件)。第三,由于需要读取每个i节点的整个块,并且i节点将分散在整个磁盘上,因此文件系统集成检查将变慢。第四,由于i节点导致性能混乱,其大小经过精心设计以适合块大小的文件将不再适合块大小。

  • 25
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值