现代操作系统 第四章 文件系统 习题答案

  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方式是使用文件扩展名。每个扩展名对应一个文件类型和一些处理该类型的程序。另一种方法是记住哪个程序创建了文件并运行该程序。 Macintosh以这种方式工作。

  3. 这些系统将程序直接加载到内存中,并开始在字0处执行,这是魔数。为避免尝试将头作为代码执行,魔数是一条BRANCH指令,其目标地址恰好位于头的上方。通过这种方式,可以将二进制文件直接读入新进程的地址空间并在0处运行,甚至不知道头有多大。

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

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

  6. 是的。重命名调用不会更改创建时间或上次修改的时间,但创建新文件会使其获取当前时间作为创建时间和上次修改时间。此外,如果磁盘几乎已满,则副本可能会失败。

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

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

  9. 一种方法是向读取系统调用中添加一个额外的参数,该参数指示要读取的地址。实际上,每次读取都有可能在文件中进行查找。这种方案的缺点是:(1)在每次读取调用中都有一个额外的参数;(2)要求用户跟踪文件指针的位置。

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

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

    扫描二维码关注公众号,回复: 5401400 查看本文章
  12. 如果一个数据块在一个连续的分配系统中损坏,那么只有这个数据块受到影响;文件的其余数据块可以被读取。在链接分配的情况下,无法读取损坏的块;而且,从该损坏块开始的所有块的位置数据都将丢失。在索引分配的情况下,只影响损坏的数据块。

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

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

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

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

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

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

  19. 必须有一种方法来表示地址块指针保存数据,而不是指针。如果属性中的某处有一点遗留,则可以使用它。这留下了所有九个数据指针。如果指针各为k个字节,则存储的文件最长可达9k字节。如果在属性中没有遗留任何位,则第一个磁盘地址可以保存无效地址,以将后续字节标记为数据而不是指针。在这种情况下,最大文件是8k字节。

  20. 埃莉诺是对的。同时在表中具有两个i节点副本是一种灾难,除非两者都是只读的。最糟糕的情况是两者同时更新。当i节点写回磁盘时,最后写入的任何一个将擦除另一个所做的更改,磁盘块将丢失。

  21. 硬链接不需要任何额外的磁盘空间,只需要i-node中的计数器来跟踪有多少磁盘空间。符号链接需要空间来存储指向的文件的名称。符号链接可以指向其他计算机上的文件,甚至可以通过Internet。硬链接仅限于指向其自己分区中的文件。

  22. 给定文件的硬链接的所有目录条目指向单个i节点。在软链接的情况下,为软链接创建新的i节点,并且该inode实质上指向链接的原始文件。

  23. 磁盘上的块数= 4 TB / 4 KB = 230.因此,每个块地址可以是32位(4字节),最接近2的幂数.因此,每个块可以存储4 KB / 4 = 1024个地址。

  24. 位图需要B位。空闲列表需要DF位。如果DF <B,则空闲列表需要更少的位。或者,如果F / B <1 / D,则空闲列表更短,其中F / B是空闲块的分数。对于16位磁盘地址,如果磁盘的6%或更少是空闲的,则空闲列表会更短。

  25. 位图的开头看起来像:
    (a)写文件B后:1111 1111 1111 0000
    (b)删除文件A后:1000 0001 1111 0000
    (c)写文件C后:1111 1111 1111 1100
    (d)删除文件B后:1111 1110 0000 1100

  26. 这根本不是一个严重的问题。恢复很简单;这需要时间。恢复算法是列出所有文件中的所有块,并将补码作为新的空闲列表。在UNIX中,这可以通过扫描所有i节点来完成。在FAT文件系统中,由于没有空闲列表,因此无法解决问题。但即使有,所有必须要做的就是恢复它是扫描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. 转速为15,000转时,磁盘需要4毫秒才能转一圈。读取k个字节的平均访问时间(以毫秒为单位)为6+2*(k / 1,048,576)*4。对于1 KB,2 KB和4 KB的块,访问时间分别为6.0039毫秒,6.0078毫秒和6.0156毫秒(几乎没有任何差异)。它们分别给出约170.556KB / sec,340.890KB / sec和680.896KB / sec的速率。

  37. 如果所有文件都是1 KB,则每个4 KB块将包含一个文件和3 KB的浪费空间。不允许尝试将两个文件放在一个块中,因为用于跟踪数据的单位是块,而不是半块。这导致75%的空间浪费。实际上,每个文件系统都有大文件和许多小文件,这些文件更有效地使用磁盘。例如,一个32,769字节的文件将使用9个磁盘块进行存储,空间效率为32,769 / 36,864,约为89%。

  38. 间接块可以容纳1024个地址。添加到10个直接地址,共有1034个地址。由于每个指向4 KB磁盘块,因此最大的文件是4,235,264字节

  39. 它将所有文件长度的总和限制为不大于磁盘。这不是一个非常严重的约束。如果文件总体上大于磁盘,则没有地方可以将所有文件存储在磁盘上。

  40. i节点有10个指针。单个间接块保存1024个指针。双间接块适用于10242指针。三重间接块适用于10243指针。添加这些,我们得到的最大文件大小为1,074,791,434个块,大约是16.06 GB。

  41. 需要以下磁盘读取:
    在这里插入图片描述
    总共需要10次磁盘读取。

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

猜你喜欢

转载自blog.csdn.net/dldldl1994/article/details/86516118